2016-05-05 3 views
1

Ich möchte zwei Tabellen mit linken Join unter mehreren Bedingungen verbinden.Wie kann man zwei Tabellen mit linken Joins mit mehreren Bedingungen verknüpfen?

Ich habe zwei STS_CD Flags AC oder .

Ich möchte Daten erhalten, wo STS_CD='AC', aber ich habe es auf AC oder .

Meine Suche ist:

SELECT `bldr`.`id`  AS `bldr_ID`, 
     `bldr`.`sts_cd` AS `bldr_STS_CD`, 
     bldr.shrt_nm 
FROM `bldr` 
     LEFT JOIN `bldr_img` 
       ON `bldr`.`id` = `bldr_img`.`prnt_id` 
       AND `bldr_img`.`img_cat_cd` = 'LG' 
       AND `bldr`.`sts_cd` = 'AC' 
       AND `bldr_img`.`sts_cd` = 'AC' 
ORDER BY `bldr`.`id` 

Wie kann ich das tun?

enter image description here

+0

Der Join macht keinen Sinn, weil Sie keine Spalte aus der 'bldr_img' Tabelle auswählen. Alles, was Sie auf diese Weise erreichen können, besteht darin, einige Zeilen aus der 'bldr'-Tabelle zu duplizieren. –

Antwort

2

Das ist Ihre Abfrage:

SELECT bldr.ID as bldr_ID, bldr.STS_CD AS bldr_STS_CD,bldr.SHRT_NM 
FROM bldr LEFT JOIN 
    bldr_img 
    ON bldr.ID = bldr_img.PRNT_ID AND 
     bldr_img.IMG_CAT_CD = 'LG' AND 
     bldr.STS_CD = 'AC' AND 
     bldr_img.STS_CD = 'AC' 
ORDER BY bldr.ID; 

Wenn LEFT JOIN Verwendung Bedingungen auf der Sekunden Tabelle in der ON Klausel gehen sollte. Die Bedingungen auf der ersten Tabelle sollten in der WHERE (außer für die JOIN Bedingung, natürlich) sein. So versuchen Sie das:

SELECT bldr.ID as bldr_ID, bldr.STS_CD AS bldr_STS_CD,bldr.SHRT_NM 
FROM bldr LEFT JOIN 
    bldr_img 
    ON bldr.ID = bldr_img.PRNT_ID AND 
     bldr_img.IMG_CAT_CD = 'LG' AND 
     bldr_img.STS_CD = 'AC' 
WHERE bldr.STS_CD = 'AC' 
ORDER BY bldr.ID; 

Warum? Obwohl dies geheimnisvoll erscheint, macht es durchaus Sinn. A LEFT JOIN behält alle Zeilen in den ersten Tabellen ungeachtet davon, ob die ON-Klausel True, False oder sogar NULL auswertet. Es "weiß" nicht, ob die Bedingung auf dem ersten Tisch oder dem zweiten steht. Daher sind Filter in der ersten Tabelle nicht wirksam.

+0

Vielen Dank, gibt es eine Möglichkeit, auf mysql-Abfragen stark zu sein? Beliebige Referenzlinks –

Verwandte Themen