remi sture Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 (endret) Hvordan kan jeg skrive ut hver kontaktid kun én gang? Kontaktpersonene kan ligge i flere klasser, så derfor blir de skrevet ut flere ganger. http://norskwebforum.no/pastebin/2028 Tabell-data: http://norskwebforum.no/pastebin/2030 http://norskwebforum.no/pastebin/2031 http://norskwebforum.no/pastebin/2032 Endret 31. mars 2006 av remi sture Lenke til kommentar
roac Skrevet 31. mars 2006 Del Skrevet 31. mars 2006 Hvordan kan jeg skrive ut hver kontaktid kun én gang? Kontaktpersonene kan ligge i flere klasser, så derfor blir de skrevet ut flere ganger. http://norskwebforum.no/pastebin/2028 5846074[/snapback] Tja, det er flere måter å fikse dette på, men det varierer selvfølgelig med databaseimplementasjon og hva du ønsker å oppnå. Dersom du ønsker å aggregere opp klassene slik at disse listes som en kommaseparert liste (eller tilsvarende) så blir du nødt til å bruke en av følgende: Custom Aggregation (f eks Oracle 9/10, MSSQL 2005) While Loop (evt Cursor) for de som ikke støtter egendefinerte aggregeringer Dersom du ikke trenger klassenavnene kan du utelate de i sin helhet, bortsett fra en corelated subquery for å sjekke at vedkommende går i en av klassene. Håper dette var til hjelp, og hvis det var noe du savnet i svaret så vil informasjon om hva du ønsker å oppnå, samt informasjon om databaseplattform, være en fordel. Lenke til kommentar
remi sture Skrevet 31. mars 2006 Forfatter Del Skrevet 31. mars 2006 Dette er snakk om MySQL 4.0, så der er vel ikke cursors og slikt støttet? Lenke til kommentar
remi sture Skrevet 31. mars 2006 Forfatter Del Skrevet 31. mars 2006 Fikk hjelp på Norsk Webforum: SELECT DISTINCT kontakt.kontaktid, kontakt.navn, kontakt.epost FROM lag RIGHT JOIN kontakt ON ( lag.kontaktid = kontakt.kontaktid ) LEFT JOIN klasse ON ( lag.klasseid = klasse.klasseid ) WHERE klasse.klasseid =8 || klasse.klasseid =9 || klasse.klasseid =10 || klasse.klasseid =11 || klasse.klasseid =12 || klasse.klasseid =15 || klasse.klasseid =16 || klasse.klasseid =17 || klasse.klasseid =18 ORDER BY kontakt.epost Lenke til kommentar
roac Skrevet 1. april 2006 Del Skrevet 1. april 2006 Fikk hjelp på Norsk Webforum: SELECT DISTINCT kontakt.kontaktid, kontakt.navn, kontakt.epost FROM lag RIGHT JOIN kontakt ON ( lag.kontaktid = kontakt.kontaktid ) LEFT JOIN klasse ON ( lag.klasseid = klasse.klasseid ) WHERE klasse.klasseid =8 || klasse.klasseid =9 || klasse.klasseid =10 || klasse.klasseid =11 || klasse.klasseid =12 || klasse.klasseid =15 || klasse.klasseid =16 || klasse.klasseid =17 || klasse.klasseid =18 ORDER BY kontakt.epost 5847556[/snapback] Var jo mer eller mindre det samme som jeg sa, droppe klasse i utlistingen. Forøvrig så bør du se på IN, jeg regner med at MySQL også støtter det: SELECT DISTINCT kontakt.kontaktid, kontakt.navn, kontakt.epost FROM lag RIGHT JOIN kontakt ON ( lag.kontaktid = kontakt.kontaktid ) LEFT JOIN klasse ON ( lag.klasseid = klasse.klasseid ) WHERE klasse.klasseid IN (8,9,10,11,12,15,16,17,18) ORDER BY kontakt.epost Lenke til kommentar
remi sture Skrevet 3. april 2006 Forfatter Del Skrevet 3. april 2006 Tusen takk for tipset med IN! Veldig nyttig! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå