2011-06-24 21 views
2

私は現在、このような2つのテーブルからの情報取得のクエリがあります。複数のテーブルのMySQLクエリは、複数のセカンダリテーブルですか?

SELECT g.name 
FROM site_access b 
    JOIN groups g 
     ON b.group_id = g.id 
WHERE b.site_id = 1 
ORDER BY g.status ASC 

は今、私はこのクエリで別のテーブルを持っていると思ったが、この1台がもっとそして1行がすべてでいる可能性があり戻ってきますの?

私が作ることができるのは、そのテーブルから1行を引っ張って、私が望むフィールドが文字列フィールドであり、すべてのマッチをこのクエリで一緒に引き出すことができる限り、結果をセパレータに結合することもOKです。

テーブルに関する情報が必要な場合や、何かが必要なのではないかと思いますが、これは主にjoin/selectクエリから複数の行を引き出す方法の例です。上記のクエリは結果どうなるかの

UPDATE:

私の第三のテーブルと今
Admin 
Member 
Banned 

各アクセス、彼らがそのように、この第三のテーブルを使用することを許可されているコマンドが各1がアクセスできるコマンドは何をリストしてい例:

Admin - add, del, announce 
Member - find 
Banned - none 

アップデート2:

  • site_acces S

    site_id 
    group_id 
    
  • グループ

    id 
    name 
    status 
    
  • groups_commands

    group_id 
    command_id 
    
  • コマンド

    id 
    name 
    
+0

あなたは、新たに結合されたテーブル[連結](http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group -concat)を1行にする? –

+0

@Joe Stefanelliそれはjoinnedする必要があるかどうか私は上記のクエリで3番目の結合テーブルからすべての行を取得することが可能であることを知りたいと思っていませんでした。上記のクエリだけで8行、8行に3行目のX行が表示されます – Prix

答えて

2
SELECT g.name, GROUP_CONCAT(c.command) AS commands 
FROM site_access b 
    JOIN groups g 
     ON b.group_id = g.id 
    JOIN groups_commands gc 
     ON g.id = gc.group_id 
    JOIN commands c 
     ON gc.command_id = c.id 
WHERE b.site_id = 1 
GROUP BY g.name 
ORDER BY g.status ASC 
+0

Stefanelli、ありがとう私はgroup_idからcommand_idまでの関係を持つgroups_commandsとそこから私は文字列を引っ張って実際に2つのテーブルになるので、コマンドの上にINNER JOINを使うことができますか? – Prix

+0

@Prix:そうです。これを反映するように答えを調整します。 –

+0

ありがとう、私はテーブルのサンプルで私の質問を更新して本当にありがとう、あなたの助けに感謝、私はまだすべてのこのジョイン、左、右インナーのものと良いではないです。 – Prix

関連する問題