如何在不同的地方向表添加两次相同的列?

时间:2016-04-16 21:30:48

标签: mysql sql database

我的数据库表是这样的:

  1. routes - 路由表,包含列:
    一个。 destination_id
    b。 departure_id
  2. 目的地 - 所有目的地的表格,栏目:
    一个。 destination_id
    b。 DESTINATION_NAME。
  3. 因为每个目的地也是出发点,所以我使用一张桌子。

    关系如下:

    1. routes.destination_id = destinations.destination_id,
    还有2. routes.departure_id = destinations。目标_ID

    我需要的结果如下所述:

    如果routes.destination_id = 3且routes.departure_id = 5,我想将它们中的每一个与目的地表中的对应名称相匹配,并在结果中输入正确的列名,我想将其称为出发departure_city和目的地相同。现在我得到两个不同ID的相同名称,所以如果destination_id#3是纽约而destination_id#5是拉斯维加斯,那么我将得到纽约,而这不是我需要的。

    到目前为止,我的查询看起来像是:

    SELECT routes.*, destinations.destination_name as 'departure_city', destinations.destination_name as 'destination_city'
    FROM routes, destinations
    WHERE routes.route_departure_id = destinations.destination_id
    

    在你告诉我使用JOIN之前,我已经使用JOIN完成了但是无法更改列名!另外,我总是收到所有表的列,我不知道如何只用JOIN获得必要的列!

    现在我的问题是我无法从目的地获取两次值,一次是route_destination,另一次是route_departure,并显示不同的值。

1 个答案:

答案 0 :(得分:2)

您正在寻找两个加入:

SELECT r.*, 
       dep.destination_name as departure_city, 
       dest.destination_name as destination_city
FROM routes r JOIN
     destinations dep
     ON r.departure_id = dep.destination_id JOIN
     destinations dest
     ON r.destination_id = dest.destination_id;

其他建议:

  • 使用表别名。它们使查询更容易编写和阅读。
  • 从不FROM子句中使用逗号。 始终使用明确的JOIN语法。
  • 不要使用单引号来定义列别名。仅对字符串和日期常量使用单引号。如果您使用的是需要引用的名称,请使用反引号(然后更改名称,以便不需要反引号)。