1

1つのテーブルから値を取得し、各値に一致する行の数を取得する必要があります。より明確に、

  • IDとテーブルAがありますTEXT
  • 列、、、およびを持つ別のテーブルBIDがありTEXTますA_IDFRESH

テーブルのいくつかのサンプルデータA

+---+-------------+
|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テーブルの行のキーが含まれています。ATEXTB

したがって、必要なのは、次のようなデータを取得する必要があるということです。

1 | Fruit | 1
2 | Vegetable | 1

したがって、上記の結果では、最初の列はIDof tableAであり、2番目の列はTEXTof tableAであり、最後の(3番目の)列は、の値が「Yes」であるテーブルの行数ですB FRESH

これと同様の値を取得できましたが、「Fresh」行だけでなく、合計行数を3列目にしています。

私はこれを試しました:

 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を使用しています

4

1 に答える 1

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;
于 2012-12-25T17:47:06.927 に答える