Php 如何组合来自多个表的结果?
我得去看几张桌子:城市和客户 城市:城市编号、城市名称Php 如何组合来自多个表的结果?,php,mysql,sql,sqlite,pdo,Php,Mysql,Sql,Sqlite,Pdo,我得去看几张桌子:城市和客户 城市:城市编号、城市名称 纽约 阿姆斯特丹 巴黎 米兰 等等 客户: 包含个人信息的列,但以下两列很重要:plac_of_residence_id和place_of_Borth_id。这两列包含与城市不同的值。例如: 客户识别码:1 客户名称:约翰 客户性别:m 居住地点编号:3(城市编号) 出生地id:1(城市id) 如何从表城市中获取两个不同的值 我的sql语句如下: SELECT * FROM clients C LEFT JOIN cities C ON C
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";
我得到的城市名称与居住地和出生地相同,而不是两个不同的城市
如何获得输出:巴黎和纽约?在您的声明中,您必须使用OR:
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,如果cities表中的当前行为no.3或no.1,则join要求(您的“ON”部分)应评估为true,因为John与这两个条目都有关系。而不是使用AND,并且在您的语句中,您必须使用OR:
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,如果cities表中的当前行是第3行或第1行,则加入要求(您的“ON”部分)应评估为真,因为John与这两个条目都有关系。您应该加入cities两次
"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";
你应该加入城市两次
"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";