1

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

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

我想做的是

获取所有俱乐部的列表及其相关的州和县

4

3 回答 3

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.

关于表名的一件事:建议使用单数或复数表名,不要混合使用它们(注意你有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-10T19:04:38.730 回答
1

您编写的查询甚至不会执行,因为它有语法错误。有关 JOINS 的更多详细信息,请参阅此链接: 13.2.8.2。加入语法

还有,`

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

`

我希望这会有所帮助...如果您仍然需要帮助,请告诉我们...

谢谢... 777 先生

于 2013-02-10T19:10:45.747 回答
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

如果您需要更多帮助,请告诉我...

谢谢... 777 先生

于 2013-02-10T19:43:04.767 回答