即使存在未知列也是如此

时间:2012-08-28 09:23:28

标签: mysql database

我有

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'

但它说

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

即使该列存在。它有什么问题?

schema
服务器版本:5.1.33-community-log

2 个答案:

答案 0 :(得分:2)

因为加入表时kullanici.SERVIS_RECNO不存在:servislerurun_gruplari。在加入kullanici之前先加入表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'

答案 1 :(得分:2)

我认为这是因为您在kullanici_cihaz子句中使用了ON表格,并且之前此表格已被链接。

尝试重新排列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'

修改

你也有一些'循环内部联接',我删除了它:

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