У меня есть три таблицы: 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