Ik heb een paar (fictieve) tabellen.
1) 'vendor' dat een bouwer aangeeft.
2) 'vendor_category' dat bouwer-specifieke categorieën aangeeft (gekoppeld via FK), met een nummeriek veld 'order' dat de bouwer-specifieke categorie volgorde aangeeft.
3) 'product_category' dat alle mogelijke waarden van een bouwer-specifieke categorie aangeeft (gekoppeld via FK).
4) 'user_category' een koppeltabel met 'user' als ene FK en 'product_category' als andere FK.
5) 'user' dat een eindgebruiker aangeeft.
Nu kan het voorkomen dat de 'user_category' niet alle mogelijke 'vendor_category' waarden dekt en zou ik in een query daarop graag in de juiste volgorde NULL terugkrijgen. Bijvoorbeeld: er zijn 5 bouwer-specifieke categorieen in vendor_category en daarvan zijn slechts de eerste, derde en vijfde ingevuld in user_category en dan zou ik graag in 1 query de waarden willen hebben in vorm van waarde1, NULL, waarde3, NULL, waarde5.
Echter kan ik dit na diverse pogingen niet bewerkstelligen. Al mijn pogingen leiden tot slechts waarde1, waarde3, waarde5 of juist ALLE mogelijke waarden, of juist ALLE mogelijke waarden als NULL behalve waarde1, waarde3 en waarde5.
Deze query bijvoorbeeld retourneert waarde1, waarde3, waarde5.
Hoe krijg ik hier waarde1, NULL, waarde3, NULL, waarde5 uit?
In de werkelijkheid wordt deze query als subquery gebruikt dat een ARRAY retourneert, maar dit is verder niet van belang lijkt me.
1) 'vendor' dat een bouwer aangeeft.
2) 'vendor_category' dat bouwer-specifieke categorieën aangeeft (gekoppeld via FK), met een nummeriek veld 'order' dat de bouwer-specifieke categorie volgorde aangeeft.
3) 'product_category' dat alle mogelijke waarden van een bouwer-specifieke categorie aangeeft (gekoppeld via FK).
4) 'user_category' een koppeltabel met 'user' als ene FK en 'product_category' als andere FK.
5) 'user' dat een eindgebruiker aangeeft.
Nu kan het voorkomen dat de 'user_category' niet alle mogelijke 'vendor_category' waarden dekt en zou ik in een query daarop graag in de juiste volgorde NULL terugkrijgen. Bijvoorbeeld: er zijn 5 bouwer-specifieke categorieen in vendor_category en daarvan zijn slechts de eerste, derde en vijfde ingevuld in user_category en dan zou ik graag in 1 query de waarden willen hebben in vorm van waarde1, NULL, waarde3, NULL, waarde5.
Echter kan ik dit na diverse pogingen niet bewerkstelligen. Al mijn pogingen leiden tot slechts waarde1, waarde3, waarde5 of juist ALLE mogelijke waarden, of juist ALLE mogelijke waarden als NULL behalve waarde1, waarde3 en waarde5.
Deze query bijvoorbeeld retourneert waarde1, waarde3, waarde5.
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| SELECT pc.value FROM product_category pc INNER JOIN user_category uc ON uc.pc_id = pc.id AND uc.id = 1 LEFT JOIN vendor_category vc ON vc.id = pc.vc_id ORDER BY vc.order |
Hoe krijg ik hier waarde1, NULL, waarde3, NULL, waarde5 uit?
In de werkelijkheid wordt deze query als subquery gebruikt dat een ARRAY retourneert, maar dit is verder niet van belang lijkt me.