我有桌子:城市和客户
cities:cities_id,cities_name
客户端: 包含个人信息的列,但以下两列是importen:plac_of_residence_id和place_of_birth_id。这两列包含来自城市的不同值。例如:
如何从表格城市中获取两个不同的值?
我的sql语句如下:
SELECT * FROM clients C LEFT JOIN cities C ON C.plac_of_residence_id = C.cities_id AND place_of_birth_id = C.cities_id WHERE C.client_id = $client_id";
我为plac_of_residence_id获取与place_of_birth_id相同的城市名称,而不是两个不同的城市
我如何获得输出:巴黎和纽约?
答案 0 :(得分:2)
你应该两次加入城市
"SELECT C.*, a.*, b.* FROM clients C
LEFT JOIN cities a ON C.plac_of_residence_id = a.cities_id
LEFT JOIN cities b on c.place_of_birth_id = b.cities_id
WHERE C.client_id = $client_id";
答案 1 :(得分:0)
您必须使用OR:
,而不是在语句中使用ANDSELECT * FROM clients C LEFT JOIN cities C ON C.plac_of_residence_id = C.cities_id OR place_of_birth_id = C.cities_id WHERE C.client_id = $client_id";
这是因为你想要同时拥有:出生城市和现住所。以上为例:
对于John,如果city表中的当前行为no,则连接要求(您的" ON"部分)应评估为true。 3或没有。 1因为John与两个条目都有关系。