我有一个包含以下语法的表:
| ID | institution_course1_id | institution_course2_id |
其中application1_id和application2_id引用同一个表。我需要获取两者的值(换句话说,我想检索每个应用程序的名称)
我试图加入表格,但我仍然只在结果中收到1个名字。这是我使用的SQL:
SELECT * FROM `client_applications`
LEFT JOIN `institution_courses` `name1`
ON `client_applications`.`institution_course1_id`=`name1`.`id`
LEFT JOIN `institution_courses` `name2`
ON `client_applications`.`institution_course2_id`=`name2`.`id`
WHERE `client_applications`.`client_id`=?
有没有办法让我在结果中返回来自client_applications的所有行,然后将2个单独添加的键作为" name1"和" name2"基于以上内容?
答案 0 :(得分:0)
我猜你的问题是阅读结果的应用程序。尝试为两个名称添加不同的别名("列名称"):
SELECT ca.*, name1.name as name1, name2.name as name2
FROM `client_applications` ca LEFT JOIN
`institution_courses` `name1`
ON ca.`institution_course1_id` = `name1`.`id` LEFT JOIN
`institution_courses` `name2`
ON ca.`institution_course2_id` = `name2`.`id`
WHERE ca.`client_id` = ?;
否则您的查询看起来很好(尽管我也为第一个表添加了别名)。
答案 1 :(得分:0)
尝试以下:
SELECT ca.*, (select name1.name from name1 where ca.`institution_course1_id` = `name1`.`id`) as name1,(select name1.name from name1 where ca.`institution_course2_id` = `name1`.`id`) as name2
FROM `client_applications` ca
WHERE ca.`client_id` = ?;