0

目的の結果(この場合は7(製品テーブルの一致する行数))を取得するには、いくつかの助けが必要です。

代わりに取得しているのは、LEFTJOINで返された行数に基づいたカウントの7行です。

SELECT count(p.id) as theCount 
            FROM products p 
            left join tablea a on p.id = a.productId 
            left join tableb b on p.id = b.productId 
            WHERE (a.col = 'val' or b.col = 'val')
group by p.id

p.idでグループ化しない場合、28行が返されます。これは、LEFTJOINからのすべての行です。

簡単なことは知っていますが、理解できません。

ありがとう。

4

2 に答える 2

3

select count(distinct p.id)、 多分?2 つの異なるテーブルからプルしているため、存在と存在のミスマッシュが発生します(p.id, a.col, b.col)(xxx, null, yyy)(xxx, yyy, null)

于 2012-11-04T05:20:06.830 に答える
2

のカウントだけが必要な場合は、1 対多の関係に参加しないでくださいproducts

フィルター条件をWHERE句に入れます。

SELECT count(*) as theCount 
        FROM products p 
        WHERE p.id IN (
             SELECT a.productId
             FROM tablea a
             WHERE a.productId = p.id AND a.col = 'val'

             UNION

             SELECT b.productId
             FROM tableb b
             WHERE b.productId = p.id AND b.col = 'val'
        )
于 2012-11-04T05:13:24.663 に答える