SQL-verknüpfen von zwei Tabellen
Ich habe 2 Tabellen Mitarbeiter(id und name) und das Gehalt(id, salary), der 1. hat 4 Zeilen und 2. hat 2 Zeilen.
table 1 Table 2
id Name id salary
1 Sue 1 10000
2 Sarah 3 9000
3 Nick
4 james
Möchte ich einen join wie folgt
id Name Salary
1 Sue 10000
2 Sarah No Salary
3 Nick 9000
4 james No salary
- Also man erstellt sich einen account hier nur zu Fragen, uns deine Hausaufgaben machen? In der gleichen Zeit, die Sie haben könnte, gegoogelt über SQL JOINs und beenden Sie die Zuordnung.
- Wie viel bekomme ich mit "Bo Gehalt"? "Bo" wie "Bonus", richtig?
- Come on guys.. ich bin beginer mit SQL so geschrieben wie eine Frage.. nicht Antworten, wenn Sie denken, dass zu dumm war..
- Sie sagen, dass Sie getan haben sollte, etwas zu Lesen, versucht etwas, dann kommen Sie hier, um Fragen zu stellen, wenn Sie immer noch nicht verstehen. Andernfalls riskieren Sie lernen Cargo-Kult-Programmierung - Sie erhalten wenig, dass Stecker und funktioniert, aber nicht wissen, warum es funktioniert.
- was mich gestört die meisten war die schiere Anzahl von Menschen zu beantworten, die nicht begreifen, brauchte Sie einen äußeren join.
- Ich verstehe völlig. Ich arbeite mit Leuten, die für die Jahre unterstützt haben, ein Produkt, basierend auf SQL-Server und die nicht verstehen, dass alle Verknüpfungen sind nicht gleich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies sollte den trick tun.
edit:
wenn das Gehalt Daten-ist null-Variablen versuchen, LEFT JOIN anstelle
Um alle Zeilen aus
T1
beim Eintritt in TabelleT2
wird, fehlt der Zeilen 2 und 4, die Sie benötigen, um ein left outer join. Für Zeile 2 und 4 Gehalt wird null sein.Ersetzt den null-Wert mit etwas, das Sie verwenden können,coalesce. Coalesce gibt den ersten nicht-null-argument.
Da Feld
salary
ist deklariert als einint
Feld, und Sie wollenNo Salary
als Ausgang, wo es kein Gehalt müssen Sie cast dieint
zu einemvarchar
bevor Sie es als argument in Sicht.Ergebnis
Ihr Ziel ist es, alle Mitarbeiter, unabhängig davon, ob oder nicht Sie haben eine aufgelistete Gehalt, so sollten Sie mit einem
LEFT JOIN
. Ein inner join wäre potenziell Liste Gehälter für Mitarbeiter, die nicht mehr eine Liste in der Mitarbeiter-Tabelle und eine implizite join (glaube ich) würde fehlen Zeilen.So etwas sollte tun, was Sie brauchen:
SELECT E.id, E.name, S.salary FROM Employees E LEFT JOIN Salary S ON E.id = S.id