Avatar billede Lars Søndergaard Nybegynder
17. oktober 2005 - 14:22 Der er 16 kommentarer og
1 løsning

Hjælp til query

jeg har en tabel [person]

navn
adresse
alder
land_id

og en tabel [land]

land_id
land_navn

Hvordan laver jeg smartest mulig en query SELECT * FROM [mand] der returnerer en datatable hvor land_id er oversat til land_navn?
Avatar billede Lars Søndergaard Nybegynder
17. oktober 2005 - 14:23 #1
SELECT * FROM [land] skal selvfølgelig være FROM [person]
Avatar billede the_party_dog Nybegynder
17. oktober 2005 - 14:25 #2
SELECT navn, adresse, alder, land_navn FROM [person] WHERE [person].land_id = [land_id]
Avatar billede the_party_dog Nybegynder
17. oktober 2005 - 14:26 #3
SELECT navn, adresse, alder, [land].land_navn FROM [person] WHERE [person].land_id = [land_id]

Måske denne her, hvis man kigger lidt firkantet på hvor kolonnerne kommer fra. Er lidt rusten i SQL, skriv lige hvis der er noget som jeg har misforstået.
Avatar billede the_party_dog Nybegynder
17. oktober 2005 - 14:27 #4
SELECT navn, adresse, alder, [land].land_navn FROM [person] WHERE [person].land_id = [land].land_id

Så burde den være der.... :)
Avatar billede lorentsnv Nybegynder
17. oktober 2005 - 14:30 #5
Du skal vel have begge tabeller med i din from:


SELECT navn, adresse, alder, [land].land_navn FROM [person], [land] WHERE [person].land_id = [land].land_id
Avatar billede the_party_dog Nybegynder
17. oktober 2005 - 14:32 #6
lorentsnv: Du har ret, det glemte jeg helt i min ivere.... :-) Jeg skammer mig resten af dagen... Men ellers er query stillet godt nok op?
Avatar billede dr_chaos Nybegynder
17. oktober 2005 - 14:33 #7
SELECT land_navn, navn,adresse,alder FROM person p INNER JOIN land l ON l.land_id = p.land_id
Avatar billede dr_chaos Nybegynder
17. oktober 2005 - 14:34 #8
eller
SELECT land_navn,p.* FROM person p INNER JOIN land l ON l.land_id = p.land_id
Avatar billede the_party_dog Nybegynder
17. oktober 2005 - 14:37 #9
eller:
SELECT land_navn,p.* FROM person p,land l WHERE l.land_id = p.land_id

Der er mange måder....
Avatar billede Lars Søndergaard Nybegynder
17. oktober 2005 - 15:19 #10
Kanon...jeg har anvendt dr_chaos løsning.. virker perfekt.. the_party_dog smid et svar så er der points til deling :)

1000 tak :)
Avatar billede ldanielsen Nybegynder
17. oktober 2005 - 15:39 #11
Jeg tror ikke at the_party_dog's løsninger virkede
Avatar billede the_party_dog Nybegynder
17. oktober 2005 - 15:48 #12
ldanielsen: Efter lorentsnv rettelser tror jeg den ville virke. Den sidste kan jeg ikke garantere for, ville bare på en måde vise at INNER JOIN ikke var en nødvendig faktor for at få løsningen til at virke.

subtile: Det er ikke min løsning du har brugt, ergo skal jeg ikke have points :-) Håber alle mand får en god dag.
Avatar billede ldanielsen Nybegynder
17. oktober 2005 - 16:29 #13
the_party_dog >

Du kunne gøre det sådan:

SELECT navn, adresse, alder, (SELECT land.land_navn FROM land WHERE land.land_id = person.land_id) AS land_navn FROM person

Det er en subquery, men den er MEGET tungere at køre end et join. Join er måden, det er kernen i alle relationelle databaser.

Den sidste løsning du lavede 17/10-2005 14:37:11 vil retfærdigvis virke, men det er jo faktisk et INNER JOIN. Du bruger bare den "nemme" syntaks. Den kan jeg så ikke lide, den er ikke så præcis som den dr_chaos viser.
Avatar billede the_party_dog Nybegynder
17. oktober 2005 - 21:09 #14
ldanielsen: Netop her beviser vi at mennesker er forskellige, og der er forskellige måder at opfatte hvad der er pænt/rigtigt/mest rigtig/mest elegant/indsæt eget ord.

Du kan bedst lide at man viser INNER JOIN/OUTER JOIN, hvor jeg der imod synes det er pænest at holde sig til = tegnet. Jeg er enig med dig at en subquery ikke er løsningen, og man skal holde sig til relationer i sin database, som du så perfekt beskriver det.

Jeg håber ikke jeg har trådt nogen over tæerne, jeg ville bare efter dr_chaos indlæg, hvor jeg så hans geniale "p.* mulighed(havde 100% svedt ud at man kunne gøre det så nemt ved at vælge hele indholdet af person tabellen), vise at det ikke var nødvendigt med INNER JOIN.

Men jeg håber vi mødes igen :-)
Avatar billede dr_chaos Nybegynder
21. oktober 2005 - 09:39 #15
skal du ikke accepterer mit svar ?
Avatar billede Lars Søndergaard Nybegynder
24. oktober 2005 - 12:59 #16
jo :) sån' og mange tak for hjælpen
Avatar billede dr_chaos Nybegynder
24. oktober 2005 - 13:02 #17
np og tak :)
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