我有以下SELECT:
SELECT cit.city,
providd.base_city
FROM
(SELECT prov.id AS prov_id,
prov.company_name,
prov.description AS prov_description,
prov.photo,
prov.base_city,
prov.facebook,
prov.twitter,
cat.id AS cat_id,
pcc.city_id
FROM `providers` AS prov
LEFT JOIN `provider_city_category` AS pcc ON prov.id = pcc.provider_id
LEFT JOIN `categories` AS cat ON pcc.category_id = cat.id
WHERE cat.id =7
AND pcc.city_id =1) AS providd,
cities cit
WHERE providd.base_city = cit.id LIMIT 1
我在Dreamweaver的“高级”区域中创建了一个SELECT语句,当我按下“测试”按钮时,它可以正常工作,但如果单击“确定”,我会在“绑定”面板中看到其他字段。为什么这不在Bindings面板中工作?它不是选择外部语句只是括号之间的语句。
当我测试时,我看到了选中的内容:
cit.city和providd.base_city
但如果我保存并查看Bindings面板,我会看到以下字段:
prov_id
COMPANY_NAME
prov_description
照片
base_city
实
微博
CAT_ID
city_id
我认为Dreamweaver没有问题我认为我在做这个陈述时出错了。我在本地工作并将其粘贴在phpmyadmin中,它也可以在Dreamweaver的测试环境中工作,但不能在Bindings Panel中工作。为什么呢?
答案 0 :(得分:1)
选择绝对正确。
我猜Dreamweaver有一个错误(或功能),它执行最内部的子选择或其他东西。
但是您可以轻松地重写查询以不使用子选择:
SELECT cit.city,
prov.base_city
FROM providers prov
JOIN cities cit
ON prov.base_city = cit.id
LEFT JOIN provider_city_category pcc ON prov.id = pcc.provider_id
LEFT JOIN categories cat ON pcc.category_id = cat.id
WHERE cat.id =7
AND pcc.city_id =1
LIMIT 1;