从4个表mysql中获取数据

时间:2014-09-26 08:10:25

标签: php 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表返回空值。

下面的

是使用

的查询
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表中不存在的餐馆不应包含在结果集中。对于例如resu_id=3表中没有discnts

1 个答案:

答案 0 :(得分:0)

要排除在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确实为空,则返回第二个参数。