首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行连接

执行连接
EN

Stack Overflow用户
提问于 2013-02-11 02:58:40
回答 3查看 85关注 0票数 1

所以这是我第一次运行mysql数据库,

我从我的第一个问题中得到了很多帮助:MYSQL - First Database Structure help Please

并按照pitchinnate的建议构建了我的数据库

我有:

桌上俱乐部的桌上结构

代码语言:javascript
复制
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的表结构

代码语言:javascript
复制
Column      Type    Null    Default
club_id     int(11) No  
county_id   int(11) No

表县表结构

代码语言:javascript
复制
Column      Type        Null    Default
id          int(11)     No  
state_id    tinyint(4)  No  
name        varchar(50) No  

表状态的表结构

代码语言:javascript
复制
Column      Type        Null    Default
id          tinyint(4)  No  
longstate   varchar(20) No  
shortstate  char(2)     No  

我为上面看起来是这样的一切设置了外键关系……例如states.id -> county.state_id

我尝试运行的是:

代码语言:javascript
复制
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

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

我想要做的是

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-11 03:04:39

您需要为每个联接指定联接条件。它应该如下所示:

代码语言:javascript
复制
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 *",您只需用逗号分隔您想要的字段。

例如。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-02-11 03:10:46

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

另外,`

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2013-02-11 03:43:05

因此,在修改了问题之后,现在的答案将更类似于:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14801399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档