Avatar billede trumf Nybegynder
20. november 2005 - 08:33 Der er 8 kommentarer og
1 løsning

on caluse

Hejsa E

Jeg har lige opgraderet fra 4.0.16 til 5.0.15 og nu kommer der en fejl i et select...

SELECT DISTINCT v.vID, v.vnavn, v.harBillede, v.pris, b.picnavn, b.height, b.width, u.udsalgPct FROM varer v, varegrupper vg LEFT JOIN vgudsalg u ON vg.top = u.vgID LEFT JOIN produktbilleder b ON v.vID = b.vID WHERE v.tilhgrp = vg.vgID AND (v.ring_for_pris = 'on' OR v.lagerstatus > 0 OR v.saelgIkkePaaLager = 'on') AND b.standard = 1 AND v.aktiv = 'on' AND v.vID <> 0 AND v.tilhgrp IN (0) ORDER BY v.vID

[MySQL][ODBC 3.51 Driver][mysqld-5.0.15-nt]Unknown column 'v.vID' in 'on clause'

vID findes i varer tabellen (og det virkede før) så det må være noget med JOINS der ikke kører på samme måde som før.

Kan nogen hjælpe ?
Avatar billede trumf Nybegynder
20. november 2005 - 09:00 #1
Hvis jeg tager den ene join ud, så virker det fint:
SELECT DISTINCT v.vID, v.vnavn, v.harBillede, v.pris, u.udsalgPct FROM varer v, varegrupper vg LEFT JOIN vgudsalg u ON vg.top = u.vgID WHERE v.tilhgrp = vg.vgID AND (v.ring_for_pris = 'on' OR v.lagerstatus > 0 OR v.saelgIkkePaaLager = 'on') AND v.aktiv = 'on' AND v.vID <> 0 AND v.tilhgrp IN (0) ORDER BY v.vID

Men den skal være der så det er ikke løsningen...
Avatar billede arne_v Ekspert
20. november 2005 - 11:05 #2
jeg tror at det er et problem med en "komma join" kombineret med "moderne join"

prøv og kun brug moderne join og sæt parenteser for at gøre det mere tydeligt
Avatar billede trumf Nybegynder
20. november 2005 - 13:27 #3
Jeg er ikke helt sikker på hvad du mener.
Kunne du evt specificere hvad der er hvad og hvorfor ?
Avatar billede trumf Nybegynder
20. november 2005 - 13:30 #4
SELECT DISTINCT v.vID, v.vnavn, v.harBillede, v.pris, b.picnavn, b.height, b.width, u.udsalgPct
FROM varer v, varegrupper vg
(LEFT JOIN vgudsalg u ON vg.top = u.vgID)
(LEFT JOIN produktbilleder b ON v.vID = b.vID)
WHERE v.tilhgrp = vg.vgID
AND (v.ring_for_pris = 'on' OR v.lagerstatus > 0 OR v.saelgIkkePaaLager = 'on')
AND b.standard = 1
AND v.aktiv = 'on'
AND v.vID <> 0
AND v.tilhgrp IN (0)
ORDER BY v.vID
Avatar billede trumf Nybegynder
20. november 2005 - 13:37 #5
Jeg har lige prøvet:

SELECT DISTINCT v.vID, v.vnavn, v.harBillede, v.pris, b.picnavn, b.height, b.width, u.udsalgPct
FROM varer v
(INNER JOIN varegrupper vg ON v.tilhgrp = vg.vgID)
(LEFT JOIN vgudsalg u ON vg.top = u.vgID)
(LEFT JOIN produktbilleder b ON v.vID = b.vID)
WHERE (v.ring_for_pris = 'on' OR v.lagerstatus > 0 OR v.saelgIkkePaaLager = 'on')
AND b.standard = 1
AND v.aktiv = 'on'
AND v.vID <> 0
AND v.tilhgrp IN (0)
ORDER BY v.vID

men det virker heller ikke...
[MySQL][ODBC 3.51 Driver][mysqld-5.0.15-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(INNER JOIN varegrupper vg ON v.tilhgrp = vg.vgID) (LEFT JOIN vgudsalg u ON vg.t' at line 1
Avatar billede arne_v Ekspert
20. november 2005 - 13:41 #6
parenteserne er forkerte
Avatar billede arne_v Ekspert
20. november 2005 - 13:42 #7
SELECT DISTINCT v.vID, v.vnavn, v.harBillede, v.pris, b.picnavn, b.height, b.width, u.udsalgPct
FROM (((varer v INNER JOIN varegrupper vg ON v.tilhgrp = vg.vgID)
LEFT JOIN vgudsalg u ON vg.top = u.vgID)
LEFT JOIN produktbilleder b ON v.vID = b.vID)
WHERE (v.ring_for_pris = 'on' OR v.lagerstatus > 0 OR v.saelgIkkePaaLager = 'on')
AND b.standard = 1
AND v.aktiv = 'on'
AND v.vID <> 0
AND v.tilhgrp IN (0)
ORDER BY v.vID
Avatar billede trumf Nybegynder
20. november 2005 - 14:22 #8
super, det var "bare" det...

:)

Lægger du et svar Arne
Avatar billede arne_v Ekspert
20. november 2005 - 14:23 #9
svar
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