Получение хлебных крошек всех родительских строк в одном запросе SQL с таблицей языков - PullRequest
1 голос
/ 11 апреля 2020

Здравствуйте, мне нужно взять все ссылки на крошки (URL, текст) в одном mysql запросе. С текущим языком, языковые переводы (текст) в таблице pages_text. Ulr и parent_id на страницах таблицы.

Поэтому мне нужны строки всех родителей с текущим языком.

У меня есть 2 таблицы

1: страницы

имя идентификатора URL-адрес parent_id

1 Home       0        (some url)
2 About      1        (some url)
3 Contact    1        (some url)
4 Legal      2        (some url)
5 Privacy    4        (some url)
6 Products   1        (some url)
7 Support    1        (some url)

2: pages_text

идентификатор имени pages_id languages_id

1 Main                 0        2
2 About                1        1
3 (different languges) 1        3
4 (different languges) 2        4
5 (different languges) 4        2
6 (different languges) 1        1
7 (different languges) 1        2

Существует несколько рабочих кодов, в которых одна таблица получает полную строку родителей.

Можете ли вы помочь мне изменить этот код для 2 таблиц.

id  name    parent_id
---------------------------
1   Home        0
2   About       1
3   Contact     1
4   Legal       2
5   Privacy     4
6   Products    1
7   Support     1



SELECT T2.id, T2.name
    FROM (
        SELECT
            @r AS _id,
            @p := @r AS previous,
            (SELECT @r := parent_id FROM table1 WHERE id = _id) AS parent_id,
            @l := @l + 1 AS lvl
        FROM
            (SELECT @r := 5, @p := 0, @l := 0) vars,
            table1 h
        WHERE @r <> 0 AND @r <> @p) T1
    JOIN table1 T2
    ON T1._id = T2.id
    ORDER BY T1.lvl DESC

Спасибо.

1 Ответ

0 голосов
/ 13 апреля 2020

Рабочий код полной цепочки панировочных сухарей с языками 2 таблицы:

SELECT T2.id, T2.name, T3.plates_title
    FROM (
        SELECT
            @r AS _id,
            @p := @r AS previous,
            (SELECT @r := parent_id FROM pages WHERE id = _id) AS parent_id,
            @l := @l + 1 AS lvl
        FROM
            (SELECT @r := 121, @p := 0, @l := 0) vars,
            pages h
        WHERE @r <> 0 AND @r <> @p) T1
    JOIN pages T2
    ON T1._id = T2.id
    JOIN pages_text T3 
    ON T1._id = T3.pages_id where T3.languages_id = 1
    ORDER BY T1.lvl DESC
...