我在主表A中包含表B中的相关数据(属性)和数据透视表C,其中包含表A中行的属性。
表:
A:
id | name
B:
id | attr_name | value
C:
table_a_id | table_b_id
当然,表A中的任何行都可以具有许多属性。
我的问题是: 当我从表A中获取任何行时,我需要获得具有完全相同属性的其他行。是否可以使用一个查询执行此操作?
例如:
A:
id | name
1 | first item
2 | second item
3 | third item
4 | fourth item
5 | fifth item
B:
id | attr_name | value
1 | color | blue
2 | color | green
3 | length | 10
4 | length | 5
C:
table_a_id | table_b_id
1 | 1
1 | 3
2 | 1
2 | 4
3 | 3
4 | 1
4 | 3
5 | 1
5 | 3
当我从表A得到第1行(第1行有属性1和3)时,我应该只找到其他行4,5(因为只有4和5的属性1和3-与行1完全相同)。
当我得到第5行时,我希望找到其他行1,4(相同的属性)。
因此,我需要查询才能找到与所选行具有完全相同属性的行。
答案 0 :(得分:0)
您可以通过基于外键将表相互连接来实现:
SELECT
A1.*, B1.*
FROM
A AS A1
INNER JOIN C as C1
ON A1.id=C1.table_a_id
INNER JOIN B AS B1
C1.table_b_id=B1.id