我有桌子"位置"有地点......例如
location_id location_name
=========================
1 Location A
2 Location B
3 Location C
表"运动"我在哪里记录从指定项目的位置A到位置B的移动:
id item_id loc1_id loc2_id
===========================
1 1 1 3
2 2 2 1
我需要为指定的item_id和位置名称进行一次结果行移动...
我已尝试过sample_id = 1:
的示例select `movements`.*,`locations`.`location_name` from `movements`
inner join `locations`
on (`locations`.`location_id`=`movements`.`loc1_id` or `locations`.`location_id`=`movements`.`loc2_id`)
where `movements`.`item_id`=1;
但是这样会返回2行:
id item_id loc1_id loc2_id location_name
=========================================
1 1 1 3 Location A
1 1 1 3 Location C
有没有办法让一个查询和一个结果行同时获得两个名称?我使用SQLite,但我希望MySQL命令也可以提供帮助。
答案 0 :(得分:1)
我认为这就是你想要的,(http://sqlfiddle.com/#!7/0d70a/1)
SELECT
b.id,b.item_id,b.loc1_id,b.loc2_id,l1.location_name location_name1,l2.location_name location_name2
FROM
movements b
INNER JOIN locations l1 ON l1.location_id=b.loc1_id
INNER JOIN locations l2 ON l2.location_id=b.loc2_id
WHERE
b.item_id=1
我在SQLlite和MYSQL上测试了它