2014-09-26 97 views
0

這是一個過濾器的形式。我有兩個表是這樣的:
巡航(ID,姓名,[...])
cruise_itineraries(ID,cruise_id,port_name中指,DEPARTURE_TIME,[...])選擇相關搜索的第一個結果是否匹配?

如果我要選擇所有遊輪它通過一些端口,我會做這樣的事情:

SELECT cruise.* 
FROM cruise, 
    cruise_itineraries 
WHERE cruise_itineraries.cruise_id = cruise.id AND cruise_itineraries.port_name LIKE %?% 

不過,我想它開始它在一個選定的端口發送所有的遊船,這意味着這必須從cruise_itineraries查詢的第一條記錄與cruise_id匹配。 我已經試過這樣的事情:

SELECT cruise.* 
FROM cruise, 
    cruise_itineraries 
WHERE (
     SELECT port_name 
     FROM cruise_itineraries, 
      cruises 
     WHERE cruise_itineraries.cruise_id = cruise.id 
     ORDER BY cruise_itineraries.id ASC LIMIT 1) 
LIKE %?% 

也就是說,讓每一個ID的第一條記錄,並與%%匹配它,但我沒有得到任何結果?

我應該怎麼做呢?

+0

您需要使用JOIN,並且您爲什麼要選擇巡航。 – Arun 2014-09-26 18:13:03

+0

該加入過程如何?我選擇巡航。*因爲我想要所有郵輪列。 – 2014-09-26 18:22:39

+0

你不需要巡航。*。只需*如此選擇*您能否爲我們提供這兩個表的示例,以及您想要的結果示例。 (他們看起來像什麼) – Arun 2014-09-26 18:24:15

回答

0

它看起來像你只想要港口最早出發的行程。

SELECT cruise.* 
FROM cruise 
INNER JOIN cruise_itineraries ci ON 
    ci.cruise_id = cruise.id 
    AND ci.port_name LIKE %?% 
    AND ci.departure_time = (select min(ci2.departure_time) 
     from cruise_itineraries ci2 
     where ci2.cruise_id = ci.cruise_id and ci2.port_name= ci.port_name 
     group by ci2.cruise_id, ci2.port_name) 
相關問題