Avatar billede mesterhakkeren Nybegynder
14. august 2006 - 22:23 Der er 19 kommentarer

brug af distinct

hej jeg har lidt problemer med en sql sætning...

SELECT DISTINCT navn FROM personer

hvis jeg køre denne sætning, får jeg kun navn som data...


hva nu hvis jeg godt ville have feltet 'telefon' med f.eks, men stadigvæk beholde distinct på navn ????
Avatar billede mesterhakkeren Nybegynder
14. august 2006 - 22:26 #1
jeg kan lige sige, at DISTINCT navn, telefon... det er ikke den jeg søger...
Avatar billede cpufan Juniormester
14. august 2006 - 22:31 #2
hvorfor er det så ikke det?
Avatar billede mesterhakkeren Nybegynder
14. august 2006 - 22:32 #3
fordi at telefon ikke skal ned i distinct.... telefon feltet, skal bare være data, som tilhøre de felter som der bliver valgt med SELECT DISTINCT navn FROM personer.
Avatar billede mesterhakkeren Nybegynder
14. august 2006 - 22:33 #4
$res = mysql_query("SELECT DISTINCT navn FROM personer.");

while($output = mysql_fetch_array($res,MYSQL_ASSOC)) {
    $output["navn"];
}

her findes f.eks ikke en

$output["telefon"]
Avatar billede cpufan Juniormester
14. august 2006 - 22:40 #5
select telefon, distinct navn from xxx

giver jo entydige records på navn, og så får du deres telefonnr med ud

while($output = mysql_fetch_array($res,MYSQL_ASSOC)) {
    $output["navn"];
$output["telefon"];

er det ikke det du vil?
Avatar billede mesterhakkeren Nybegynder
14. august 2006 - 22:42 #6
telefon, distinct navn... det her kan man ikke... du får syntax fejl hvis du køre den... hvis du ikke vidste det... har prøvet.. ;)
Avatar billede arne_v Ekspert
14. august 2006 - 22:43 #7
proev den lidt spoejse:

SELECT navn,MAX(telefon) FROM personer GROUP BY navn
Avatar billede mesterhakkeren Nybegynder
14. august 2006 - 22:48 #8
arne_v...

ja den er lidt spøjs.. hehe

men den virker faktisk som jeg vil have den.. :)
Avatar billede mesterhakkeren Nybegynder
14. august 2006 - 22:53 #9
kom med et svar arne :)
Avatar billede arne_v Ekspert
14. august 2006 - 22:53 #10
svar
Avatar billede showsource Seniormester
14. august 2006 - 22:55 #11
arne_v, GROUP BY forstår jeg, men MAX ???
Avatar billede showsource Seniormester
14. august 2006 - 22:56 #12
Er det ikke bare et nr. ?
Avatar billede arne_v Ekspert
14. august 2006 - 23:07 #13
hent det hoejeste telefon nummer for hvert navn

=

hent distinct navn og hoejeste teelfon nummer for disse

(man kunne selvfoeligelig ligesaa godt have brugt MIN)
Avatar billede showsource Seniormester
14. august 2006 - 23:23 #14
aahh...
Avatar billede coderdk Praktikant
25. august 2006 - 02:48 #15
FYI er DISTINCT et alias for DISTINCTROW - Det er altså unikke rækker :) Derfor virkede det ikke at tage navn, telefon da det er hele rækken der skal være unik :)

Det er vel egentlig ikke nødvendigt at bruge MAX() du kan vel bare bruge SELECT navn, telefon, FROM personer GROUP BY navn ?

Husk for alt i verden at have et index på (navn, telefon) ! Ellers vil mysql både lave en temporær tabel og lave en filesort :o
Avatar billede coderdk Praktikant
25. august 2006 - 02:49 #16
(minus kommaet efter telefon i min select :P)
Avatar billede arne_v Ekspert
25. august 2006 - 03:10 #17
jeg foretrækker standard SQL hvis det er muligt
Avatar billede arne_v Ekspert
11. september 2006 - 23:18 #18
mesterhakkeren ?
Avatar billede arne_v Ekspert
06. oktober 2006 - 03:11 #19
??
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester