我有一個非常糟糕的表結構的舊數據庫,我試圖用更好的結構創建這些表。爲此,我需要匹配兩個表,以獲取類別的ID。SQL與多個值的左連接
這裏是我的兩個舊錶:
表的categorys:
| ID | catname | cat1 | cat2 | cat3 | cat4 |
+----+--------------+--------+-------------+---------+------+
| 1 | bike | bike | NULL | NULL | NULL |
| 2 | accessories | bike | accessories | NULL | NULL |
| 3 | helmets | bike | accessories | helmets | NULL |
| 4 | lights | bike | accessories | lights | NULL |
| 5 | led | bike | accessories | lights | led |
表產品:我想擺脫列CAT1,2
| ID | productnr | productname | cat1 | cat2 | cat3 | cat4 |
+----+-------------+---------------+-------+-------------+---------+------+
| 1 | 451157 | productya | bike | accessories | NULL | NULL |
| 2 | 555523 | product11 | bike | accessories | helmets | NULL |
| 3 | 234432 | helmetxqa | bike | accessories | helmets | NULL |
| 4 | 666623 | lightblue | bike | accessories | lights | NULL |
| 5 | 542123 | foobarlight | bike | accessories | lights | led |
起初, 3和4來自產品表。
所以,我得到這樣一個結果:
| ID | catId | productnr | productname |
+----+---------+------------+---------------+
| 1 | 2 | 451157 | productya |
| 2 | 3 | 555523 | product11 |
| 3 | 3 | 234432 | helmetxqa |
| 4 | 4 | 666623 | lightblue |
| 5 | 5 | 542123 | foobarlight |
能有人告訴我,我應該如何進行查詢,檢查是否所有4貓的是匹配的,然後給的我cat'id?我試過這種方式,但我認爲這是錯誤的方式,因爲每次產品只有2或3只貓,我沒有得到相關的catId。所以它只適用於所有4只貓定義的產品。
SELECT
cat.`id`,
prod.`productnr`,
prod.`productname`
FROM
products as prod
LEFT JOIN
categorys as cat
ON
cat.`cat1` = prod.`cat1`
AND
cat.`cat2` = prod.`cat2`
AND
cat.`cat3` = prod.`cat3`
AND
cat.`cat4` = prod.`cat4`
如果有人對我也有用tipps,請告訴我。 ;-)
感謝您幫助我:)
你想要什麼? – carexcer 2014-10-20 21:21:35
您的空單元格是否爲空或''? – 2014-10-20 21:22:04
我改變了我的示例表。空單元格爲NULL! – emjay 2014-10-20 21:30:02