要返回的MySQL重复名称

时间:2014-10-07 10:59:12

标签: mysql

我有一个包含以下语法的表:

 | 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"基于以上内容?

2 个答案:

答案 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` = ?;