2013-12-17 50 views
0

我有3個表應該結合左加入,這到目前爲止確定。但現在我只想要一些信息,例如只有性別是男性,這也沒關係。還顯示性別爲空的所有行,這也沒關係。但現在我只想顯示允許的行。例如,誰被允許在例如不要顯示ID爲1的行。那就是問題所在。例如。MySQL左加入3個表的政策不允許用戶ID

table1 
id | tab2_id | gender_id | bla 

table2 
id | name | bla | blub 

table3 
id | tabl_id | gender_id | allowed 
1 | 1  | 1   | 1 
2 | 2  | 1   | 2 

查詢至今:

Select table1. gender_id, table1.bla, table2.name, table2.bla 
From table1 
Left Join table2 ON table1.tab2_id = table2.id 
LEFT Join table3 on table1.tab2_id = table3.tab1_id 
Where table1.gender_id = '1' 
OR table1.gender_id IS NULL 
AND table3.allowed <> 1 

我希望這得到,而其一個例子清楚。主要問題是允許的問題。我可以選擇性別1中的所有行,但我不想選擇這些未從一些允許用戶在表3 Pollicy

回答

0

嘗試這種方式

SELECT table1.gender_id, table1.bla, table2.name, table2.bla 
    FROM table1 LEFT JOIN table2 
    ON table1.tab2_id = table2.id LEFT JOIN table3 
    ON table1.tab2_id = table3.tab1_id 
    AND table3.allowed <> 1 
WHERE table1.gender_id = 1 
    OR table1.gender_id IS NULL 
+0

嗯,不知道引號,但。 – Strawberry

+0

Thx Peterm, 與此同時,我再次嘗試並找到解決方案。我必須寫OR作爲最後的條件,並且結果是可以的。 Peterm我會測試你的建議。 thx到目前爲止解決了我。 – Sunghost

+0

你好peterm,我現在有時間進一步工作,並有一個新的問題。我已經在tabl3不僅允許,而且爲每個條目與user_id,field_name和允許的行。第4頁,國家,4和下一個第4行,性別,1爲同一用戶每個字段的一個條目。如果我現在想讓所有具有性別2和國家/地區53的用戶這沒有work.i擴展您的代碼和tabl3.allowed = 4和tabl3.gender = 2和tabl3.country = 53。作爲左加入。但我也有用戶誰擁有相同的國家和性別,但允許是1而不是two.do你有這個解決方案。我嘗試了一些,但都沒有工作 – Sunghost