ilhan
ilhan

Reputation: 8945

Unknown column even though it exists

I have

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'

but it says

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

enen though the column exits. What is its problem?

schema
Server version: 5.1.33-community-log

Upvotes: 0

Views: 124

Answers (2)

John Woo
John Woo

Reputation: 263703

Because kullanici.SERVIS_RECNO does not exist when you join the tables: servisler, urun_gruplari. Join table kullanici first before joining 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'

Upvotes: 2

zessx
zessx

Reputation: 68790

I think this is because you're using the kullanici_cihaz table in your ON clause, and that before this table is linked.

Try to rearrange your 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'

EDIT

You also have some 'loop inner join', I removed it :

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

Upvotes: 2

Related Questions