HDSoftware Skrevet 26. mars 2009 Del Skrevet 26. mars 2009 Heisan Finnes det en måte å filtrere en spørring slik at dubletter ikke kommer over? Har et relasjonsregister mot en prosjekt tabell som inneholder forskjellige enheter prosjektet er koblet til. I tillegg på disse postene så er det en kobling til kontakter. Jeg vil ha alle kontaktene som har tilhørighet mot prosjektet, men jeg vil ha dem kunn en gang. Er dette mulig i et SELECT uttrykk? Lenke til kommentar
blackbrrd Skrevet 26. mars 2009 Del Skrevet 26. mars 2009 DISTINCT Bruk av DISTINCT er ofte brukt pga dårlig design. Lenke til kommentar
Gjest Slettet+98172347 Skrevet 27. mars 2009 Del Skrevet 27. mars 2009 SELECT DISTINCT kontakt FROM prosjekttabell; Hvor "kontakt" f.eks er id eller navn på kontaktpersonen og "prosjekttabell" er navnet på tabellen som inneholder prosjektene. Lenke til kommentar
kaffenils Skrevet 28. mars 2009 Del Skrevet 28. mars 2009 Noe slik? select c.* from contact c where exists(select * from project p where p.contact_id=c.contact_id) Lenke til kommentar
blackbrrd Skrevet 28. mars 2009 Del Skrevet 28. mars 2009 (endret) Det bør kanskje nevnes at forskjellen i ytelse på bruk av DISTINCT og EXISTS kan være rimelig stor. F.eks må postgresql hente ut hele result-settet, sortere det for så å filtrere det ved bruk av DISTINCT i nåværende versjon (det blir fikset i 8.4, tror ikke det er fikset i 8.3) EXISTS skal i utgangspunktet "kortslutte" med en gang den indre selecten returnerer en rad, men hvordan/når optimizeren faktisk kjører spørringen er, for mer komplekse spørringer ikke alltid opp av dage. Hintet er at hvis du har en større database må man være klar over slike quirks og vite om forskjellige måter å kjøre samme spørring på. (Ser for meg at kaffenils sitt forslag er den kjappeste måten å kjøre dette på) Endret 28. mars 2009 av blackbrrd Lenke til kommentar
HDSoftware Skrevet 31. mars 2009 Forfatter Del Skrevet 31. mars 2009 Takker for alle svar 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å