31. oktober 2011 - 16:26
Der er
10 kommentarer og 1 løsning
spejl af artikel
Jeg har en tabel med artikler "tblartikler" hvor feltet "position" definerer hvilket gruppe den tilhører. En artikel kan også ligge i andre grupper. Derfor har jeg tblspejl som har følgende felter: id, vareid, position. Nu skal jeg så have lavet en sql der henter artikler fra tblartikler hvor den også henter spejlprodukter. Jeg har følgende, men som slet ikke henter artikler, hvis der ikke er et spejlartikel tilhørende den gruppe. SELECT ta.id, ta.varetekst, ta.type, ta.navn, ta.salgspris, ta.listepris, ta.visibility, ta.totalvaegt, ta.lastevne, ta.bredde, ta.laengde, ta.hoejde, ta.frontpage, ta.vaegt, ta.lagerfoeres, ta.producentid, tst.antal as beholdning FROM tblartikler AS ta, tblspejl AS tsp LEFT JOIN tblstock as tst ON tst.ean = ta.ean WHERE (ta.position = '41' AND ta.visibility) OR (tsp.position = '41' AND tsp.vareid = ta.id AND ta.visibility) Så problemet er altså, at hvis der ingen spejlartikler er i gruppen, så henter den slet ingen artikler. Er det noget med en JOIN OUTER/INNER/LEFT?
Annonceindlæg fra Infor
31. oktober 2011 - 16:35
#1
tblartikler LEFT JOIN tblspejl ON et eller andet lyder som det du har brug for
31. oktober 2011 - 16:36
#2
tblartikler LEFT JOIN tblspejl ON tsp.vareid = ta.id vil jeg tro
31. oktober 2011 - 16:46
#3
Den her bør finde 6 produkter hvoraf den ene er et spejl. Men den finder kun de 5. SELECT ta.id, ta.varetekst, ta.type, ta.navn, ta.salgspris, ta.listepris, ta.visibility, ta.totalvaegt, ta.lastevne, ta.bredde, ta.laengde, ta.hoejde, ta.frontpage, ta.vaegt, ta.lagerfoeres, ta.producentid, tst.antal as beholdning FROM tblartikler AS ta LEFT JOIN tblstock as tst ON tst.ean = ta.ean LEFT JOIN tblspejl AS tsp ON tsp.position = '41' AND tsp.vareid = ta.id AND ta.visibility WHERE ta.position = '41' AND ta.visibility
31. oktober 2011 - 17:33
#4
Og den sidste bliver ikke frasorteret af WHERE ?
31. oktober 2011 - 17:35
#5
den er i hvert fald synlig. spejlproduktet ligger naturligvis ikke i position 41, men i en helt anden. Er det et problem? :)
31. oktober 2011 - 17:38
#6
tsp.position fortæller at den skal være spejlet i position 41, og ikke at produktet i tblartikler skal have defineret position 41.
02. november 2011 - 08:44
#7
Hvis du skriver en select (A) der henter artiklerne spejlet og en select (B) der henter alle de rigtige artikler. Kan du oprette en UNION mellem dem. A UNION B
02. november 2011 - 09:39
#8
Tak for svar Jens. Jeg kunne godt bruge et kodeeksempel.
02. november 2011 - 10:59
#9
Umiddelbar burde du kunne skrive dem selv. Men tror det var en dårlig ide alligevel da det at finde spejlene kræver, at du først finder varens id.
02. november 2011 - 17:02
#10
Vil det sige at der slet ikke er en løsning?
23. juli 2012 - 15:08
#11
Tak for deltagelsen
Computerworld tilbyder specialiserede kurser i database-management