假设我们有树表。
Products Fields Fields Value
---------------- ------------- --------------
pid catid fid catid fid pid value
-------|-------| -----|------- ------|-----|--------
1 1 1 1 1 1 25%
2 1 2 1 1 2 32.5%
3 2 2 1 45%
2 2 42%
3 1 17.3%
3 2 21%
通常的方法是在一个查询中选择Products
并循环遍历结果集(RS1
)。
然后,我们为每行选择Fields
catid
(RS2
)。
然后使用RS2
执行相同的操作以选择“字段值”。
只有问题是性能问题,由于执行大量查询`,当每个表中有很多行时,性能会降低。
您是否建议我更好地执行减少查询?
修改
我希望在一个方框中显示每个产品,并为每个产品显示其正确值的字段。将树表连接在一起将返回FieldValue
中每个Products
的重复值,并且不能在循环中使用。
答案 0 :(得分:2)
猜猜你需要什么,试试这个:
SELECT f.catid, fv.* FROM Fields f
INNER JOIN Products p
ON f.catid = p.catid
INNER JOIN FieldsValue fv
ON fv.fid = f.fid AND fv.pid = p.pid
答案 1 :(得分:1)
SELECT *
FROM Products
NATURAL JOIN Fields
NATURAL JOIN FieldsValue;
答案 2 :(得分:0)
使用加入语法:
SELECT * FROM Products as P
LEFT JOIN FieldsValue as FV ON FV.PID = P.PID
LEFT JOIN Fields as F on F.fid = FV.fid
答案 3 :(得分:0)
您可以使用left join
:
select *
from Products p
left join Fields f on f.catid = p.catid
left join `fields value` fv on fv.fid = f.fid on fv.pid = p.pid
where p.pid = 1