MySQL在一列上连接两列

时间:2013-01-27 13:11:27

标签: mysql sql select join

我有两张桌子:

  1. table_name:user_tracking
    使用列:id,bill_no,container_type,origin_id,destination_id

  2. table_name:sea_ports
    使用列:id,bill_no,port_name

  3. 我想编写单个查询来获取origin port_name和目标port_name。

    我的查询是:

    select a.container_type, 
           b.port_name as origin_port
    from user_tracking a 
    left join sea_ports b 
    on a.bill_no = b.bill_no 
    where a.bill_number = '$bill_no'
    

    如何从表origin_id的同一字段destination_id加入两列idsea_ports以获得两种不同的输出?

1 个答案:

答案 0 :(得分:4)

您需要加入表sea_ports两次,以便获得每个来源和目的地的port_name。还有一件事,我想,你需要使用INNER JOIN而不是LEFT JOIN,因为总会有目的地和原点吗? :D

SELECT  a.ID,
        a.bill_no,
        a.container_type,
        b.port_name AS Origin_name,
        c.port_name AS Destination_name
FROM    user_tracking a
        INNER JOIN sea_ports b
            ON a.origin_id = b.id
        INNER JOIN sea_ports c
            ON a.destination_id = c.id
WHERE   a.bill_number = '$bill_no'

作为旁注,如果值( s )来自外部,则查询易受SQL Injection攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。