2016-04-12 13 views
0

Ich habe jetzt zwei Tabellen, die Daten speichern. Sie sind durch einen ID-Wert verbunden. Wie kann ich alle Werte aus Tabelle eins einschließlich des Masterwerts zurückgeben, selbst wenn Übereinstimmungen vorhanden sind? Hier ist meine grundlegende Abfrage.Links Join Return Joining Wert

Select MFG.mfgname, SS.subsysname 
From Manufacturers MFG left join SubSystem SS 
On MFG.id = SS.mfgid 
Order by MFG.mfgname, SS.subsysname 

Hier sind die Tabellen

MFG Table  
id mfgname 
1 ABB 
2 Siemens 
3 Vipa  
4 Visolux 

SubSystem table  
id mfgid subsysname 
1 1 ABB Drives 
2 1 ABB Robots 
3 1 Advant OCS 
4 2 Simatic S5 
5 2 Simatic S7 
6 3 Vipa System 

Und schließlich werden die Ergebnisse und die gewünschten Ergebnisse.

Results 
mfgname subsysname 
ABB ABB Drives 
ABB ABB Robots 
ABB Advant OCS 
Siemens Simatic S5 
Siemens Simatic S7 
Vipa Vipa System 
Visolux NULL 

Desired Results 
mfgname subsysname 
ABB NULL 
ABB ABB Drives 
ABB ABB Robots 
ABB Advant OCS 
Siemens NULL 
Siemens Simatic S5 
Siemens Simatic S7 
Vipa NULL 
Vipa Vipa System 
Visolux NULL 

die gewünschten Ergebnisse zurückkehren würde auch die ABB, Siemens und Vipa MFG mit einem Null-Subsystem Namen. An diesem Punkt ist es nicht. Hoffe, das hat Sinn gemacht!

Antwort

2

Sie sollten dies mit UNION tun können.

+1

Könnte dies ein wenig besser funktionieren, wenn Sie den 'linken Join' zu einem' inneren Join' und den 'Union' zu' union all' ändern, wodurch die Notwendigkeit einer eindeutigen Sortierung vermieden wird? –

+2

Wenn "subsysname" nicht nullfähig ist, können Sie inner join und union all verwenden – JamieD77