Avatar billede kapoou Nybegynder
12. oktober 2005 - 09:52 Der er 25 kommentarer og
1 løsning

Problemer med SQL udtræk

Jeg har et spørgsmål angående et lidt komplekst sql udtræk.

Jeg har følgende tabeller med tilhørende kolonner

Tabel1 (Bil info):
ID
BILNAVN (Indeholder ID som passer til tabel 5)
aargang

Tabel2 (Sammenkædning mellem tabel 1 og 3)
Bilnr ref -henviser til ID i tabel 1
KøretøjstypetypeNrref - henviser til ID i tabel 3

Tabel3 (Køretøjstype)
ID
Biltype

Tabel4 (Variant af mærke)
ID
Variant

Tabel5 (Mærkenavn)
ID
Navn
Variant (Henviser til ID i Tabel4)

Det var så tabelstrukturen.

Jeg vil så gerne have mulighed for at lave en søgeside som skal have følgende søgekriterier.

-Mærke
-Årgang
-Variant
-Køretøjstype

Det er ikke sikkert at man vælger at bruge alle søgekriterierne og disse skal så selvfølgelig ikke indgå.

Sådan som jeg kunne forestille mig at det skulle forgå var noget med Joins og der er her at jeg falder fra når der skal være flere joins i det samme udtræk!

Jeg håber at der er nogle der kan hjælpe mig her, og jeg håber at jeg har gjort mig bare nogenlunde forståelig!
Avatar billede fennec Nybegynder
12. oktober 2005 - 10:04 #1
Hvordan hænger Tabel4-5 sammen med Tabel1-3??
Du mangler en reference der knytter disse tabeller sammen.
Avatar billede fennec Nybegynder
12. oktober 2005 - 10:04 #2
Mig der ikke kan læse :o)
Avatar billede kapoou Nybegynder
12. oktober 2005 - 10:08 #3
Jeg kan godt forstå at du ikke kan finde rundt i det, for det var også lidt besværligt at finde rundt i da jeg skulle skrive det ned.
Avatar billede fennec Nybegynder
12. oktober 2005 - 10:14 #4
Her er første forsøg:

sql = "select distinct Tabel1.* from Tabel1 "&_
"Inner join Tabel2 on Tabel1.ref=Tabel2.ID "&_
"Inner join Tabel5 on Tabel1.BILNAVN=Tabel5.ID "&_
"Inner join Tabel4 on Tabel5.Variant=Tabel4.ID "&_
"Where 1=1 "
if Maerke <> "" then sql = sql & " and Tabel5.id="& Maerke
if Aargang <> "" then sql = sql & " and Tabel1.aargang="& Aargang
if Variant <> "" then sql = sql & " and Tabel4.id="& Variant
if Ktype <> "" then sql = sql & " and Tabel2.KøretøjstypetypeNrref ="& Ktype

I dette tilfælde forventer jeg at Maerke, Variant og Ktype alle indeholder ID'et på den respektive type. Det skal altså IKKE være tekst.
Avatar billede kapoou Nybegynder
12. oktober 2005 - 10:39 #5
Den siger missing operator ved

Tabel1.ref=Tabel2.ID Inner join Tabel5 on Tabel1.BILNAVN=Tabel5.ID Inner join Tabel4 on Tabel5.Variant=Tabel4.ID
Avatar billede fennec Nybegynder
12. oktober 2005 - 10:56 #6
ref skal være [Bilnr ref] (med [] omkring)

Og hvis du virkelig har et mellemrum i det kolonnenavn så fjern det. Det er kun til besvær da det kan skabe problemer. Det samme gælder for æøå som man også skal undgå at bruge i tebel/kolonne navne.
Avatar billede kapoou Nybegynder
12. oktober 2005 - 11:04 #7
Der er ikke mellemrum der, det vra bare en typo (sorry). ÆØÅ er også fjernet, men den kommer staig med samme fejl.
Avatar billede fennec Nybegynder
12. oktober 2005 - 11:19 #8
Hvilken database bruger du?
Avatar billede kapoou Nybegynder
12. oktober 2005 - 11:22 #9
mySQL
Avatar billede fennec Nybegynder
12. oktober 2005 - 11:51 #10
Kan du ikke lige vise din kode, som den er nu, hvor du opbygger sql-sætningen...
Det lyder nemlig som en ASP fejl :o)
Avatar billede kapoou Nybegynder
12. oktober 2005 - 12:05 #11
Den er nøjagtigt som du har skrevet den. Det er lidt mærkeligt.
Avatar billede fennec Nybegynder
12. oktober 2005 - 12:25 #12
Hvad siger SQL'en, hvis du udskriver den til skærmen i sin samlet udgave??
Avatar billede kapoou Nybegynder
12. oktober 2005 - 13:05 #13
Den siger

