1

これがmysqlデータベースへの最初の実行でした

私は最初の質問から多くの助けを得ました: MYSQL - First Database Structure help Please

ピッチンネートが推奨するようにデータベースを構築しました

私は持っている :

テーブルクラブのテーブル構造

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 -> count.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

お使いのバージョンでは、を読み取る行のON句が省略されていますJOIN states

テーブル名に関する1つのこと:単数形または複数形のテーブル名に固執し、それらを混在させないことをお勧めします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

したがって、質問を変更した後、答えは次のようになります。

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

于 2013-02-10T19:43:04.767 に答える
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

`

これがお役に立てば幸いです...まだサポートが必要な場合はお知らせください...

ありがとう… Mr.777

于 2013-02-10T19:10:45.747 に答える