如何简化我的SQL查询

时间:2016-04-06 02:47:00

标签: sql sql-server

我对SQL很新,并且想知道是否有办法简化我的一个SQL查询。

SELECT 
    ships.ship_name,
    ships.company_name,
    ports.port_name,
    ports.port_country,
    port_days.port_date AS port_days 
FROM 
    port_days, ships, ports 
WHERE 
    port_days.ship_id = ships.ship_id 
    AND port_days.port_id = ports.port_id 
    AND port_days.ship_id = '" . $ship_id . "'
    AND port_days.port_date > '" . $start_date . "'
    AND port_days.port_date < '" . $end_date . "'

我正在玩INNER JOIN,但无法让它发挥作用。这实际上是有效的,但我认为必须有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

使用显式JOIN和表别名:

SELECT s.ship_name, s.company_name,
       p.port_name, p.port_country, p.port_date as port_days 
FROM port_days pd JOIN
     ships s
     ON pd.ship_id = s.ship_id JOIN
     ports p
     ON pd.port_id = p.port_id
WHERE pd.ship_id = '" . $ship_id . "' AND
      pd.port_date > '" . $start_date . "' AND
      pd.port_date < '" . $end_date . "';