Несколько объединений базы данных - PullRequest
3 голосов
/ 30 января 2011

У меня есть три таблицы: categories, content_info и content.

  • Таблица categories содержит категорию id и идентификатор ее категории parent.
  • content_info содержит два столбца: entry_id для сообщенияID и cat_id для идентификатора категории сообщения.
  • Таблица content содержит несколько столбцов о сообщении - например, ID, title и т. Д.

У меня есть переменная в URL-адресе parent_id, которая соответствует parent категории.Я хочу перечислить все ПОЧТЫ (не КАТЕГОРИИ), которые принадлежат категории с parent значения parent_id.

Например, скажем, значение parent_id равно 5. Каждое сообщение может принадлежать категории сидентификатор 20, но эта категория принадлежит родительской категории (чей идентификатор 5).Я хочу перечислить все сообщения, которые относятся к категориям, со значением parent, каким бы ни был текущий parent_id.

Есть ли способ сделать это с помощью соединений MySQL вместо изменения PHP?

Ответы [ 2 ]

3 голосов
/ 30 января 2011

Это должно сделать это:

SELECT c.* FROM content
    JOIN content_info ci ON ci.entry_id=c.id
    JOIN categories cat ON cat.id=ci.cat_id
WHERE cat.parent_id=<parent_id>

Это возвращает все сообщения (content строки), которые принадлежат категории, родитель которой является parent_id

Или с подзапросами:

SELECT c.* FROM content
JOIN content_info ci ON ci.entry_id=c.id
WHERE ci.cat_id IN (SELECT id 
                    FROM categories cat 
                    WHERE cat.parent_id=<parent_id>)
0 голосов
/ 30 января 2011
SELECT c.*
FROM content c,
     categories cat,
     content_info ci
WHERE c.id = ci.entry_id
AND   cat.id = ci.cat_id
AND   cat.parent_id = 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...