2017-06-08 2 views
0

Ich brauche die Zeilen in TABLE A kennen, die in TABLE B beitreten Datensätze zugrunde, einen Spaltenwert in TABLE B, aber ich brauche auch Zeilen zurückgeben, in dem eine Reihe in TABLE A hat keine Übereinstimmung in TABLE B.SQL - Notwendigkeit bedingt in TableB Spalte basierend auf dem Wert join

Es scheint, als ob ich ein LINKES JOIN und ein LINKES OUTER JOIN brauche, also bin ich mir nicht sicher, was ich dort tun soll. Ich verstehe, wie man jedes tut, aber nicht verstehe, wie man sie zusammen macht.

Das Schema wie folgt aussieht:

TABLE_A 
pk 

TABLE_B 
pk 
a_fk 
some_value 

ich die verknüpften Zeilen müssen, wo Table_A kein Datensatz in Table_B OR Table_A beitreten hat hat einen Rekord Reihe mitmachen Table_B (es kann viele haben), in denen some_value nicht gleich "thisValue"

Danke.

+0

Kontrolle haben: https://stackoverflow.com/questions/406294/ link-join-vs-left-outer-join-in-sql-server –

+0

Wenn Beispieldaten und gewünschte Ergebnisse hinzufügen, wird leicht zu verstehen, Ihre Anforderung –

+0

Ich habe Details hinzugefügt. Vielen Dank. – mstrom

Antwort

1

Eine linke Verbindung ist eine linke äußere Verbindung. Outer-Joins erhalten einen der Tabellen, nach denen Sie suchen.

SELECT * 
FROM Table A 
LEFT JOIN Table B 
ON TableA.Column = TableB.Column 
AND B.SomeValue <> 'ThisValue' 

Alle Zeilen mit einem Spiel die B-Informationen haben alle die bevölkert ohne werden diese Nullen in den B-Daten

+0

Danke. Bitte beachten Sie meine Änderungen oben. – mstrom

+0

@mstrom Ich habe eine zusätzliche Join-Bedingung hinzugefügt, die Ihren Anforderungen entsprechen sollte – MarkD

Verwandte Themen