Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP和MySQL连接多个表时获取SQL错误_Php_Mysql - Fatal编程技术网

使用PHP和MySQL连接多个表时获取SQL错误

使用PHP和MySQL连接多个表时获取SQL错误,php,mysql,Php,Mysql,我在PHP和MySQL中尝试使用不同的条件连接多个表时遇到以下错误 UNION和ORDER BY的用法不正确 我的问题是: 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.b

我在PHP和MySQL中尝试使用不同的条件连接多个表时遇到以下错误

UNION和ORDER BY的用法不正确

我的问题是:

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 
      and d.member_id = sl.member_id 
where
   b.city = '2' 
   and d.day_id = '3' 
   and c.special = '2' 
   and sl.date_from <= '2016-10-26' 
   and sl.date_to >= '2016-10-26' 
   and b.status = 1 
   and sub.status = 1 
   and sl.date_from != '' 
   and sl.date_to != '' 
ORDER BY
   b.member_id DESC 
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 
      and d.member_id = sl.member_id 
where
   b.city = '2' 
   and d.day_id = '3' 
   and c.special = '2' 
   and b.status = 1 
   and sub.status = 1 
   and sl.date_from = '' 
   and sl.date_to = '' 
ORDER BY
   b.member_id DESC

如何解决此错误?

您应该只在查询结束时分配订单,而不是在每个select中 并对不同表中同名的列使用适当的别名

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.b_member_id=d.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 and d.member_id=sl.member_id 
where b.city='2' 
  and d.day_id='3' 
  and c.special='2' 
  and sl.date_from <='2016-10-26' 
  and sl.date_to >= '2016-10-26' 
  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 and d.member_id=sl.member_id 
where b.city='2' 
  and d.day_id='3' 
  and c.special='2' 
  and b.status=1 
  and sub.status=1 a
  nd sl.date_from ='' 
  and sl.date_to ='' 
ORDER BY b_member_id DESC

我按照您的要求执行了操作,但它在“order子句”中再次抛出此未知列“b.member\u id”。我已更新asnwer,添加别名cor b.member\u id并使用此别名进行订购。。让我知道,在order子句中抛出这个'1052-列'member_id'是不明确的'error。我已经更新了asnwer添加了b_member_id并仅使用别名在'on子句'中添加了这个'1054-未知列'b_member_id','error即将到来。