У меня есть три таблицы: categories
, content_info
и content
.
categories
содержит id
категории и идентификатор его parent
категории. content_info
содержит два столбца: entry_id
для идентификатора сообщения и cat_id
для идентификатора категории сообщения. content
содержит несколько столбцов о столбце – например, ID
, title
и т. Д. У меня есть переменная в URL-адресе parent_id, которая соответствует parent
элементу категории. Я хочу перечислить все POSTS (не КАТЕГОРИИ), которые относятся к категории с parent
значения parent_id.
Например, скажем, значение parent_id равно 5. Каждое сообщение может принадлежать категории с идентификатором 20, но эта категория относится к родительской категории (идентификатор которой равен 5). Я хочу перечислить все записи, которые относятся к категориям с parent
значением, чем бы то ни было текущим parent_id.
Есть ли способ сделать это с объединением MySQL вместо изменения PHP?
Это должно сделать это:
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>)
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