Avatar billede ps76 Forsker
14. marts 2005 - 19:49 Der er 34 kommentarer og
1 løsning

Alm. navn i SQL sætning?

Jeg er totalt ny i SQL og sidder med en opgave som driller. Jeg skal lave en sql-sætning med forspørgsel til flere tabeller i en eksisterende database. Resultatet skal være en liste over kunder som varetages af en bestemt sælger. Hvordan skal jeg få denne sælgers navn ind i ligningen? Jeg har prøvet således:

SELECT kundenummer, firmanavn FROM kunder INNER JOIN [kontaktet af][Anne Bendix] FROM kontakter ON kunder.kundenummer
Så siger den
"Der er en syntaksfejl i FROM delsætningen".

Det er sikkert et meget grundlæggende basic spørgsmål for Jer, men jeg er mindre end et døgn gammel i det her, så bær over med mig og snup 30 hurtige point! Har løst 7-8 opgaver men denne er jeg gået i stå på. Hvad skal der stå?
Avatar billede arne_v Ekspert
14. marts 2005 - 20:04 #1
Vi skal nok se din tabel struktur for at kunne give dig et SQL forslag.
Avatar billede arne_v Ekspert
14. marts 2005 - 20:05 #2
Prøv iøvrigt at læs:
  http://www.eksperten.dk/artikler/389
Avatar billede ps76 Forsker
14. marts 2005 - 20:10 #3
Tabel struktur...hvordan kan jeg vise Jer den? Jeg arbejder ud fra en øvelses database i Access. Er det den, du skal se? Kan jeg sende den til dig, eller vedhæfte den hertil eller hvordan??
Avatar billede arne_v Ekspert
14. marts 2005 - 20:13 #4
Bare fortæl hvilke felter der er i de 2 tabeller.
Avatar billede lsskaarup Nybegynder
14. marts 2005 - 20:14 #5
Ud at have set din tabel struktur, så vil jeg skyde på at du måske kan gøre det sådan. Husk at tage i betragtning at jeg har skrevet det noget generelt så tilpas tabel, og feltnavne.

SELECT kontrakter.kundenummer, kontrakter.firmanavn FROM kunder INNER JOIN medarbejder ON kontrakter.medarbejder = medarbejder.medarbejder
Avatar billede lsskaarup Nybegynder
14. marts 2005 - 20:17 #6
Ups, det gik lige hurtigt nok, kontrakter skulle have været kunder
Avatar billede ps76 Forsker
14. marts 2005 - 20:43 #7
Hm, den er ikke helt tilfreds. Siger der er en syntaksfejl fordi der mangler en operator i forespørgselsudtrykket kunder "kunder[anne bendix]=(anne bendix).(anne.bendix)"..men jeg må prøve at mingelere det lidt.
MEN - jeg skal på arbejde nu - the late shift - så vi må fortsætte imorgen. Foreløbig tak for hjælpen.
Avatar billede lsskaarup Nybegynder
15. marts 2005 - 11:44 #8
Har du en tabel der hedder anne bendix samt et felt der også hedder det, eller er det en bare medarbejder?

