2017-02-18 3 views
0

Suchen Sie alle UserName von UsersDataTbl und übereinstimmende UserName von EnrollmentsTbl, wenn es existiert. aber ich möchte herausfinden, welche in der EnrollmentsTbl existieren und 2 Datensätze nicht erstellen. Vielleicht fügen Sie einen booleschen Ausdruck hinzu, der 1, falls vorhanden, und 0 erhält, wenn nicht.Holen Sie sich alle Datensätze in der ersten Tabelle und die Übereinstimmung in der zweiten Tabelle (Angabe diejenigen, die existierten)

meine SQL kehrt nur vorhandenen Datensatz in EnrollmentsTbl

SELECT u.UserName 
    , e.Completed 
    FROM UsersDataTbl u 
    LEFT 
    JOIN EnrollmentsTbl e 
    ON u.UserName = e.UserName 
WHERE e.ClassName LIKE 'Word%' 
    AND u.UserName LIKE 'bar%' 

WEITERE FRAGE:

(SELECT u.UserName, u.LastName, d.Station 
    , (e.UserName IS NOT NULL) as completedl 
    FROM UsersDataTbl u 
    LEFT 
    JOIN EnrollmentsTbl e 
    ON u.UserName = e.UserName 
     AND e.ClassName LIKE 'Word%') 
    INNER JOIN UsersDataCareerTbl d 
    ON u.UserName = d.UserName 
    WHERE u.Career = 1 AND Active = 1 ORDER BY u.LastName 
+1

Hinweis 'LEFT JOIN x ... x = ...' ist die gleiche wie 'INNER JOIN x ...' – Strawberry

+0

Notiz sicher, wer meinen Code hält Bearbeitung - aber SQL ist nicht mehr richtig ?? ? – BarclayVision

+0

Ich habe es lesbar gemacht. Ich habe keine strukturellen Änderungen vorgenommen. – Strawberry

Antwort

1

Sie können uns die is not null zu testen, ob ein Feldwert null ist oder nicht und gibt eine wahre oder falsch. Wenn der Benutzername in EnrollmentsTbl nicht existiert, dann wird der linke Join an seiner Stelle null zurückgeben.

Ich zog das e.ClassName LIKE 'Word% Kriterium aus der where Klausel der Bedingung beitreten, da sie die left join in eine inner join Sieg über den ganzen Zweck der Abfrage geändert.

SELECT u.UserName 
    , (e.UserName IS NOT NULL) as user_exists_in_EnrollmentsTbl 
    FROM UsersDataTbl u 
    LEFT 
    JOIN EnrollmentsTbl e 
    ON u.UserName = e.UserName 
     AND e.ClassName LIKE 'Word%' 
WHERE u.UserName LIKE 'bar%' 
+0

vielen Dank - das ist perfact. – BarclayVision

+0

können Sie mir mit dem Update oben helfen - müssen Sie eine andere Tabelle auf das aktuelle Arbeitsbeispiel verknüpfen. – BarclayVision

+1

Wenn Sie eine andere Frage haben, dann stellen Sie es als separate Frage. – Shadow

Verwandte Themen