2016-11-24 92 views
0

我正在生成查詢。我有兩個表名:航班和目的地。 在飛行表,我有列:ID,出發地,目的地,價格,航空公司,類和目的地的表,我有柱:id, destination, country, region.內連接中的where子句

現在我想詳細航班,其區域爲"Europe"。我在做inner join。我的查詢是這樣的:

SELECT * 
FROM `flights` 
INNER JOIN destinations ON flights.destination = destinations.destination 
where region= 'europe' 

它給我空結果。如果我從查詢中刪除(where region= 'europe'),那麼它會給我所有航班和目的地列的結果。

請幫我

+0

大/小寫問題? – jarlh

+0

不是它的問題 –

+1

你確定這些行存在於數據庫中嗎? –

回答

0

試試這個

SELECT * 
FROM `flights` 
INNER JOIN destinations 
    ON flights.destination = destinations.destination 
where LOWER(region) = 'europe' 
+0

但是,OP表示僅JOIN返回航班。在哪裏下降,而不是... – jarlh

+0

@jarlh是的困惑,爲了快速回答。更新了查詢。 – Viki888

0

我注意到,你說'Europe'是該地區。 MySQL可以區分大小寫,具體取決於數據庫和表使用的排序規則(但不是默認情況下)。所以,我會用適當的情況下啓動比較:

SELECT * 
FROM flights f INNER JOIN 
    destinations d 
    ON f.destination = d.destination 
WHERE d.region = 'Europe'; 

如果還是不行,那麼奇怪的字符可能已經悄悄進入region列。你可以試試:

WHERE lower(d.region) like '%europe%' 
+0

其與較低(d.region)一樣的'%europe%'。你能告訴我如何在codeigniter中寫這個查詢嗎? –

+0

@HarrisKhan。 。 。一個新問題應該被視爲一個新問題。這個問題顯然不是關於Codeigniter的。如果你改變了這個問題,那麼你會使目前的答案失效,這是不禮貌的,因爲它可以吸引downvotes。 –

0

由於您使用的是內部聯接,您可以指定該地區的連接條件的一部分,就像這樣:

SELECT * 
    FROM `flights` 
    INNER JOIN destinations ON flights.destination = destinations.destination 
     AND destinations.region = 'europe' 

是否Flights.Destination值店的Id目的地表格的?您可能需要將連接調整爲

flights.destination = destinations.Id