我正在构建在新网站上过滤结果的功能。每个结果包含来自三个单独表格的数据(如下所示为A,B和C)。映射表(D到K)包含我的大多数过滤器所基于的数据。
我希望返回包含A.id,A.name,B.rating,C.price列的行,其中DK包含B上的某些数据。我所拥有的过滤器内容是来自映射的一系列ID表。在返回一个A,B,C关系之前,我可以拥有尽可能少的过滤器,或者多达20个ID。此外,每页显示的结果限制为12个。
想到上面的炸薯条我的大脑。我已经在下面最好地绘制了表格的结构。我们将非常感谢您提供的任何帮助。谢谢!
架构信息 编辑
A: id INT PRIMARY, name VARCHAR(255)
B: id INT PRIMARY, a_id INT, rating FLOAT
C: id INT PRIMARY, b_id INT, price DECIMAL(10, 2)
映射表D-K: b_id INT, ?_id INT
D-K: id INT PRIMARY, name VARCHAR(255)
答案 0 :(得分:0)
听起来你想做一些JOIN
。
SELECT A.name, B.rating, C.price
FROM A
JOIN B ON A.id = B.a_id
JOIN C ON B.id = C.b_id
然后,要从其他表中进行过滤,您也可以加入它们:
SELECT A.name, B.rating, C.price
FROM A
JOIN B ON A.id = B.a_id
JOIN C ON B.id = C.b_id
JOIN BDmapping ON B.id = BDmapping.b_id
JOIN BEmapping on B.id = BEmapping.b_id
WHERE BDmapping.d_id = <some value>
AND BEmapping.e_id = <some value>
理想情况下,您只想加入实际需要用于任何给定查询的表格 - 如果您没有对给定字段进行过滤,请不要加入其表格。