For i din JOIN skal du ikke dicederet skrive navnet på medarbejderen, du kan bare joine, 2 tabeller de steder, hvor medarbejdernavnet er det samme. Derudover vil du sikkert får lidt problemer, hvis du har delt navnet ud på henholdsvis fornavn og efternavn.
Avatar billede ps76 Forsker
15. marts 2005 - 17:20 #9
Hm, jeg ved faktisk ikke, hvilke tabeller jeg har. Det er jo en øvelse, jeg arbejder med, har bare fået udleveret en access fil, som jeg simpelthen åbner i access, hvorefter jeg vælger sql design - jfr. den vejledning, jeg har fået..
Hvordan ser jeg, hvilke tabeller, den består af?
Avatar billede ps76 Forsker
15. marts 2005 - 22:26 #10
..og noget andet er, om der er problemer med at filen..praktisk.database.mdb..er en access 2000 fil, når jeg nu bruger access 2003?
Avatar billede arne_v Ekspert
15. marts 2005 - 23:07 #11
Hvis du i Access går i tables og kigger på de enkelte tables i design, så kan du
se hvilke felter de har.
Avatar billede arne_v Ekspert
15. marts 2005 - 23:07 #12
Vi kan ikke give dig en færdig løsning uden at vide hvad dine felter hedder.
Avatar billede arne_v Ekspert
15. marts 2005 - 23:08 #13
PS: Der er en Access kategori
Avatar billede lsskaarup Nybegynder
16. marts 2005 - 08:04 #14
Og hvis du åbner tabellerne i desginvisning (marker én og tryk Design, eller højreklik på tabellen og vælg designvisning), så kan du også se hvilke datatype felter er og størrelse herpå.
Avatar billede ps76 Forsker
16. marts 2005 - 11:42 #15
Der var opstået en fejl i filen, så der var ingen tabeller. Derfor kunne jeg ikke finde dem. Har nu hentet den påny, og funder følgende oversigt: Gamle kontakter, Glkunder, kontakt typer, kontakter, kontaktpersoner, kunder, nye kunder, postnumre.
Og de har selvfølgelig en række felter hver. Bl.a. finder vi i kontaktpersoner "Kontaktet af" (forkortelser af sælgerne, f.eks. AB) samt "Kontaktet navn", herunder Anne Bendix.
Avatar billede lsskaarup Nybegynder
16. marts 2005 - 17:12 #16
Du gider vel ikke lige remse op alle felter som er på henholdsvis kundetabellen og kontraktabellen?
Avatar billede ps76 Forsker
16. marts 2005 - 17:20 #17
Tabellen Kontaktpersoner:
Kontaktet af    Kontaktet Navn
AB            Anne Bendix
HH            Hanne Hansen
MJ            Max Jensen

Tabellen kunder:
Kundenummer  Firmanavn
1        D.K.G.
2        Unikom
3        Hammer-holdt
4        Jydsk Is
5        Anker Juel
6        Rønne vand
9        Jespersen & Søn
10        Tønder Reb
11        Caletti
12        Bjørnson babes
13        Jungle Trommer
14        Brande Gavle
16        Syper Flyers
17        EDB-giganten
18        Århus Bøger
Avatar billede ps76 Forsker
16. marts 2005 - 18:14 #18
Og så er der iøvrigt også en tabel der hedder "kontakter":

Kontaktet af    Kontaktet Navn
AB    Anne Bendix
HH    Hanne Hansen
MJ    Max Jensen
Avatar billede lsskaarup Nybegynder
16. marts 2005 - 18:57 #19
Så du har altså 2 tabeller, som er præcist ens??? Der må være en forståelsesmæssig forskel, ellers er den ene udnødvendig. Er der derimod en forskel, skal den kunne ses, f.eks. kunne den ene hedde sælger og den anden, ja hvad ved jeg, det som den nu skal symbolisere

Og du skal så have fundet de kunder, som en bestemt sælger har?
Avatar billede ps76 Forsker
16. marts 2005 - 19:04 #20
Nej sorry, det var en fejl. Den tabel, der hedder "kontakter" ser sådan ud;
Kundenummer    Kontakt Tidspunkt    Kontaktet af
1            05. okt 99            AB
1            27. okt 99            MJ
2            27. okt 99            AB
3            27. okt 99            MJ
3            27. okt 99            MJ
4            27. okt 99            HH
5            27. okt 99            AB
6            27. okt 99            HH

Ja, det drejer sig om at opstille kundenummer og firmanavn på de kunder, som Anne Bendix (AB) har.
Avatar billede lsskaarup Nybegynder
16. marts 2005 - 19:07 #21
Okay, så kan jeg bedre forstå, nu har vi også nogle primær nøgler som vi kan joine på
Avatar billede ps76 Forsker
16. marts 2005 - 21:47 #22
SELECT kunder.kundenummer, kunder.firmanavn  FROM kunder INNER JOIN kontakter ON kunder.kundenummer=kontakter.kundenummer

