簡體   English   中英

從4個表中獲取數據mysql

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM