2012-12-25 20 views
1

我需要從一個表中獲取值以及與每個值匹配的行數。更清楚地,來自SQLite中2個表的值

  • 沒有與列IDTEXT
  • 表A中有一個與用於表AIDTEXTA_IDFRESH

一些示例性數據的另一表B:

+---+-------------+ 
|ID | TEXT  | 
+---+-------------+ 
| 1 | "Fruit"  | 
| 2 | "Vegetable" | 
+---+-------------+ 

還有一些表格的數據B

+---+----------+----+-------+ 
|ID | TEXT |A_ID| FRESH | 
+---+----------+----+-------+ 
| 1 | "Banana" | 1 | Yes | 
| 2 | "Carrot" | 2 | Yes | 
| 3 | "Apple" | 1 | No | 
+---+----------+----+-------+ 

如可以看到的,A_ID包含用於表A那個的B每行中的特定TEXT值匹配的行的鍵。

所以我需要的是,我需要得到的數據是這樣的:

1 | Fruit | 1 
2 | Vegetable | 1 

所以在上面的結果,第一列是表AID,第二列是的TEXTA和最終(第三)列是在表B計數的行,其中所述柱FRESH具有「是」值。

我已經能夠得到與此類似的值,但總行數作爲第三列,而不僅僅是「新鮮」行。

我嘗試這樣做:

SELECT A.ID, A.TEXT, count(B.FRESH) FROM A JOIN B ON A.ID = B.A_ID; 

這:

SELECT A.ID, A.TEXT, B.FRESH FROM A JOIN B ON A.ID = B.A_ID; 

但他們並沒有得到預期的結果。

因爲我是SQL的一個新手,我堅持這一點。那麼請幫忙?我使用的SQLite3

回答

2
SELECT 
    A.ID, 
    A.TEXT, 
    (SELECT COUNT(1) 
      FROM B 
      WHERE B.A_ID=A.ID 
       AND B.FRESH ='YES') AS FRESH 
FROM A; 
+0

給我叫一個錯誤:「錯誤:沒有這樣的列:鮮」 – Roshnal

+1

只刪除了'FRESH ='部分解決了這個問題。現在完美工作...非常感謝:)編輯你的答案,我會選擇它是正確的。 – Roshnal

+0

@羅希納爾哦對不起,應該使用'AS FRESH'將列名作爲'FRESH':) – Nalaka526