select distinct cases.* from cases Inner join link_opgave_case on link_opgave_case.[casenrref]=cases.id Inner join kunder on cases.kunde=kunder.[ID] Inner join brancher on kunder.branche=brancher.[ID] Where 1=1 and Kunder.id=62 and Cases.aar=1995

tabeller og kolonner er oversat til det system hvor jeg skal bruge det. Det andet vare bare et eksempel for gøre det mere gennemskueligt.
Avatar billede fennec Nybegynder
12. oktober 2005 - 13:10 #14
Fjern [] igen. Det er ikke nødvendigt (også bruger MySQL desuden ´ istedet for)
Avatar billede kapoou Nybegynder
12. oktober 2005 - 13:15 #15
Er gjort. Jeg kan ikke gennemskue hvorfor den laver fejl
Avatar billede fennec Nybegynder
12. oktober 2005 - 13:23 #16
Er alle tabel og kolonne navne stavet rigtigt??
Avatar billede kapoou Nybegynder
12. oktober 2005 - 13:29 #17
Ja. Jeg har tjekket dem igennem 1 mio. gange for at være sikker! Har lige tjekket dem igennem igen.
Avatar billede kapoou Nybegynder
12. oktober 2005 - 13:33 #18
Jeg har også databasen i access. Skal det skrives på samme måde der?
Avatar billede fennec Nybegynder
12. oktober 2005 - 13:34 #19
Så skal du nok til at smide hele koden herind, så jeg kan se den...
Avatar billede fennec Nybegynder
12. oktober 2005 - 13:35 #20
Med access skal der ofte () omkring joins (burde også virker i MySQL):

select distinct cases.* from (((cases Inner join link_opgave_case on link_opgave_case.[casenrref]=cases.id) Inner join kunder on cases.kunde=kunder.[ID]) Inner join brancher on kunder.branche=brancher.[ID]) Where 1=1 and Kunder.id=62 and Cases.aar=1995
Avatar billede kapoou Nybegynder
12. oktober 2005 - 13:36 #21
Her er udtrækket

sql = "select distinct cases.* from cases "&_
"Inner join link_opgave_case on link_opgave_case.casenrref=cases.id "&_
"Inner join kunder on cases.kunde=kunder.ID "&_
"Inner join brancher on kunder.branche=brancher.ID "&_
"Where 1=1 "
if Maerke <> "" then sql = sql & " and Kunder.id="& Maerke
if Aargang <> "" then sql = sql & " and Cases.aar="& Aargang
if Vaariant <> "" then sql = sql & " and Brancher.id="& Vaariant
if Ktype <> "" then sql = sql & " and link_Opgave_case.opgavenrref ="& Ktype
Avatar billede kapoou Nybegynder
12. oktober 2005 - 13:39 #22
Da jeg satte parantes osv ind og skiftede til access kommer den ikke med nogle fejl mere, men der kom heller ikke nogen søgeresultater. Jeg undersøger lige det med søgeresultaterne.
Avatar billede kapoou Nybegynder
12. oktober 2005 - 14:53 #23
Det ser ud til at køre nu. Du skal have mange gange tak for din hjælp!! Det var lækkert! Smid et svar så du kan få dine velfortjente points!
Avatar billede fennec Nybegynder
12. oktober 2005 - 15:05 #24
no prob.

.o) <-- One Eyed Jack
Avatar billede kapoou Nybegynder
12. oktober 2005 - 15:38 #25
Lige et hurtigt spm. Hvad hvis jeg gerne vil udskrive kundenavnet, hvad skal jeg så skrive ?
Avatar billede fennec Nybegynder
12. oktober 2005 - 15:44 #26
sql = "select distinct cases.*, kunder.navn as kName from cases "&_
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
Kurser inden for grundlæggende programmering

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