2016-03-24 5 views
1

Ich habe meinen Kopf für ein paar Tage gegen die Wand geschlagen, um herauszufinden, wie man das funktioniert.mySql Verbinde fehlende Werte für jede Gruppe von

Ich habe eine Tabelle "Kunden" mit den folgenden

CustID | CatName 
---------------- 
1  ModelX 

1  ModelY 

2  ModelX 

3  ModelY 

dann einem anderen Tabelle "Preisen"

ModelName | Price 
-------------------- 
ModelX  $1000 

ModelY  $500 

ModelZ  $200 

Wunsch Ausgang

ID | ModelName | Price 
------------------------- 
1  ModelX  $1000 

1  ModelY  $500 

1  ModelZ  $200 

2  ModelX  $1000 

2  ModelY  $500 

2  ModelZ  $200 

3  ModelX  $1000 

3  ModelY  $500 

3  ModelZ  $200 

würde ich bin unklar, wie um jeden nicht passenden CatName zu jeder ID zu bekommen. Wenn ich einen Outer Join mache, erhalte ich die fehlenden Datensätze, aber es wird nur einmal aufgelistet und wenn es eine Übereinstimmung für mindestens einen CatName gibt, wird es nicht mit anderen CatNames verglichen, wo es keine Übereinstimmung ist. dh

CustID | CatName | Price 
---------------------------- 
1   ModelX  $1000 

1   ModelY  $500 

2   ModelX  $1000 

2   ModelY  $500 

3   ModelY  $500 

(null)  ModelZ  $200 

Irgendwelche Ideen?

+0

Zeigen Sie uns Ihre aktuellen Abfrage –

Antwort

1

Das Ergebnis Sie zeigen sollte

select distinct * 
    from (select a.custID as custID, b.modelName, b.price 
      from customers as a, price b) as mytable 
    order by custID; 
+0

distinct ist keine Funktion - die Klammern sind irrelevant – Bohemian

0

Mitglied werden alle Preise auf jede einzelne ID in custoners Zeile ein bezeichnendes auf CutsID und kartesisches Produkt zwischen Kunden und Preis sein:

select CustID, CatName, Price 
from Prices, (select distinct CustID from Customers) c 
Verwandte Themen