Beide queries werken goed afzonderlijk, maar ik zou graag willen weten - daar ze nagenoeg hetzelfde zijn - of ik ze niet kan combineren als 1query ?
1:
sql="
SELECT
al.attribute_id, al.attribute_label,
la.lightspeed_id
FROM
lightspeed_types lt
JOIN
attributes_categories ac
ON ac.category_id = lt.category_id
JOIN
attributes_lang al
ON al.attribute_id = ac.attribute_id
AND al.lang_id = '".$lang."'
LEFT JOIN
lightspeed_attributes la
ON la.attribute_id = ac.attribute_id
WHERE
la.lightspeed_id IS NULL ";
en 2:
SELECT
sl.spec_id, sl.specification_label,
la.lightspeed_id
FROM
lightspeed_types lt
JOIN
specifications_categories sc
ON sc.category_id = lt.category_id
JOIN
specifications_lang sl
ON sl.spec_id = sc.spec_id
AND sl.lang_id = '".$lang."'
LEFT JOIN
lightspeed_attributes la
ON la.spec_id = sc.spec_id
WHERE
la.lightspeed_id IS NULL
[size=xsmall]Toevoeging op 21/12/2017 16:35:29:[/size]
Jan excuus voor mijn vorige reactie, ik heb me wat verder verdiept in UNION en heb de query nu zo:
SELECT
'att' as type,
al.attribute_id, al.attribute_label label,
la.lightspeed_id
FROM
lightspeed_types lt
JOIN
attributes_categories ac
ON ac.category_id = lt.category_id
JOIN
attributes_lang al
ON al.attribute_id = ac.attribute_id
AND al.lang_id = 'NL'
LEFT JOIN
lightspeed_attributes la
ON la.attribute_id = ac.attribute_id
WHERE
la.lightspeed_id IS NULL
UNION
SELECT
'spec',
sl.spec_id, sl.specification_label label,
la.lightspeed_id
FROM
lightspeed_types lt
JOIN
specifications_categories sc
ON sc.category_id = lt.category_id
JOIN
specifications_lang sl
ON sl.spec_id = sc.spec_id
AND sl.lang_id = 'NL'
LEFT JOIN
lightspeed_attributes la
ON la.spec_id = sc.spec_id
WHERE
la.lightspeed_id IS NULL
Die UNION ziet er eigenaardig uit. De onderdelen van een UNION moeten precies dezelfde kolommen teruggeven, anders zal het niet werken.
Zou je eens kunnen beschrijven wat voor recordset je precies uit je database wilt halen en wat de structuur is van de tabellen die hierbij betrokken zijn?
Die UNION ziet er eigenaardig uit. De onderdelen van een UNION moeten precies dezelfde kolommen teruggeven, anders zal het niet werken.
Deze opmerking is onjuist, doorgaans gaat het goed als het aantal kolommen per select maar gelijk is zodat de union klopt. De inhoud of kolomnamen hoeven niet hetzelfde te zijn, ook de tabel kan per per select in de union een andere zijn. Of dat zinvol is hangt af van de informatiebehoefte en datamodellering uiteraard. Daarnaast kan er wel een issue zijn met het datatype. Maar het kan werken!