我已经创建了一些表格如下。
countries
con_id con_name
99 India
100 China
cities
cty_id cty_name country_id
1 Bangalore 99
2 Chennai 99
3 Delhi NCR 99
fees
f_id st_dt end_dt city_id country_id
1 2014-05-05 2014-05-05 1 99
2 2014-05-10 2014-05-10 2 99
3 2014-05-15 2014-05-15 3 99
4 2014-05-20 2014-05-20 0 100
5 2014-05-22 2014-05-22 0 100
我正在编写查询,按fees
从country_id
表中获取记录,如下所示。
SELECT *
FROM fees as fe
JOIN countries as con
ON con.con_id = fe.country_id
JOIN cities as cty
ON cty.cty_id = fe.city_id
对于国家/地区india
,它会从费用表和国家/地区3
中提取第一个china
条记录,而不是由于joinings
提取任何记录。
所以我想要结果如null for city columns
和correct values for fees and country tables
。
请帮我解决这个问题。这项工作将更受赞赏。
答案 0 :(得分:2)
您可以使用LEFT JOIN
(或右,取决于连接顺序):
SELECT *
FROM countries c
LEFT JOIN fees f
ON c.con_id = f.country_id
LEFT JOIN cities ci
ON ci.country_id = c.con_id
左连接将填充在连接中没有匹配的列的空值。