#mysql #sql #left-join #dynamic
#mysql #sql #соединение слева #динамический
Вопрос:
Я работал с joomla 1.6, и мне нужно использовать один и тот же столбец таблицы дважды:
существуют категории, и у каждой категории могут быть подкатегории.
в другой таблице у меня есть идентификатор, указывающий на категорию, поэтому затем я создаю объединение, чтобы заменить идентификатор на ‘title’ (описание категории)
допустим, у меня есть эти категории:
- PARENT1
* SUB1
* SUB2
- PARENT2
* SUB1
* SUB2
TABLE CATEGORIES:
id | title | parent_id
--------------------------------------------
0 | ROOT | NULL
1 | PARENT1 | 0
2 | SUB1 | 1
3 | SUB2 | 1
4 | PARENT2 | 0
5 | SUB1 | 4
6 | SUB2 | 4
--------------------------------------------
TABLE DATA:
id | name | cat_id
--------------------------------------------
0 | p1_sub1 | 2
1 | p1_sub1 | 2
2 | p1_sub2 | 3
3 | p2_sub1 | 5
4 | p2_sub2 | 6
5 | p1_sub2 | 3
6 | p2_sub2 | 6
--------------------------------------------
итак, я использую этот запрос, чтобы получить соответствующий заголовок для cat_id:
SELECT data.name, cat.title FROM table_data AS data
LEFT JOIN table_categories AS cat ON data.cat_id = cat.id
это работает нормально, но теперь я также хочу получить title
из parent category
:
TABLE RESULT:
name | title | parent_title
--------------------------------------------
p1_sub1 | SUB1 | :S
--------------------------------------------
я имею в виду, что для этого я должен выполнить другое объединение cat.parent_id = cat.id
, но мне нужно добавить еще один title
столбец в запрос, чтобы…
есть идеи????
СПАСИБО!!!
Ответ №1:
Это должно сработать:
SELECT data.name AS name, cat.title AS title, cat2.title AS parent_title
FROM table_data AS data
LEFT JOIN table_categories AS cat ON data.cat_id = cat.id
LEFT JOIN table_categories AS cat2 ON cat.parent_id = cat2.id