Наличие тех таблиц:
table_n1:
| t1_id | t1_name |
| 1 | foo |
table_n2:
| t2_id | t1_id | t2_name |
| 1 | 1 | bar |
Мне нужен запрос, который дает мне два, закончитесь:
| names |
| foo |
| foo / bar |
Но я не могу выяснить правильный путь. Я записал этому:
SELECT
CONCAT_WS(' / ', table_n1.t1_name, table_n2.t2_name) AS names
FROM
table_n1
LEFT JOIN table_n2 ON table_n2.t1_id = table_n1.t1_id
это работает на половину: этот единственный возврат строка на 2 ° (в примере выше):
| names |
| foo - bar |
Этот возврат запроса, который 'родительский элемент' (table_n1) называет только, когда он не имеет 'childs' (table_n2).
Как я могу зафиксировать его?
Использование UNION
и изменение LEFT JOIN
на INNER JOIN
должно дать правильный результат.
SELECT table_n1.t1_name AS names
FROM table_n1
UNION ALL
SELECT CONCAT_WS(' / ', table_n1.t1_name, table_n2.t2_name) AS names
FROM table_n1
INNER JOIN table_n2 ON table_n2.t1_id = table_n1.t1_id