执行连接

时间:2013-02-10 18:58:40

标签: mysql join

所以这是我第一次进入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

这不起作用......我确信原因对于那些知道应该做什么的人来说是显而易见的。

我想做的是

获取所有俱乐部的列表,以及相关的州和郡

3 个答案:

答案 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