连接3个表时我的结果有问题,因为我在某个地方NULL a应该是数字或空单元格。
我在数据库中的表:
Table nr 1: rysunek id_rys | nazwa_rys | nazwa_klienta | ... 3 |01_116230_C0 |PHILIPS 7 |11_002177_A0 |P&G 20 |01_101854_B0 |MARS FOOD 333 |None |None ( + 7 columns which do not use in this query)
Table nr 2: artykul id_art |id_rys |nazwa_art | id_status | ... 1 |3 |00_16_1234 | 1 2 |7 |00_16_1235 | 3 3 |7 |00_16_1236 | 0 4 |333 |00_16_1237 | 0 ( + 10 columns which do not use in this query)
Table nr 3: statusy id_status |kod_status 1 |IA 2 |NC 3 |861
Mysql查询如下所示:
SELECT r.nazwa_klienta
, r.nazwa_rys
, a.nazwa_art
, s.kod_status
FROM artykul a
LEFT
JOIN rysunek r
ON a.id_rys = r.id_rys
LEFT
JOIN statusy s
ON a.id_status = s.id_status;
结果如下:
nazwa_klienta | nazwa_rys | nazwa_art | kod_status NULL | NULL | 00_16_1234 | IA NULL | NULL | 00_16_1235 | 861 P&G | 11_002177_A0 | 00_16_1236 | NULL None | None | 00_16_1237 | NULL
我需要上面的查询结果如下:
nazwa_klienta | nazwa_rys | nazwa_art | kod_status PHILIPS | 01_116230_C0 | 00_16_1234 | IA P&G | 11_002177_A0 | 00_16_1235 | 861 P&G | 11_002177_A0 | 00_16_1236 | [empty cell] None | None | 00_16_1237 | [empty cell]
我的查询应该怎么样?我尝试了所有的连接方法,但没有一个工作。 也许我应该改变表格的结构?我正在等待某人的某些建议...... :)
答案 0 :(得分:0)
只要该表中没有与artykul匹配的行,左连接将为您的rysunek列创建空条目。如果你不想列出它们,那么不要在这两个表之间使用外连接(我注意你没有在你想要的输出中列出它们)。
对于其他NULL,来自kod_status,因为它是一个数字列,几乎你的选择是:取null;或者使用COALESCE(kod_status,0)将其转换为0,或者将结果转换为字符串并将其空值转换为空字符串。 mysql命令行工具中有命令行选项(您的输出似乎来自)(参见http://dev.mysql.com/doc/refman/5.7/en/mysql-commands.html)如果符合您的使用模型需求,可能有一种方法可以更改输出空值的方式