[英]mysql get non existing results with additional conditions
使用mysql和php,
我有兩個表,我是法國人,所以表名聽起來可能很奇怪,但我想將它們保留為原始名稱,以避免測試時出錯。
“樹狀”(表示類別)
“ arborescence_domaine”(表示類別的子域)
該系統的目的是要能夠很好地控制
取決於兩個方面的子域:類別和郵政編碼。
只是在我深入探討問題之前向您解釋,
對於同一個類別,我們說“汽車”,
郵政編碼37000的子域將是“超級跑車”
但對於郵政編碼93000,同一類別的子域將是例如“ the93supercars”
因此,“ arborescence_domaine”包含以下字段:
id-arborescence_id-DEP-域-狀態
其中“ DEP”是郵政編碼,“ domaine”是子域,“ statut”是布爾值,用於確定是否激活了子域。
現在,有趣的部分開始了……
我想做的是如果可能的話,在1個單個sql查詢中執行此操作。 (否則,我知道成千上萬個實現相同目標的php方法)。
我現在想要的是從給定的類別數組和給定的郵政編碼中獲取所有子域。 如果未設置子域,則該子域在“ arborescence_domaine”表中不存在。
但我想要這樣的結果:
cat_id域DEP
3輛37
14防盜37
20 www空
26服務潛水員37
28 www空
37 www空
43 www空
3467 www空
這意味着,如果未設置子域,則它可能會返回默認的“ www”值。
現在沒有郵政編碼,我在一小時前就學會了如何做:
這是一個工作請求(顯示上述數組的請求)
SELECT a.id作為cat_id,IFNULL(d.domaine,'www')作為domaine,d.DEP
從樹突
d.arborescence_id = a.id上的左聯接arborescence_domaine d
a.id in(3,14,20,26,28,37,3467,43);
但是現在用郵政編碼我沒有得到預期的結果:
以下要求:
SELECT a.id作為cat_id,IFNULL(d.domaine,'www')作為domaine,d.DEP
從樹突
d.arborescence_id = a.id上的左聯接arborescence_domaine d
其中a.id in(3,14,20,26,28,37,3467,43) 和d.DEP = '37' ;
給出以下結果:
cat_id域DEP
3輛37
14防盜37
26服務潛水員37
好吧,“在數據庫中不存在子域”已經消失了。
現在的問題是:是否有可能顯示所示的第一個結果,但使用郵政編碼過濾?
(我以為我知道了,但是隨后出現了一個新問題……一如既往……)
d.DEP
應該在您的ON子句中:
SELECT a.id as cat_id, IFNULL(d.domaine, 'www') as domaine, d.DEP
FROM arborescence a
LEFT JOIN arborescence_domaine d
ON d.arborescence_id=a.id AND d.DEP='37'AND d.status
WHERE a.id in(3,14,20,26,28,37,3467,43);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.