如何组合多个表格的结果?

时间:2017-09-17 12:46:31

标签: php mysql sql sqlite pdo

我有桌子:城市和客户

cities:cities_id,cities_name

  1. 纽约
  2. 阿姆斯特丹
  3. 巴黎
  4. 米兰
  5. 客户端: 包含个人信息的列,但以下两列是importen:plac_of_residence_id和place_of_birth_id。这两列包含来自城市的不同值。例如:

    1. client_id:1
    2. client_name:John
    3. client_sex:m
    4. plac_of_residence_id:3(cities_id)
    5. place_of_birth_id:1(cities_id)
    6. 如何从表格城市中获取两个不同的值?

      我的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相同的城市名称,而不是两个不同的城市

      我如何获得输出:巴黎和纽约?

2 个答案:

答案 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:

,而不是在语句中使用AND
SELECT * 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与两个条目都有关系。