如何在sqlite中将表连接到两个不同的条件并获得一个结果行

时间:2016-03-16 15:16:10

标签: mysql sqlite

我有桌子"位置"有地点......例如

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命令也可以提供帮助。

1 个答案:

答案 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上测试了它