0
我的问题获取一行显示两个空值。左连接不能正确地得到它
我的表显示如下
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)
我需要从表信息与valaistus
ON 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)
,但我只得到像这样不正确的方式。
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)
您是外侧连接'kategoria'到其他表,当它应该是反过来的。顺便说一句:您将1992年以前的逗号分隔连接语法('FROM tuote t1,tuote_kategoria')与适当的ANSI连接('LEFT JOIN kategoria t2 ON ...')混合在一起。你不应该再使用旧的连接语法。 –
在逗号分隔的项目之前评估JOIN链。 – jarlh
永远不要将隐式联接与显式联接混合使用 –