所以这是我第一次运行mysql数据库,
我从我的第一个问题中得到了很多帮助:MYSQL - First Database Structure help Please
并按照pitchinnate的建议构建了我的数据库
我有:
桌上俱乐部的桌上结构
Column Type Null Default
id int(11) No
clubname varchar(100) No
address longtext No
phone varchar(12) No
website varchar(255) No
email varchar(100) No 表club_county的表结构
Column Type Null Default
club_id int(11) No
county_id int(11) No表县表结构
Column Type Null Default
id int(11) No
state_id tinyint(4) No
name varchar(50) No 表状态的表结构
Column Type Null Default
id tinyint(4) No
longstate varchar(20) No
shortstate char(2) No 我为上面看起来是这样的一切设置了外键关系……例如states.id -> county.state_id
我尝试运行的是:
SELECT *
FROM club
JOIN states
JOIN county
ON county.state_id=states.id
JOIN club_county
ON club_county.club_id=club.id
club_county.county_id=county.id这不管用。我相信对于那些知道应该做什么的人来说,原因是显而易见的。
我想要做的是
获取所有俱乐部及其相关州和县的列表。
发布于 2013-02-11 03:04:39
您需要为每个联接指定联接条件。它应该如下所示:
SELECT *
FROM club
JOIN club_county ON club.id = club_county.club_id
JOIN county ON club_county.county_id = county.id
JOIN states ON county.state_id = state.id您的版本省略了JOIN states行上的ON子句。
关于表名,有一点是建议的:最好使用单数或复数表名,不要混合使用它们(请注意,您有club (单数)和states (复数)表)。这使您在开发时更容易记住事情,并且您不太可能犯错误。
编辑:
如果要限制结果中显示的列,只需修改SELECT子句。相反,如果是"SELECT *",您只需用逗号分隔您想要的字段。
例如。
SELECT club.id, club.name, county.name, states.name
FROM club
JOIN club_county ON club.id = club_county.club_id
JOIN county ON club_county.county_id = county.id
JOIN states ON county.state_id = state.id发布于 2013-02-11 03:10:46
您编写的查询甚至不会执行,因为它有语法错误。有关联合的更多详细信息,请参阅此链接:13.2.8.2. JOIN Syntax
另外,`
SELECT *
FROM club a, county b, states c, club_county d
WHERE a.id = d.county_id
AND b.id = d.county_id
AND b.state_id = c.id`
我希望这会对你有所帮助。如果你还需要帮助,请告诉我们...
谢谢..。Mr.777
发布于 2013-02-11 03:43:05
因此,在修改了问题之后,现在的答案将更类似于:
SELECT club.id,club.clubname,county.name,states.longstate,states.shortstate
FROM club,club_county,county,states
WHERE club.id=club_county.club_id
AND county.id=club_county.county_id
AND states.id = county.state_id如果你需要更多的帮助,请告诉我。
谢谢..。Mr.777
https://stackoverflow.com/questions/14801399
复制相似问题