24. marts 2005 - 01:43Der er
12 kommentarer og 1 løsning
inner join i ASP med 8 tabeller
jeg skal lige have lidt førstehjælp til inner, left og right join
altså jeg har en stribe tabeller Tabel1 indeholder medlems info Tabel2 indeholder medlemsstatus Tabel3 indeholder medlemslocation Tabel4 indeholder holdmedlemmer Tabel5 indeholder hold Tabel6 indeholder det indtastede i de ekstra medlemsfelter Tabel7 indeholder ekstra medlemsfelter Tabel8 indeholder ekstra medlemsfelter kategorier
hvis jeg bare kører inner join hele vejen igennem poster den den samme person lige så mange gange der er "ekstra medlemsfelter kategorier" * "det indtastede i de ekstra medlemsfelter"
altså hvis der er 2 ekstra medlemsfeltkategorier og medlemmet har indtastet info i 9 ekstra medlemsfelter så poster den personen 2*9 = 18 gange efter hinanden, jeg er lidt ny indenfor inner join og har dælme svært ved helt at fatte dem, en forklaring skåret ud i pap og bøjet i neon vil være et hit :D
kan det ikke lade sig at gøre i en sql streng eller skal jeg lave flere, min plan er at den skal poste et medlem 1 gang med de forskellige data der er i tabellerne også hvis der i den pågældende tabel er flere posts på det samme medlem.
er det ikke muligt hvis man har en join fra tabel1 til tabel2 (hvor tabel2 rummer flere records) at få dem skrevet ud 1 gang i stedet for de gange recorden eksisterer i tabel2 ?
altså hvis man har en Do While Not rs.EOF hvorfor henter den så de samme data feks. 2 gange hvis tabel2 indeholder medlemmet fra tabel1 2 gange
Her er der lidt SQL, som du lige selv kan stoppe ind i en streng og prøve med:
SELECT A.memberid, A.name, A.realname, A.birthday, A.location, A.email, A.homepage, A.customstatus, A.status, A.hidemember, B.displayorder, B.statusname, C.memberlocationid, C.locationid FROM (A INNER JOIN C ON A.memberid = C.memberid) INNER JOIN B ON A.status = B.statusid WHERE (((A.hidemember)=0)) ORDER BY B.displayorder, B.statusname;
Dvs. Navn1 bliver gentaget tre gange, fordi det er det navn, der hører til de pågældende telefonnumre. Sådan er det, for det er det man beder om, med denne forespørgsel.
Som jeg læser dit spørgsmål, så er det, som du vil undgå. Er det korrekt?
Selve den forespørgsel som du leder efter, kan jeg ikke lige finde ud af (er lidt dum i hovedet i dag), og det er faktisk en af de svære, fordi det er på tværs af poster. Men den sidste forespørgsel kan jeg klare:
SELECT A.memberid, Count(C.memberlocationid) AS Antalmemberlocation FROM A INNER JOIN C ON A.memberid = C.memberid GROUP BY A.memberid;
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.