2011-09-03 46 views
1

我似乎无法查询包含外键的'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。

这是我得到的错误:

查询无效:不是唯一的表/别名: '场地'

这是我的数据库设计: enter image description here

谢谢很多人:)

回答

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) 
+0

感谢Kerrek,那做了魔力:) – pufAmuf

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; 
+0

嗨文森特,这正是我想要做的,谢谢! :) – pufAmuf