2014-09-19 3 views
0

У меня есть этот запрос:SQL: Ошибка в столбце LIKE для ИНЕК

SELECT `donations`.*, `contacts`.`first_name` AS contact_first_name, `contacts`.`last_name` AS 
    contact_last_name 
FROM (`donations`) 
LEFT OUTER JOIN `contacts` contacts ON `contacts`.`id` = 
    `donations`.`contact_id` 
WHERE 
`contact_first_name` LIKE 
    '%test%' 

Однако я получаю ошибку Unknow column contact_first_name in WHERE clause. Я вижу, что я выбираю имя как псевдоним contact_first_name, но все еще получаю ошибку.

Может ли кто-нибудь помочь в том, что не так, что я здесь делаю? Благодаря

ответ

1

Использование вместо этого:

SELECT `donations`.*, `contacts`.`first_name` AS contact_first_name, `contacts`.`last_name` AS 
    contact_last_name 
FROM (`donations`) 
LEFT OUTER JOIN `contacts` contacts ON `contacts`.`id` = 
    `donations`.`contact_id` 
WHERE 
`contacts`.`first_name` LIKE 
    '%test%' 

Причина этого заключается в том, потому что contacts.first_name AS contact_first_name в настоящее время оценивается в прошлом, так WHERE не знает о псевдониме contact_first_name В качестве альтернативы вы можете сделать:

SELECT * 
FROM (
    SELECT `donations`.*, `contacts`.`first_name` AS contact_first_name, `contacts`.`last_name` AS 
      contact_last_name 
    FROM (`donations`) 
     LEFT OUTER JOIN `contacts` contacts ON `contacts`.`id` = 
    `donations`.`contact_id`  
) a 
WHERE `contact_first_name` LIKE '%test%' 
1

Изменить

WHERE 
    `contact_first_name` LIKE 
    '%test%' 

к

WHERE 
    `contacts`.`first_name` LIKE 
    '%test%' 

Причина этого заключается в том, что вы не можете использовать псевдонимы в пункте WHERE.

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