我试图在两个通过外键连接的表中搜索。
问题是,我需要以某种方式"合并"两列名为"属性" 来自每个表,并使用IN()使用数组在其中搜索,并使用HAVING()进行完全匹配计数。
表看起来像这样
First table
----------
id INT primary key
name VARCHAR
attribute INT
etc..
Second table
----------
id INT primary key
attribute INT
fg_first_table INT foreign key
例如,我有一个内爆阵列(1,2,4,5)。 数字1存储在第一个表中,其余的2,4,5存储在第二个表中。如何从第一个表中获取ID这两个表中的数字匹配属性col?
甚至可能吗?感谢。
更新:表格数据 从第一个表中选择一个ID,其中ARRAY(1,2,4,5)匹配两个表中的cols属性。
First table
----------
id name attribute
-----------------------------------------------------
1 Something 1
Second table
----------
id attribute fg_first_table
-----------------------------------------------------
1 2 1
2 4 1
3 5 1
答案 0 :(得分:0)
所以我必须自己解决这个问题。在这里。
SELECT u.id, COUNT(DISTINCT(u.attribute)) AS attribute_count
FROM (
SELECT id, attribute FROM first_table
UNION
SELECT fg_first_table AS id, attribute FROM second_table
) AS u
WHERE
u.attribute IN (1, 2, 4, 5)
GROUP BY u.id
HAVING attribute_count = 4
ORDER BY RAND();
谢谢大家,感谢您的帮助。