Запрос SQL, перечисляющий Родительские элементы и childs с соединениями, как к отличному их?

Наличие тех таблиц:

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).

Как я могу зафиксировать его?

1
задан Strae 8 June 2010 в 08:30
поделиться

1 ответ

Использование 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 
2
ответ дан 2 September 2019 в 23:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: