2

SO に関する質問の 1 つに、次のクエリで回答しました。

SELECT s.address
FROM shop s 
JOIN visit v ON s.shopid = v.shopid 
JOIN customer c ON v.customerid = c.customerid 
WHERE c.cname = 'John' 
GROUP BY 
s.address
, c.customerid 
HAVING COUNT(*) > 1

これは問題なく動作しますが、クエリの基準を満たす特定のショップの John's が 2 つ以上ある場合は重複した住所が返されるため、回答を変更しました。

SELECT DISTINCT a.address 
FROM 
(
SELECT s.address
FROM shop s 
JOIN visit v ON s.shopid = v.shopid 
JOIN customer c ON v.customerid = c.customerid 
WHERE c.cname = 'John' 
GROUP BY 
s.address
, c.customerid 
HAVING COUNT(*) > 1
) a

ここで私の質問は、最初に集計式を評価し、次に単一のクエリで選択する前にグループ化を達成することは可能ですか?

4

1 に答える 1