在2个表的交叉处搜索空值 - MariaDB

时间:2017-11-27 21:51:01

标签: mysql sql mariadb

在2个表格中搜索空值 - MariaDB

我需要在特定的表格中获取所需的数据。

我希望你帮助我解决这个问题,因为我不知道该怎么做。

Ligic:

Table libros
___________________________________
libro 1
libro 2
libro 3
libro 4

Table librerias
___________________________________
libreria 1 | libro 1
libreria 1 | libro 2
libreria 2 | libro 3
libreria 2 | libro 4
libreria 3 | libro 2
libreria 3 | libro 4
libreria 4 | libro 3
libreria 4 | libro 2

I want to this result
___________________________________
libreria 1 | libro 1 | libro 1
libreria 1 | libro 2 | libro 2
libreria 1 | libro 3 | NULL
libreria 1 | libro 4 | NULL
libreria 2 | libro 1 | NULL
libreria 2 | libro 2 | NULL
libreria 2 | libro 3 | libro 3
libreria 2 | libro 4 | libro 4
libreria 3 | libro 1 | NULL
libreria 3 | libro 2 | libro 2
libreria 3 | libro 3 | NULL
libreria 3 | libro 4 | libro 4
libreria 4 | libro 1 | NULL
libreria 4 | libro 2 | libro 2
libreria 4 | libro 3 | libro 3
libreria 4 | libro 4 | NULL

我已经实现了它,因为它花了我一点钱,我只是想到逻辑并且它出来了。

这是解决方案:



    SELECT x.libreria, x.libro, y.libro
    FROM (
        SELECT a.libreria, b.libro
        FROM librerias a
        LEFT JOIN libros b ON b.libreria=a.libreria
        GROUP BY a.libreria
    ) x
    LEFT JOIN librerias y ON y.libreria = x.libreria AND y.libro = x.libro;


1 个答案:

答案 0 :(得分:0)

这样的事情:

SELECT a.liberia, b.libros, c.libros
    FROM ( SELECT DISTINCT liberia FROM liberias ) AS a
    JOIN libros AS b
    LEFT JOIN liberia AS c  ON c.libros = b.libros
                           AND c.liberia = b.liberia