Så langt er jeg nået, men denne giver ALLE kundenumrene, og ikke kun Anne Bendix`s. Så jeg mangler bare at få hende ind i ligningen somehow, så det kun er hendes kunder, der vises...?
Avatar billede arne_v Ekspert
16. marts 2005 - 21:49 #23
SELECT kunder.kundenummer, kunder.firmanavn  FROM kunder INNER JOIN kontakter ON kunder.kundenummer=kontakter.kundenummer
WHERE kontakter.[Kontaktet Navn]='Anne Bendix'
Avatar billede ps76 Forsker
16. marts 2005 - 21:58 #24
Nej, så kommer den op med "autonummerering" under kundenummer og intet under firmanavn...?
Avatar billede lsskaarup Nybegynder
16. marts 2005 - 23:02 #25
Kan du nøjes med denne:

SELECT kunder.firmanavn, kontakter.kontaktet_af
FROM kunder INNER JOIN kontakter ON kunder.kundenummer=kontakter.kundenummer
WHERE kontakter.kontaktet_af="AB";
Avatar billede ps76 Forsker
16. marts 2005 - 23:17 #26
Nej, det giver 2 kolonner, "firmanavn" og "kontaktet_af", men begge er tomme.
Avatar billede lsskaarup Nybegynder
16. marts 2005 - 23:21 #27
Tomme?? det er de ikke hos mig. Jeg får firmanavnet og initialerne på sælgeren
Avatar billede lsskaarup Nybegynder
16. marts 2005 - 23:22 #28
Her er mit resultat:
firmanavn    kontaktet_af
D.K.G.              AB
Unikom              AB
Anker Juel      AB
Avatar billede ps76 Forsker
17. marts 2005 - 10:11 #29
HM, jeg kopierer den direkte herfra og sætter den ind, trykker på visningsknappen i øverste venstre hjørne, og så kommer et vindue, "indtast parameterværdi", hvor den spørger efter "kontakter.kontaktet_af". Hvis jeg siger OK til dette uden at skrive noget, så får jeg de to blanke kolonner. Hvis jeg skriver AB i det lille vindue, så får jeg samme kolonner, men med ALLE firmaer til venstre, og AB som kontaktperson ud for alle sammen. Hvilket jo heller ikke er korrekt.???
Avatar billede lsskaarup Nybegynder
17. marts 2005 - 13:16 #30
Ahhh, det var jeg godt. Det er fordi jeg har omdøbt "kontaktet af" til "kontaktet_af", man bruger helst ikke mellemrum i navndøbning af felter og dets lige. Så prøv at ændre dette i SQL-visningen, og så virker det sikkert
Avatar billede ps76 Forsker
17. marts 2005 - 17:54 #31
BINGO - der var den! Giv mig lige et svar så skal du få dine velfortjente point.
Avatar billede lsskaarup Nybegynder
17. marts 2005 - 22:50 #32
Okay, men er det nok, du skal ikke have så den viser deres rigtige navn istedet for initialerne?
Avatar billede ps76 Forsker
17. marts 2005 - 22:57 #33
Nej, det er ok sådan der. Ellers ændre jeg jo bare [kontaktet af] til [kontaktet navn]..lidt har jeg da lært!
Det var iøvrigt opgave 20 ud af 23. Tak for hjælpen. Jeg kommer igen med flere point, hvis det kniber med de sidste også!
Avatar billede lsskaarup Nybegynder
17. marts 2005 - 22:59 #34
Fint, men det er faktisk ikke bare lige sådan, for kontaktet_navn ligger jo i kontaktperson tabellen, som jeg ikke bruger, hvorimod kontaktet_af ligger i kontaktet tabellen. Så skal du have deres rigtige navn, skal vi have en join mere. Jeg har kigget meget lidt på det, men fandt ikke rigtigt ud af det.
Avatar billede ps76 Forsker
17. marts 2005 - 23:05 #35
Der er ok med initialer. Det er ikke specificeret hvordan sælgeren skal fremgå.
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