0

3 つのテーブルを結合しようとしています- e、、wpl

l としての場所:name | id | workplace_id

wp としての職場:name | id

e としての従業員:name | id | location_id | coordinator

私がしたい: WORKPLACE に COORDINATOR (coordinator=1) が任意の LOCATION にある場合、その WORKPLACE のすべての LOCATION を取得する

これは機能していないようです-コーディネーター= 1を持つ職場のすべての場所を返していますが、職場の場所のいずれかにコーディネーター= 1がある場合、職場のすべての場所が必要です。

select distinct w.* 
from workplaces as w, 
    (select distinct l.* 
     from locations as l, employees as e 
     where e.location_id = l.id and e.coordinator = 1) as tmp 
where tmp.workplace_id = w.id
4

2 に答える 2

-1
select distinct l.* 
from locations as l, workplaces as w, 
    (select distinct l.* 
     from locations as l, employees as e 
     where e.location_id = l.id and e.coordinator = 1) as tmp 
where l.workplace_id = w.id
and tmp.workplace_id = w.id

それはあなたが探しているものですか?

于 2012-06-08T22:54:00.233 に答える
-1

まず第一に、サブクエリは本当に悪い考えです。結合を行うには、内部結合、左結合、または右結合のいずれかを使用する必要があります。次に、次のようなものを使用できます。

SELECT l.* FROM locations as l
INNER JOIN workplaces w ON l.workplace_id = w.id
INNER JOIN employees e ON l.id = e.location_id
WHERE e.coordinator = 1;
于 2012-06-08T22:56:49.023 に答える