Avatar billede the_ghost Nybegynder
22. januar 2006 - 19:19 Der er 18 kommentarer og
1 løsning

SELECT problem

Jeg har følgende SQL sætning.

SELECT navn, ID, klasse FROM karakter WHERE ID IN (SELECT karID FROM keys WHERE aq='Ja') ORDER BY navn ASC

Mit problem er, at i den kolonne der hedder navn, får jeg flere navne som er ens. - Jeg vil gerne have at den kun returnere unikke navne, men skal stadigvæk returnere id og klasse.

Jeg har prøvet med en SELECT DISTINCT navn, id, klasse.. men der kommer de samme oplysninger som der gjorde, hvis jeg ikke brugte DISTINCT.

Jeg håber I kan hjælpe mig med at få løst mit lille problem.

På forhånd tak.

...
The Ghost
Avatar billede terry Ekspert
22. januar 2006 - 19:29 #1
DISTINCT is only going to work if ALL selected fields are the same.

navn, ID and klasse must all be DISTINCT
Avatar billede the_ghost Nybegynder
22. januar 2006 - 19:39 #2
Ok. Men er der så ikke en anden måde, at få fat i navn, id & klasse, hvor navnet er unikt ?
Avatar billede terry Ekspert
22. januar 2006 - 19:42 #3
just select navn
Avatar billede terry Ekspert
22. januar 2006 - 19:43 #4
SELECT DISTINCT navn FROM karakter WHERE ID IN (SELECT karID FROM keys WHERE aq='Ja') ORDER BY navn ASC
Avatar billede the_ghost Nybegynder
22. januar 2006 - 19:53 #5
Ja, men jeg skal jo stadig bruge id og klasse fra tabellen også! - Det er ikke nok kun med navnet!
Avatar billede terry Ekspert
22. januar 2006 - 20:04 #6
can we see an example of your data?
Avatar billede the_ghost Nybegynder
22. januar 2006 - 20:28 #7
Sure... www.crashsite.dk >> Søg >> vælg en eller anden og klik søg.

Pt. bruger jeg ASP : VBScript : If InStr(str1, rs("navn")) = 0 Then
Men dette er ikke en hålbar løsning, da det vil konflikte med eks. Morgo Vs. Morgonia
Avatar billede terry Ekspert
22. januar 2006 - 20:35 #8
can I see navn, ID and klasse from table karakter?
Avatar billede terry Ekspert
22. januar 2006 - 20:40 #9
Is the line numebers to the left ID?
Avatar billede terry Ekspert
22. januar 2006 - 20:41 #10
can you maybe send my your database?

eksperten@NOSPAMsanthell.dk
remove NOSPAM
Avatar billede the_ghost Nybegynder
22. januar 2006 - 20:56 #11
ID bliver egentligt ikke brugt til noget (ved ikke helt hvorfor den bliver hævet ud! - kan være den har været brugt tidligere).
Den fulde SQL sætning ser således ud: SELECT navn, ID, race, klasse, lvl, ejer FROM karakter WHERE ID IN (SELECT karID FROM keys WHERE ony='Ja') ORDER BY navn ASC
Men da ID ikke skal bruges er det kun navn, race, klasse, lvl & ejer som er af interesse.

Tabellen ser således ud:
karakter = {ID, navn, race, klasse, lvl, ejer }.
ID = long(4) - Auto increment - Primary Key
navn = text(50) - nullable
race = text(50) - nullable
klasse = text(50) - nullable
lvl =  long(4) - nullable
ejer = text(50) - nullable

(Det er ikke mig, som har lavet databasen i sin tid, men jeg er en af de personer, som benytter den pt.)
Avatar billede terry Ekspert
23. januar 2006 - 07:58 #12
The data is what is in the table.
If you want to see DISTINCT navn then which ID and klasse do you want to see for each of the DISTINCT navn? Each navn has a different ID and maybe also a different klasse. So the only way you can see DISTINCT navn is by only select DISTINCT navn.

ID  navn  klasse
1    Peter  1
2    John  1
3    Dorte  2
4    Peter  2
5    John  1

If I select DISTINCT ID, navn, klasse it will return
ID  navn  klasse
1    Peter  1
2    John  1
3    Dorte  2
4    Peter  2
5    John  1

If I select DISTINCT navn, klasse it will  return

navn  klasse
Peter  1
John  1
Dorte  2
Peter  2

If I select DISTINCT navn it will  return

navn
Peter
John
Dorte
Avatar billede terry Ekspert
23. januar 2006 - 08:01 #13
If I select DISTINCT navn which will  return the folowing, which ID and klasse are we supposed to use?

navn
Peter
John
Dorte
Avatar billede the_ghost Nybegynder
23. januar 2006 - 09:06 #14
Hvis nu tabellen indeholder:
ID navn  klasse
1  Peter  1
2  Dorthe  2
3  Peter  1
4  John    3
5  Peter  1

Så vil jeg gerne have at den kun henter:
ID navn  klasse
1  Peter  1
2  Dorthe  2
4  John    3
Avatar billede the_ghost Nybegynder
23. januar 2006 - 09:09 #15
= Den skal kun hente de rækker, hvor navnet ikke er blevet hentet tidligere!
Avatar billede terry Ekspert
23. januar 2006 - 09:16 #16
SELECT First(tblnavn.ID) AS FirstOfID, tblnavn.navn, First(tblnavn.klasse) AS FirstOfklasse
FROM tblnavn
GROUP BY tblnavn.navn
ORDER BY First(tblnavn.ID);

What do you mean "hvor navnet ikke er blevet hentet tidligere"?
Avatar billede terry Ekspert
26. januar 2006 - 19:16 #17
.
Avatar billede the_ghost Nybegynder
26. januar 2006 - 19:36 #18
Sorry.. Glemte alt om tråden! - Dit sidste svar hjalp, jeg takker mange gange
Avatar billede terry Ekspert
26. januar 2006 - 19:42 #19
no problem, thanks.

god aften
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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