14. marts 2005 - 19:49Der 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å?
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
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??
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
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.
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.
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?
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å.
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.
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?
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.
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...?
SELECT kunder.kundenummer, kunder.firmanavn FROM kunder INNER JOIN kontakter ON kunder.kundenummer=kontakter.kundenummer WHERE kontakter.[Kontaktet Navn]='Anne Bendix'
SELECT kunder.firmanavn, kontakter.kontaktet_af FROM kunder INNER JOIN kontakter ON kunder.kundenummer=kontakter.kundenummer WHERE kontakter.kontaktet_af="AB";
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.???
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
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å!
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.
Der er ok med initialer. Det er ikke specificeret hvordan sælgeren skal fremgå.
Synes godt om
Ny brugerNybegynder
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.