0
我有两个表:Mysql的寻找到给定的值在所有子记录发现父记录
Parent:
+-----------+-----------+
| parent_id | something |
+-----------+-----------+
| 123 | x |
| 231 | y |
| 455 | z |
+-----------+-----------+
Relations:
+-----+----------+--------------+--------------+
| id | parent_id| option_name | option_value |
+-----+----------+--------------+--------------+
| 1 | 123 | Colors | aaa |
| 2 | 231 | Colors | bbb |
| 3 | 456 | Colors | aaa |
| 4 | 456 | Country | ddd |
+-----+----------+--------------+--------------+
我想要做的,是采取从在关系表我想所有选项父的所有行:
如:
SELECT * FROM Parent P
LEFT JOIN Relations R ON R.parent_id = P.parent_id
WHERE option_name = Colors
AND option_value = aaa
AND option_name = Country
AND option_value = ddd
以上查询我想一行PARENT_ID 455退回,因为它有两个选项。
PS: - 上面的查询是错误的,我给它只是作为我想要做 一个例子 - 我将有超过2个选项 - >其实际上从1到无限
我觉得这可以通过左连接来完成(对于每个需要的选项,添加一个不同的左连接......但总有一天选项表可能会达到数百万条记录,而且我不知道该查询的优化程度如何)