20

2 つのテーブルがあり、作業を節約するために 1 つのクエリを実行しようとしています。

Table 1: id, category id, colour
Table 2: category id, category name

私は彼らに参加したいので、id, category id, category name, colour

次に、「赤い」アイテムが選択されないように制限したい ( WHERE colour != "red") 次に、各カテゴリのレコード数をカウントしたい ( COUNT(id) GROUP BY (category id)。

努力しています:

SELECT COUNT(table1.id), table1.category_id, table2.category_name 
FROM table1 
INNER JOIN table2 ON table1.category_id=table2.category_id 
WHERE table1.colour != "red"

しかし、それはうまくいきません。多くのバリエーションを試しましたが、上記のクエリを試しても結果が得られません。

4

3 に答える 3

37

GROUP BY複数のレコードが返されるように使用する必要があります。

SELECT  COUNT(*) TotalCount, 
        b.category_id, 
        b.category_name 
FROM    table1 a
        INNER JOIN table2 b
            ON a.category_id = b.category_id 
WHERE   a.colour <> 'red'
GROUP   BY b.category_id, b.category_name
于 2013-07-19T16:49:27.247 に答える
8
SELECT COUNT(*), table1.category_id, table2.category_name 
FROM table1 
INNER JOIN table2 ON table1.category_id=table2.category_id 
WHERE table1.colour <> 'red'
GROUP BY table1.category_id, table2.category_name 
于 2013-07-19T16:50:21.170 に答える