所以这是我第一次进入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
这不起作用......我确信原因对于那些知道应该做什么的人来说是显而易见的。
我想做的是
获取所有俱乐部的列表,以及相关的州和郡
答案 0 :(得分:1)
您需要为每个联接指定JOIN条件。它看起来应该如下所示:
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 *”,则逗号将您想要的字段分开。
E.g。
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
答案 1 :(得分:1)
您编写的查询甚至不会执行,因为它有语法错误。 有关JOINS的更多详细信息,请参阅此链接: 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
答案 2 :(得分:1)
所以在你修改了问题之后,现在的答案更像是:
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