2015-07-13 2 views
0

У меня есть следующий запрос, но когда я его выполню, я получаю сообщение об ошибке - #1054 - Unknown column 'adress' in 'where clause' Мне интересно, почему? Когда я удаляю предложение where, оно обычно появляется как столбец, не знаю, почему оно вызывает ошибку.SQL - Невозможно выполнить псевдоним из-за неизвестного столбца, где пункт

SELECT zlec_status.nazwa      AS Status, 
     piorytet.nazwa       AS Priorytet, 
     Concat(koord.imie, ' ', koord.nazwisko) AS `Koordynator`, 
     Concat(zlec_adresy.miasto, ' - ', zlec_adresy.ulica, ' ', 
     zlec_adresy.oddzial) 
               AS `adress`, 
     zlec_z_dnia,zlec_id, 
     zlec_nr, 
     zlec_do, 
     zlec_ogran, 
     awizacje, 
     awizacja_na_dzien, 
     termin_zamkniecia, 
     tresc, 
     uwagi 
FROM zlec 
     INNER JOIN koord 
       ON zlec.koord = koord.id 
     INNER JOIN zlec_adresy 
       ON zlec.zlec_addres = zlec_adresy.id 
     INNER JOIN piorytet 
       ON zlec.priorytet = piorytet.id 
     INNER JOIN zlec_status 
       ON zlec.status_zlecenia = zlec_status.id 
WHERE `adress` LIKE '%Some%' 
+0

Возможный дубликат [Можете ли вы использовать псевдоним в предложении WHERE в mysql?] (Http://stackoverflow.com/questions/200200/can-you-use-an-alias-in-the-where-clause -in-mysql) –

ответ

2

Вы не можете использовать псевдоним столбца, определенный в select в пункте where для этого select. У вас есть два варианта. MySQL расширяет использование having, так что вы можете использовать это:

HAVING `adress` LIKE '%Some%' 

Или, вы можете использовать полное выражение:

Concat(zlec_adresy.miasto, ' - ', zlec_adresy.ulica, ' ', 
     zlec_adresy.oddzial) LIKE '%Some%' 

Или, вы можете использовать подзапрос, но я бы не рекомендовал что.

+0

Вероятно, немного переборщик в этом случае, но что вы думаете о его создании в качестве внешнего приложения и ссылаясь на него таким образом ? Вырезать один раз в два раза? EDIT: не поддерживается в MySQL для начала ... – LordBaconPants

2

Вы не можете использовать псевдонимы в предложении where. Использовать исходные конкатенированные столбцы

Недопустимо ссылаться на псевдоним столбца в предложении WHERE, поскольку значение столбца может еще не определяться при выполнении предложения WHERE.

where Concat(zlec_adresy.miasto, ' - ', zlec_adresy.ulica, ' ', 
    zlec_adresy.oddzial) LIKE '%Some%' 
+0

Это решает мою проблему :) Я предполагаю, что gordon был первым в любом случае, так что Ill upvote you –

Смежные вопросы