3 つのリンクされたテーブルに対して MySQL で実行する必要があるクエリがあります。ネストされたクエリを使用して怠惰な方法で実行できますが、単一のクエリで実行する方法がわかりません。
テーブルは次のとおりです。
Area:-
: id (int)
: name (string)
Consultant:-
:id (int)
:active (1/0)
ConsArea:-
: areaID (int)
: consultantID (int)
すべてのエリアを (変数を使用して) ループ処理して、すべてのエリア$area
をリストし、各エリアに対して「アクティブな」コンサルタントの数を示す必要があります。アクティブなコンサルタントが関連付けられていない場合はゼロ)
クエリの最初の部分 (コンサルタントがアクティブであるかどうかに関係なく) で実行できます。
SELECT areas.name AS aname, COUNT(consAreas.areaID) AS cct
FROM areas LEFT OUTER JOIN consAreas
ON consAreas.areaID = areas.id
WHERE areas.areaID = $area
GROUP BY areas.id
ORDER BY areas.name
..しかし、コンサルタントがアクティブであるという条件を含めたい場合、正しい結合を行うことができません。アクティブなコンサルタントが 0 人を超える領域のみがリストされますが、すべての領域が必要です。
SELECT areas.name AS aname, COUNT(consAreas.area) AS cct
FROM areas LEFT OUTER JOIN consAreas
ON consAreas.area = areas.id
**JOIN consultants ON consultants.id = consAreas.cons**
WHERE areas.areaID = $area
**AND consultants.active = 1**
GROUP BY areas.id
ORDER BY areas.name
誰か助けて?