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到無限
我覺得這可以通過左連接來完成(對於每個需要的選項,添加一個不同的左連接......但總有一天選項表可能會達到數百萬條記錄,而且我不知道該查詢的優化程度如何)