我似乎无法查询包含外键的'events'表。
这就是我建立的:
$query = 'SELECT events.*, venues.*, music_styles.* FROM events, venues, music_styles'.
'INNER JOIN venues, music_styles v ON (events.VENUE_LOCATION = venues.ID) AND (events.MUSIC_STYLE_ID = music_styles.ID';
$result = mysql_query($query);
我试图说events.VENUE_LOCATION等于表'场所'的ID,而events.MUSIC_STYLE_ID等于表'music_styles'的ID。
这是我得到的错误:
无效查询:不唯一的表/别名:'场地'
这是我的数据库设计:
非常感谢大家:)
答案 0 :(得分:2)
您正在从表格场所和music_styles中选择两次,这会导致您的错误。您必须为每个别名提供一个唯一的别名(例如:... FROM venues AS v
)。
但是,您的查询似乎很奇怪。你正在做一些连接和笛卡尔产品,你有无与伦比的括号,你准备做什么?您在寻找这样的查询:
SELECT *
FROM events e -- e is the alias
INNER JOIN venues v
ON e.VENUE_LOCATION = v.ID
INNER JOIN music_styles m
ON e.MUSIC_STYLE_ID = m.ID;
答案 1 :(得分:2)
让我们削减PHP的东西,这是不相关的。你说,
SELECT events.*, venues.*, music_styles.* FROM events, venues, music_styles
INNER JOIN venues, music_styles v ON (events.VENUE_LOCATION = venues.ID) AND (events.MUSIC_STYLE_ID = music_styles.ID
这不太对,这不是JOIN的工作方式。它应该是,
SELECT events.*, venues.*, music_styles.*
FROM events
INNER JOIN venues ON(events.VENUE_LOCATION = venues.ID)
INNER JOIN music_styles ON(events.MUSIC_STYLE_ID = music_styles.ID)