02. september 2006 - 19:04Der er
6 kommentarer og 1 løsning
left join - mangler data efter where-sætning
bruger denne SQL til at hente data ud fra tabellerne category og sub.
SELECT category.navn, sub.navn, category.online, category.deleted FROM category LEFT JOIN sub ON category.id = sub.category_id WHERE (((category.online)=True) AND ((category.deleted)=False));
Problemet er, at også sub.online og sub.deleted skal være henholdsvis true og false, men hvis jeg sætte denne ekstra betingelse på får jeg kun poster retur der opfylder alle fire krav. Hvordan får jeg lavet min SQL så de to sidste betingelser også bliver opfattet som en slags left join?
I Oracle kan man fx skrive sub.deleted(+) = false - men hvordan gøres i Access?
SELECT category.navn, sub.navn, category.online, category.deleted FROM category LEFT JOIN sub ON category.id = sub.category_id WHERE category.online=True AND category.deleted=False AND sub.online=True AND sub.deleted=False
Hvad eksakt mener du med "... får jeg kun poster retur der opfylder alle fire krav"? Det er jo definitionen af en ADND at alle kravene skal være opfyldt.
SELECT category.navn, sub.navn, category.online, category.deleted FROM category LEFT JOIN sub ON category.id = sub.category_id WHERE category.online=True AND category.deleted=False AND ( (sub.online=True AND sub.deleted=False) OR (sub.online IS Null AND sub.deleted IS NULL) )
SELECT category.id AS cid, category.navn AS cnavn, sub.id AS sid, sub.navn AS snavn FROM category LEFT JOIN sub ON category.id = sub.category_id WHERE category.online = True AND category.deleted = False AND sub.online = True AND sub.deleted = False UNION ALL SELECT category.id AS cid, category.navn AS cnavn, NULL AS sid, NULL AS snavn FROM category WHERE category.online = True AND category.deleted = False AND id NOT IN (SELECT sub.category_id FROM sub WHERE sub.online = TRUE AND sub.deleted = FALSE) ORDER BY cnavn, snavn
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.