Avatar billede sth Novice
12. marts 2007 - 20:32 Der er 7 kommentarer og
1 løsning

problem med INNER JOIN

jeg har fået en fejl på min side der har kørt i ca 2 år udn problemer, jeg har brugt denne sql:

SQLstmt ="SELECT afdelinger.AfdelingsId AS afdelinger_AfdelingsId, afdelinger.afd_beskrivelse, lev.lev_id AS lev_lev_id, lev.firma_navn, users.UserID, users.initialer, masterudstyr.udstyrs_id, masterudstyr.master_nr, masterudstyr.Beskrivelse, masterudstyr.user_id, masterudstyr.StatusId, masterudstyr.AfdelingsId AS masterudstyr_AfdelingsId, masterudstyr.lev_id AS masterudstyr_lev_id, masterudstyr.Fabrikat, masterudstyr.Model, masterudstyr.serie_nr, masterudstyr.anskaf_dato, masterudstyr.anskaf_pris, masterudstyr.sporbar_til, masterudstyr.nextkal_dato, masterudstyr.larstkal_dato, masterudstyr.kal_interval, masterudstyr.notat, spec_nr.spec_id, spec_nr.spec_nr_tekst, masterudstyr.vejledning FROM users INNER JOIN spec_nr ON spec_nr.spec_id = masterudstyr.beregn_spec_id INNER JOIN masterudstyr ON (users.UserID = masterudstyr.user_id ) INNER JOIN lev ON (lev.lev_id = masterudstyr.lev_id)  INNER JOIN afdelinger ON (afdelinger.afdelingsId = masterudstyr.afdelingsId)  WHERE (((masterudstyr.udstyrs_id)=" & udstyrs_id & ")) and  masterudstyr.firmaID = "& Session("firmaID")


hvis jeg ændre det til denne er virker det:


SQLstmt ="SELECT afdelinger.AfdelingsId AS afdelinger_AfdelingsId, afdelinger.afd_beskrivelse, lev.lev_id AS lev_lev_id, lev.firma_navn, users.UserID, users.initialer, masterudstyr.udstyrs_id, masterudstyr.master_nr, masterudstyr.Beskrivelse, masterudstyr.user_id, masterudstyr.StatusId, masterudstyr.AfdelingsId AS masterudstyr_AfdelingsId, masterudstyr.lev_id AS masterudstyr_lev_id, masterudstyr.Fabrikat, masterudstyr.Model, masterudstyr.serie_nr, masterudstyr.anskaf_dato, masterudstyr.anskaf_pris, masterudstyr.sporbar_til, masterudstyr.nextkal_dato, masterudstyr.larstkal_dato, masterudstyr.kal_interval, masterudstyr.notat, spec_nr.spec_id, spec_nr.spec_nr_tekst, masterudstyr.vejledning FROM users, masterudstyr,lev, afdelinger,spec_nr WHERE users.UserID = masterudstyr.user_id and lev.lev_id = masterudstyr.lev_id and afdelinger.afdelingsId = masterudstyr.afdelingsId and spec_nr.spec_id = masterudstyr.beregn_spec_id  and afdelinger.afdelingsId = masterudstyr.afdelingsId and masterudstyr.udstyrs_id=" & udstyrs_id & " and  masterudstyr.firmaID = "& Session("firmaID")


jeg har dog en ide om at det er min udbyder derder har opdateret databasen til mysqld-5.0.27-standard , er der lavet omm på moden man laver joins på ?
Avatar billede arne_v Ekspert
12. marts 2007 - 20:52 #1
proev og smaek parenteser paa saa den evaluerer i veldfineret orden:

SELECT * FROM (((A JOIN B ON ...) JOIN C ON ...) JOIN D ON ...) WHERE ...
Avatar billede sth Novice
13. marts 2007 - 11:50 #2
har lige prøvet og lege lidt med det, men det virker ikke rigtig
SELECT * FROM users
((((INNER JOIN spec_nr ON spec_nr.spec_id = masterudstyr.beregn_spec_id )
INNER JOIN masterudstyr ON (users.UserID = masterudstyr.user_id ) )
INNER JOIN lev ON (lev.lev_id = masterudstyr.lev_id))
INNER JOIN afdelinger ON (afdelinger.afdelingsId = masterudstyr.afdelingsId)  )
WHERE masterudstyr.udstyrs_id=34
and  masterudstyr.firmaID = 8

mens denne sql virker:
SELECT * FROM users,spec_nr, masterudstyr,lev, afdelinger 
where spec_nr.spec_id = masterudstyr.beregn_spec_id
and masterudstyr.user_id = users.UserID
and lev.lev_id = masterudstyr.lev_id
and afdelinger.afdelingsId = masterudstyr.afdelingsId
and masterudstyr.udstyrs_id=34
and  masterudstyr.firmaID = 8

jeg fatter ikke hvor for det virker i 2 år og så ikke virker nu..
Avatar billede arne_v Ekspert
14. marts 2007 - 02:22 #3
så har jeg ikke lige flere gode ideer

hvad er fejl teksten ?
Avatar billede sth Novice
23. marts 2007 - 08:22 #4
ok men tak for hjælpen, kommer du med et svar så vi kan lukke
Avatar billede arne_v Ekspert
23. marts 2007 - 14:20 #5
hvis det ikke har hjulpe, saa nej tak til point
Avatar billede sth Novice
23. april 2007 - 14:23 #6
Nå men det visesr sig nu at problemet er rækkefølgen på mine INNER JOIN

Denne virker ikke:
SQLstmt ="SELECT * FROM users
INNER JOIN spec_nr ON spec_nr.spec_id = masterudstyr.beregn_spec_id
INNER JOIN masterudstyr ON (users.UserID = masterudstyr.user_id )
INNER JOIN lev ON (lev.lev_id = masterudstyr.lev_id) 
INNER JOIN afdelinger ON (afdelinger.afdelingsId = masterudstyr.afdelingsId) 
WHERE (((masterudstyr.udstyrs_id)=" & udstyrs_id & "))
and  masterudstyr.firmaID = "& Session("firmaID")


Denne virker:
SQLstmt ="SELECT * FROM users
INNER JOIN masterudstyr ON (users.UserID = masterudstyr.user_id )
INNER JOIN spec_nr ON spec_nr.spec_id = masterudstyr.beregn_spec_id
INNER JOIN lev ON (lev.lev_id = masterudstyr.lev_id) 
INNER JOIN afdelinger ON (afdelinger.afdelingsId = masterudstyr.afdelingsId) 
WHERE (((masterudstyr.udstyrs_id)=" & udstyrs_id & "))
and  masterudstyr.firmaID = "& Session("firmaID")


arne_v kommer du ikke med et svar så vi kan få afregnet, for selv om du ikke lige havde løsningen så kom jeg  i den rigtige retning

Kan du evt fortæle hvorfor det er blevet et problem med rækkefølgen, når det nu ikke har været det i mere end 2 år
Min udbyder mener ikke at de har ændret noget siden Januar
Avatar billede arne_v Ekspert
24. april 2007 - 01:41 #7
svar

jeg tror at de må have lavet et eller andet
Avatar billede sth Novice
24. april 2007 - 07:31 #8
ja det mener jeg jo så også, men det vi de bare ikke indrømme
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