внутреннее соединение вложенным способом на MySQL - PullRequest
2 голосов
/ 02 февраля 2012

это моя схема:

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

предполагается, что имя пользователя - "foo". Я пытаюсь добиться следующего, но понятия не имею, как это сделать. меня интересует естественное соединение

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

Каким должен быть запрос для MySQL?

UPDATE: я забыл упомянуть, что меня интересуют следующие возвращаемые значения

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

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Попробуйте это:

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 голосов
/ 02 февраля 2012
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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...