我曾经用sparql进行查询,但是我必须用我真的不了解语法的mysql来进行查询。
我有这三个表:

产品:

    id o
    1 p1
    2 p2


规格:

    id o
    3 sp1
    4 sp2


资源:

    id o
    1 s1
    3 s1
    2 s2
    4 s2


如我们所见,产品和规范可以与源不同的id连接,所以我想我必须在source> product和source> Specification之间进行2个内部联接的2个selects和2个selects之间的内部联接:

      SELECT * FROM
        (
            SELECT pt.o as po, st.id as psID, st.o as pso
            FROM source_test st
            inner join products_test pt on st.id = pt.id
        ) x INNER JOIN
        (
            SELECT st2.o as spo, st1.id as spsID,st1.o as spso
            FROM source_test st1
            inner join specification_test st2 on st1.id =st2.id
        ) y


这给出:

    po  psID    pso spo spsID   spso
    p1  1   s1  sp1 3   s1
    p2  2   s2  sp1 3   s1
    p1  1   s1  sp2 4   s2
    p2  2   s2  sp2 4   s2


现在我需要过滤具有相同来源(pso),(spso)的产品(po)和规格(spo)

我是在以正确的方式做事,这可能是延续还是获得一个好的查询:

    po  spo spso
    p1  sp1 s1
    p2  sp1 s2


提前致谢。

最佳答案

select p.o, s.o, so.o
from products p
    left join specification s
    left join source so on p.id=s.id and p.id = so.id;

10-08 18:47