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