2012-02-02 9 views
2

にネストされた方法で参加する:が、これは私のスキームであるMySQLの

board(name, catId) 
cat(id, catName) 
userBoard(boardName, username) 
msg(boardName, username, title, text) 

ユーザ名が「foo」という仮定です。私は次のことを達成しようとしていますが、どのようにそれを行う手がかりがありません。私は、MySQLのクエリでなければなら何

userBoard.username = "foo" AND userBoard.boardName = board.name AND board.catId = cat.id AND msg.username = "foo" AND msg.boardName = board.name

の自然の参加に興味を持っていますか?

UPDATE: 私はこれ試してみてください私は、次の返された値

`board.name, cat.catName, msg.title, msg.text` 

答えて

1

に興味を持っていることを言及するのを忘れてしまった:あなたは何をすべきかに基づいて参加の種類を選択する必要があります

Select b.name, c.catName, m.title, m.text 
from board b 
    inner join Cat c on b.catId = c.id 
    inner join userBoard ub on b.name = ub.boardName 
    inner join msg on m b.name = m.boardName 
where ub.username = "foo" and m.username = "foo" 

をあなたのテーブルから選択したい。

+0

これは問題であり、巨大なテーブルを作成する可能性があります。私は自分の論理的条件の順番でテーブルに行きたいと思う。つまり、最初にすべてのユーザーボードを取得し、catIdなどと組み合わせます。 – MrRoth

+0

@MrRoth、これは論理条件が書かれた方法です。巨大なテーブルは作成されません。あなたの論理的条件に合致し、なぜそれが問題なのかを試してみてください。 –

+0

条件の1つが破損しているテーブルを作成すべきではありません。ここでは最初にテーブルを作成し、次に条件をチェックします。そして、私はあなたが4行目で 'on'を忘れてしまったと思います。 – MrRoth

0
select b.name, c.catName, m.title, m.text 
from board b 
    inner join cat c on b.catId = c.id 
    inner join userBoard ub on b.name = ub.boardName 
    inner join msg m on b.name = m.boardName 
where ub.username = "foo" and m.username = "foo" 
関連する問題