Columna desconocida aunque existe

He

SELECT
servisler.geo_location,
servisler.ADRES_MERKEZ,
servisler.ADRES_ILCE,
servisler.ADRES_IL,
servisler.FIRMA_UNVANI,
servisler.ADRES_ISTEL,
servisler.YETKILI_ADISOYADI,
urun_gruplari.GRUP_ADI
FROM
servisler
INNER JOIN urun_gruplari ON kullanici_cihaz.URUN_GRUP_NO= urun_gruplari.RECNO
INNER JOIN kullanici ON kullanici.SERVIS_RECNO = servisler.RECNO
INNER JOIN kullanici_cihaz ON kullanici.RECNO = kullanici_cihaz.KUL_RECNO AND kullanici_cihaz.URUN_GRUP_NO = urun_gruplari.RECNO
where kullanici.kullanici = 'MAR.EDI.003'

pero dice

[Err] 1054 - Unknown column 'kullanici_cihaz.URUN_GRUP_NO' in 'on clause'

enen aunque la columna sale. ¿Cuál es su problema?

Esquema
Versión del servidor: 5.1.33-community-log

preguntado el 28 de agosto de 12 a las 10:08

2 Respuestas

Creo que esto se debe a que estás usando el kullanici_cihaz mesa en tu ON cláusula, y que antes de que esta tabla está vinculada.

Trate de reorganizar su INNER JOIN :

SELECT
   servisler.geo_location,
   servisler.ADRES_MERKEZ,
   servisler.ADRES_ILCE,
   servisler.ADRES_IL,
   servisler.FIRMA_UNVANI,
   servisler.ADRES_ISTEL,
   servisler.YETKILI_ADISOYADI,
   urun_gruplari.GRUP_ADI
FROM
   servisler
INNER JOIN kullanici ON kullanici.SERVIS_RECNO = servisler.RECNO
INNER JOIN kullanici_cihaz ON kullanici.RECNO = kullanici_cihaz.KUL_RECNO 
INNER JOIN urun_gruplari ON kullanici_cihaz.URUN_GRUP_NO= urun_gruplari.RECNO
WHERE 
   kullanici.kullanici = 'MAR.EDI.003'

EDITAR

También tienes algo de 'unión interna de bucle', lo eliminé:

INNER JOIN urun_gruplari ON kullanici_cihaz.URUN_GRUP_NO= urun_gruplari.RECNO
INNER JOIN kullanici_cihaz ON kullanici.RECNO = kullanici_cihaz.KUL_RECNO AND kullanici_cihaz.URUN_GRUP_NO = urun_gruplari.RECNO

Respondido 28 ago 12, 10:08

Porque kullanici.SERVIS_RECNO no existe cuando te unes a las tablas: servisler, urun_gruplari. Unirse a la mesa kullanici primero antes de unirse urun_gruplari.

SELECT    servisler.geo_location,
          servisler.ADRES_MERKEZ,
          servisler.ADRES_ILCE,
          servisler.ADRES_IL,
          servisler.FIRMA_UNVANI,
          servisler.ADRES_ISTEL,
          servisler.YETKILI_ADISOYADI,
          urun_gruplari.GRUP_ADI
FROM   servisler
          INNER JOIN kullanici 
               ON kullanici.SERVIS_RECNO = servisler.RECNO
          INNER JOIN urun_gruplari 
               ON kullanici_cihaz.URUN_GRUP_NO= urun_gruplari.RECNO
          INNER JOIN kullanici_cihaz
               ON kullanici.RECNO = kullanici_cihaz.KUL_RECNO AND 
                  kullanici_cihaz.URUN_GRUP_NO = urun_gruplari.RECNO
where kullanici.kullanici = 'MAR.EDI.003'

Respondido 28 ago 12, 10:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.