Sql查询列出父亲和孩子的连接,如何区分他们?

Sql查询列出父亲和孩子的连接,如何区分他们?,sql,mysql,join,Sql,Mysql,Join,拥有这些表格: 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

拥有这些表格:

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°行(在上面的示例中):

此查询仅在没有“childs”(表n2)时返回“父”(表n1)名称


如何修复它?

使用
联合
并将
左连接
更改为
内部连接
应该会得到正确的结果

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