我有表格,用于存储用户ID以及其来源和目的地的ID。在表格b 上,我有地点ID和地点的具体名称。我要做的是加入表格,但表格b 中的名称列必须使用两次,因为我正在尝试获取2个地址。我正在尝试阅读MySQL但只是继续做错了。任何帮助将不胜感激。
table a
------------------------
| uid | to | from |
------------------------
| 1 | 1 | 2 |
------------------------
table b
---------------
| lid | name |
---------------
| 1 | one |
---------------
| 2 | two |
---------------
/what I'm trying to achieve/
------------------------------------------
|a.uid | a.to | b.name | a.from | b.name |
------------------------------------------
| 1 | 1 | one | 2 | two |
------------------------------------------
答案 0 :(得分:1)
您必须连接表b两次,并且每次使用as
select *
from a join b as b1 on a.to = b1.lid
join b as b2 on a.from = b2.lid
所以结果将是
--------------------------------------------
|a.uid | a.to | b1.name | a.from | b2.name |
--------------------------------------------
| 1 | 1 | one | 2 | two |
--------------------------------------------
但你可能想要的是防止名字冲突 - 如果你是从PHP调用它 - 然后重命名列:
select a.*, b1.name as toName, b2.name as fromName
... (rest of the query as above)
答案 1 :(得分:0)
如果仅限于两次加入表b两次。
但看起来你可以在a.from和a.to之间有任意数量的数字,在这种情况下,我会建议你在两个或多个查询中执行此操作。
一个从a和一个获取行来获取b中a.from和a.to之间的所有行。