Вопрос о комбинировании данных из двух таблиц с отношением «многие ко многим» - PullRequest
1 голос
/ 16 января 2011

Может ли кто-нибудь объяснить (или дать ссылку на хороший учебник) о том, как объединить данные из двух таблиц, связанных с «таблицей ссылок»?

  • Одна таблица содержит вопрос
  • Одна таблица содержит категории
  • Одна таблица содержит вопрос_категории

Каждый вопрос относится ко многим категориям, и в каждой категории может быть много вопросов.

Таблица ссылок содержит два идентификатора, categoryID и questionID (они являются первичными ключами в таблице) с внешним ключом для категории и таблицы вопросов.

Но я не совсем понимаю, как я могу написать SQL-выборку, которая, например, отображает, к какому типу вопроса категории относится идентификатор 2.

И подробное объяснение будет НАМНОГО оценено!

Заранее спасибо.

1 Ответ

2 голосов
/ 16 января 2011

Для соединения таблиц используется предложение JOIN.

SELECT Q.* 
FROM question Q
  INNER JOIN question_categories QC
    ON q.questionId = QC.questionID
WHERE QC.categoryID = 2

Чтобы разбить его:

SELECT Q.*  -- Get all fields from the alias Q (though you should specify fields)
FROM question Q -- From the question table, aliased Q
  INNER JOIN question_categories QC -- Join on the question_categories table (QC)
    ON q.questionId = QC.questionID -- Using the questionIds on both tables as join criteria
WHERE QC.categoryID = 2 -- constrain to only categoryId of 2

Редактировать (пример для категорий по questionId) в соответствии с запросом в комментариях:

SELECT C.* 
FROM category C
  INNER JOIN question_categories QC
    ON C.categoryId = QC.categoryID
WHERE QC.questionID = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...