我曾经用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;