使用PHP和MySQL连接多个表时无法获得价值

I have an issue in my SQL query. I need to fetch value from DB by joining multiple tables but I could not get the data for some condition. I am explaining my query below.

    SELECT  b.member_id as b_member_id,b.rest_name,b.city,b.proviance,b.postal,
                b.address,b.country,b.person,b.mobile,b.url,b.status,b.premium,b.image,
                b.business_phone_no,b.email,b.multiple_image,b.latitude,b.longitude,
                b.quadrant,d.member_id as d_member_id,d.day_id,d.cat_id,d.subcat_id,
                d.comment,d.city,d.special_images,c.cat_id,c.special,sub.subcat_id,sub.subcat_name,
                sub.status,sl.day_id,sl.member_id,sl.date_from,sl.date_to 

    FROM db_restaurant_basic as b 
    LEFT JOIN db_restaurant_detail as d ON b.member_id=d.member_id 
    LEFT JOIN db_category as c ON d.cat_id=c.cat_id 
    LEFT JOIN db_subcategory as sub ON d.subcat_id=sub.subcat_id 
    LEFT JOIN db_special_images as sl ON d.day_id=sl.day_id 
    WHERE b.city='2' 
    AND d.day_id='1' 
    AND c.special='1' 
    AND sl.date_from <='2016-10-31' 
    AND sl.date_to >= '2016-10-31' 
    AND b.status=1 
    AND sub.status=1 
    AND sl.date_from !='' 
    AND sl.date_to !='' 
    UNION ALL 
    SELECT      b.member_id,b.rest_name,b.city,b.proviance,b.postal,b.address,
                b.country,b.person,b.mobile,b.url,b.status,b.premium,b.image,
                b.business_phone_no,b.email,b.multiple_image,b.latitude,b.longitude,
                b.quadrant,d.member_id,d.day_id,d.cat_id,d.subcat_id,d.comment,
                d.city,d.special_images,c.cat_id,c.special,sub.subcat_id,sub.subcat_name,
                sub.status,sl.day_id,sl.member_id,sl.date_from,sl.date_to 
    FROM db_restaurant_basic as b 
    LEFT JOIN db_restaurant_detail as d ON b.member_id=d.member_id 
    LEFT JOIN db_category as c ON d.cat_id=c.cat_id 
    LEFT JOIN db_subcategory as sub ON d.subcat_id=sub.subcat_id 
    LEFT JOIN db_special_images as sl ON d.day_id=sl.day_id 
    WHERE b.city='2' 
    AND d.day_id='1' 
    AND c.special='1' 
    AND b.status=1 
    AND sub.status=1 
    AND sl.date_from ='' 
    AND sl.date_to ='' 
    ORDER BY b_member_id DESC;

Here i am not getting any value while db_special_images has no entry for this sl.date_from ='' and sl.date_to =''. Here i need the value should come while any one of following condition will match.

Condition

  1. If In db_special_images table (date_from ='' and date_to ='') and (date_from !='' and date_to !='').

  2. If In db_special_images table (date_from ='' and date_to ='').

  3. If In db_special_images table (date_from !='' and date_to !='').

I need if one of any above condition will match the value should come.

dsaob80228
dsaob80228 如果您几乎从表格中选择每个字段,请不要费心列出每个字段;用*代替。例如。SELECTb。*,f。*FROMfoofLEFTJOINbarbONb.some_id=f.some_id。假设您使用关联数组或对象作为结果,在相关表中不存在匹配项时,在FROM之前反转表的顺序对于覆盖NULL很重要。
大约 4 年之前 回复
douhuang2218
douhuang2218 这是我见过的最丑陋的查询之一。您是否想要列出有特价的特色菜或餐厅?您不需要UNION,只需将日期条件分组在括号中即可。如果特殊情况只有结束日期或只有开始日期会怎样?最好做...AND(date_from=''ORdate_from<='2016-10-31')和...非规范化数据更难处理;首先在自己的查询中选择您的一对一关系数据,然后使用第一个中的ID来选择一对多关系数据。
大约 4 年之前 回复
dongzhi1907
dongzhi1907 :我已经给出了为什么我需要改进查询的条件。你能帮助我吗?
大约 4 年之前 回复
duanru6816
duanru6816 sl.date_from和sl.date_to中的值实际上是空值,还是空字符串?您是否期望左连接返回db_special_images的记录?
大约 4 年之前 回复
dongzhuo5185
dongzhuo5185 第一个条件似乎与我相矛盾-date_from不能同等且不等于空字符串。
大约 4 年之前 回复
dongrong9938
dongrong9938 做格式我怎么做:)
大约 4 年之前 回复
dongxu8533486
dongxu8533486 :请再次查看我的帖子。我把它分成了几行。
大约 4 年之前 回复
dousaoxiancy199896
dousaoxiancy199896 在多行中分解。其他人不应该为你做这件事。
大约 4 年之前 回复
duanluan3651
duanluan3651 :从ur查询中理解结构非常困难,因为格式不正确
大约 4 年之前 回复
douke1954
douke1954 :它已经格式化了。
大约 4 年之前 回复
dtest84004
dtest84004 :我在这里提到的所有专栏。
大约 4 年之前 回复
dongtuo1482
dongtuo1482 请格式化您的查询。
大约 4 年之前 回复
doubian0284
doubian0284 可以请你提供数据库结构。
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问