16. august 2005 - 15:32Der er
23 kommentarer og 1 løsning
problem med multi inner joins
jeg har 4 tabeller packages der består af packageid,displayname,company services der består af serviceid,servicetype,displayname packageservices der består af packageid,serviceid userpackages der består af userid,packageid,expiredate
det jeg vil er at få alle packages der hører til et bestemt userid, finde ud af hvilke services der er i de packages og derefter hente de services der er i de relevante packages så jeg ender med at få: services.serviceid, services.servicetype, services.displayname, userpackages.expiredate
er det ikke muligt noget med inner join værk???
og så derefter sortere så den samme service ikke dukker op to gange(hvis der er dubletter) men at den derimod tager den med den nyeste expiredate
Det skal lige siges at det ikke nødvendigvis er den nyeste expiredate. Det er den største, og det behøver ikke nødvendigvis ikke være den sidste indsatte. Men mon ikke den seneste også er den største alligevel :o)
uden lige at have testet det.. hvad så med userid? det er nemlig det eneste info jeg har til at starte med og den ska kun arbejde med de packages et bestemt userid har
det slår mig også lige at packages tabellen slet ikke er nødvendig da det eneste man skulle bruge fra den var packageid men det står jo også i userpackages..
Hvis den tidligere sql virker, så prøv med denne: sql = "select packageservices.serviceid "&_ "from userpackages "&_ "inner join packageservices on packageservices.packageid=userpackages.packageid "&_ "where userpackages.userID = "& DitUserID
Hvis den også virker, kan vi gå til næste: sql = "select services.serviceid, services.servicetype, services.displayname "&_ "from userpackages "&_ "inner join packageservices on packageservices.packageid=userpackages.packageid "&_ "inner join services on services.serviceid=packageservices.serviceid "&_ "where userpackages.userID = "& DitUserID
Og til sidst denne: sql = "select services.serviceid, services.servicetype, services.displayname, max(userpackages.expiredate) "&_ "from userpackages "&_ "inner join packageservices on packageservices.packageid=userpackages.packageid "&_ "inner join services on services.serviceid=packageservices.serviceid "&_ "where userpackages.userID = "& DitUserID &" "&_ "group by services.serviceid, services.servicetype, services.displayname "
hey sorry jeg ik har svaret sad i møde hele dagen i går zzz cpufan: ja men jeg rettede selv de id's der fennec: yesh så spiller det :)))))) mange tak !! har lige et ekstra spørgsmål nu du er s¨vild til inner joins
hvis nu jeg vil joine den med endnu en tabel jeg har INNER JOIN services ON service_language.serviceid = services.serviceid har prøvet at smide den ind efter de andre men får en fejl ser siger "Not unique table/alias: 'services'"
aloha nu ved jeg ik om du holder øje med det her fennec men jeg har lige et opfølgningsspørgsmål hehehe jeg har tilføjet et felt i userpackage tabellen der definerer om en en pakke med services er trial eller ej men dvs at når jeg laver mit udtræk så må den godt ha samme service to gange så længe den ene er trial og den anden ikke er.. jeg prøvede at gøre sådan her:
SELECT services.serviceid, services.servicetype, services.displayname, userpackages.packageusage, MAX(userpackages.expiredate) AS expiredate FROM userpackages INNER JOIN packageservices ON packageservices.packageid=userpackages.packageid INNER JOIN services ON services.serviceid=packageservices.serviceid WHERE userpackages.brugerid = '1125' GROUP BY services.serviceid, services.servicetype, services.displayname ORDER BY services.serviceid ASC
men der tager den stadig kun hver service 1 gang selvom man har dem som både trial og almindelig
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.