我有3个表“job_messages”包含3个记录,这些是我想要的以及使用外键链接的其他2个表中的名称
这是3个表格:
以下是SQL
SELECT
`job_messages`.`job_message_id`,
`job_messages`.`job_time`,
`job_messages`.`job_type`,
`job_messages`.`work_group_id`,
`job_messages`.`location_id`,
`job_messages`.`patient_name`,
`job_messages`.`room_no`,
`job_messages`.`test_taken`,
`job_messages`.`worker_id`,
`job_messages`.`notes`,
`work_group`.`work_group`,
`locations`.`location_name`
FROM
`job_messages`
INNER JOIN `work_group` ON (`job_messages`.`work_group_id` = `work_group`.`work_group_id`)
INNER JOIN `locations` ON (`work_group`.`work_group_id` = `locations`.`work_group_id`)
我从这个select中得到12行的问题以及重复的记录和我想要的只是“job_messages”的主要3条记录,正确的SQL应该是什么?
答案 0 :(得分:2)
您是否尝试过更改加入地点?
INNER JOIN `locations` USING (`location_id`)
或者,如果您更喜欢使用ON
:
INNER JOIN `locations` ON (`job_messages`.`location_id` = `locations`.`location_id``)
答案 1 :(得分:1)
你说你的表job_messages
包含3行,但是你不知道其他两个表中有多少行。
您的查询看起来没问题,所以我猜测问题就是数据。
尝试这个查询。
SELECT `work_group_id`, count(*)
FROM `work_group`
GROUP BY `work_group_id`
HAVING count(*) > 1
SELECT `work_group_id`, count(*)
FROM `locations`
GROUP BY `work_group_id`
HAVING count(*) > 1
如果其中任何一个查询返回结果,则表示您遇到问题并导致重复的行。
修改
如果您有多个位置,请尝试使用此
FROM `job_messages`
INNER JOIN `work_group`
ON (`job_messages`.`work_group_id` = `work_group`.`work_group_id`)
INNER JOIN `locations`
ON (`job_messages`.`location_id` = `locations`.`location_id`)
OR
FROM `job_messages`
INNER JOIN `work_group`
ON (`job_messages`.`work_group_id` = `work_group`.`work_group_id`)
INNER JOIN `locations`
ON (`work_group`.`work_group_id` = `locations`.`work_group_id`)
AND (`job_messages`.`location_id` = `locations`.`location_id`)