2010-04-17 40 views
1

這是真實表格數據的虛擬版本,因此可能看起來有點愚蠢。將來自一個表格的查詢結果與來自另一個表格的默認查詢結果相結合

表1(用戶):

id INT 
username TEXT 
favourite_food TEXT 
food_pref_id INT 

表2(food_preferences):

id INT 
food_type TEXT 

的邏輯如下:

比方說,我有這個在我的食物首選表:

1, 'VEGETARIAN' 

,這在用戶表:

1, 'John', NULL, 1 
2, 'Pete', 'Curry', 1 

在這種情況下,約翰默認爲是一個素食主義者,但皮特應該顯示爲誰喜歡咖喱的人。

問題,有沒有什麼辦法可以將查詢合併到一個select語句中,這樣如果favourite_food列爲NULL,它將從首選項表中獲取默認值?

我明顯可以在應用程序邏輯中做到這一點,但如果可能的話,只是將其卸載到SQL中會很好。

DB是sqlite3的...

回答

1

你可以使用COALESCE(X,Y,...)選擇不是空的第一個項目。

如果你將它與​​結合起來,你應該可以做你想做的。

它應該是這樣的:

SELECT u.id AS id, 
     u.username AS username, 
     COALESCE(u.favorite_food, p.food_type) AS favorite_food, 
     u.food_pref_id AS food_pref_id 
FROM users AS u INNER JOIN food_preferences AS p 
    ON u.food_pref_id = p.id 

我沒有SQLite數據庫方便的測試,然而,這樣的語法可能不是100%正確的,但它是它的要點。

+0

工作過,謝謝! – rytis 2010-04-17 17:39:38

相關問題