2016-04-06 75 views
0

我对SQL相当陌生,想知道是否有办法简化我的一个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

使用明确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 . "'; 
+0

感谢@Gordon,我需要了解更多关于'JOIN' –