[英]Fetch data from 4 tables mysql
我有4張桌子如下
表1: restos
結構:
resu_id resu_name resu_address
-------------------------------------
1 ABC Exapmple
2 DEF Example
3 GHD Example
表2: foodtype
結構:
id typename
---------------
12 Indian
23 Punjabi
表3: resto_foodtypes
結構:
resu_id foodty_id
--------------------
1 12
2 23
3 12
表4: discnts
結構:
id resu_id amt_dscPer(%age discount)
---------------------------
19 1 15
20 2 25
現在,我想顯示餐廳以及可供餐廳使用的折扣。 當前正在顯示餐廳,但對於不存在於discnts
表中的餐廳, discnts
正在從discnts
表返回空值。
以下是m使用的查詢
SELECT * from `restos` r join resto_foodtypes rf on rf.resu_id = r.resu_id
join foodtype f on rf.foodty_id = f.id left join discnts dcfm on
r.resu_id= dcfm.resu_id where true;
我希望結果表中不包含在discnts
表中不存在的餐廳。 例如, discnts
表中不存在resu_id=3
。
要排除在discnts表中沒有條目的結果,請使用INNER JOIN
而不是LEFT JOIN
。
要包括這些結果,但顯示為0
(而不是默認值NULL
),可以使用IFNULL(expr, 0)
函數:
SELECT
r.resu_name AS Name,
f.typename AS Food,
IFNULL(dcfm.amt_dscPer, 0) AS Discount
FROM `restos` r
JOIN resto_foodtypes rf ON rf.resu_id = r.resu_id
JOIN foodtype f ON rf.foodty_id = f.id
LEFT JOIN discnts dcfm ON r.resu_id= dcfm.resu_id;
IFNULL如果不為空,則返回第一個參數,如果expr
實際上為空,則返回第二個參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.