2017-10-09 2 views
0

Mein Problem beim Abrufen einer Zeile mit zwei Nullwerten angezeigt.LEFT JOIN kann es nicht richtig machen

Meine Tabellen sind unten

FROM tuote; 
    ttunnus |   tnimi   |  kuvaus  | suositushinta | tmtunnus 
    ---------+-----------------------+--------------------+---------------+---------- 
     111 | Trimmeri TRCee  | tehokas 4-tahtinen |  179.00 |  1 
     112 | Trimmerisiima Cee  | laadukas siima  |   6.99 |  1 
     113 | Moottorisaha MSCee RR | robusti ja raskas |  559.00 |  1 
     114 | Trimmerisiima Y  | yleissiima   |   3.99 |  2 
     115 | Lapio L    | kevyt yleislapio |   23.95 |  2 
    (5 rows) 

FROM kategoria; 
ktunnus | knimi 
---------+----------- 
     11 | puutarha 
     14 | valaistus 
     12 | metsä 
     13 | lumityöt 
(4 rows) 

FROM tuote_kategoria; 
ttunnus | ktunnus 
---------+--------- 
    111 |  11 
    112 |  11 
    113 |  11 
    113 |  12 
    114 |  11 
    115 |  11 
    115 |  13 
(7 rows) 

gezeigt brauche ich mit valaistusON NULL values in tnimi and suositushinta

knimi |   tnimi   | suositushinta 
-----------+-----------------------+--------------- 
puutarha | Trimmeri TRCee  |  179.00 
puutarha | Trimmerisiima Cee  |   6.99 
puutarha | Moottorisaha MSCee RR |  559.00 
metsä  | Moottorisaha MSCee RR |  559.00 
puutarha | Trimmerisiima Y  |   3.99 
puutarha | Lapio L    |   23.95 
lumityöt | Lapio L    |   23.95 
valaistus |      | 
(8 rows) 

diese Informationen aus Tabellen zu erhalten, aber ich es nur wie diese nicht in der richtigen Art und Weise bekommen.

SELECT t2.knimi, t1.tnimi, t1.suositushinta 
    FROM tuote t1, tuote_kategoria 
    LEFT JOIN kategoria t2 ON t2.ktunnus = tuote_kategoria.ktunnus 
    WHERE t1.ttunnus = tuote_kategoria.ttunnus; 
     knimi |   tnimi   | suositushinta 
    ----------+-----------------------+--------------- 
    puutarha | Trimmeri TRCee  |  179.00 
    puutarha | Trimmerisiima Cee  |   6.99 
    puutarha | Moottorisaha MSCee RR |  559.00 
    metsä | Moottorisaha MSCee RR |  559.00 
    puutarha | Trimmerisiima Y  |   3.99 
    puutarha | Lapio L    |   23.95 
    lumityöt | Lapio L    |   23.95 
    (7 rows) 
+0

Sie sind äußere Verbindungs ​​'kategoria' an den anderen Tischen, wann sollte es umgekehrt sein. Übrigens: Sie mischen die kommagetrennte Joinsyntax vor 1992 ('FROM tuote t1, tuote_kategoria') mit richtigen ANSI-Joins (' LINKE JOIN kategoria t2 ON ... '). Sie sollten diese alte Joinsyntax nicht mehr verwenden. –

+0

JOIN-Ketten werden vor kommagetrennten Elementen ausgewertet. – jarlh

+0

Mischen Sie niemals implizite Joins mit expliziten Joins –

Antwort

1

Sie wollen kategoria Aufzeichnungen zeigen, auch wenn sie keine Übereinstimmung in den anderen Tabellen haben. So wählen from kategoria und Außen kommen Sie mit den beiden anderen Tabellen:

select 
    k.knimi, 
    t.tnimi, 
    t.suositushinta 
from kategoria k 
left join tuote_kategoria tk on tk.ktunnus = k.ktunnus 
left join tuote t on t.ttunnus = tk.ttunnus;