【发布时间】:2018-03-10 02:37:11
【问题描述】:
我正在尝试完成我的第一次成功加入,但无法成功。
这是我的 3 个表名和列:
STORE 列:id(主要)、名称、类型、国家/地区
银行业务列:id、货币
STORE_BANKING(中间表)列:store_id、banking_id
我有一个简单的 html 搜索表单,用户可以在其中搜索与货币和/或国家/地区匹配的商店结果。
我收到错误:不是唯一的表/别名:'store'
也许我的 Store_banking 语法不正确?也许 store_banking.id 应该是 store_banking_id?
或者我没有使用正确的连接类型?
$query = "(
SELECT *
FROM store
LEFT JOIN store ON banking.id=store.id
LEFT JOIN banking ON store_banking.id = banking.id
WHERE ('$type' IS NULL OR '$type' = '' OR type = '$type')
AND ('$currency' IS NULL OR '$currency' = '' OR currency = '$currency') AND
('$country' IS NULL OR '$country' = '' OR country = '$country')order by
name)";
假设一些搜索国家为“任何”且货币为日元的商店。日元值存储在“银行”表中,因此我需要查询来检查该表并在结果中包含与日元作为货币匹配的所有商店。名称、类型和国家/地区等其他值都在 Stores 表中,这样更容易。
【问题讨论】:
-
您的查询毫无意义。表别名到处都是,表名与问题中的不同。
-
您的“FROM”行有错字,应该简单地读为
FROM store_banking -
我在您的架构中看不到列(类型、国家/地区...)!
-
类型和国家在 STORE 表中。
-
我希望它只是一张桌子,但货币被分解到银行表中,所以如果有人选择货币类型,我无法让搜索代码也返回结果