SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.01.2010 12:00:32

Globulopolis
Участник
Зарегистрирован: 17.09.2009
Сообщений: 23

Имя поля в LIKE вместо строки

Вообще можно так или нет? просто не хотелось бы ещё 1 запрос к БД делать.

Пока имеется запрос вида:

SELECT `a`.`pr_id`, `a`.`pr_sdate`, `a`.`pr_edate`, `a`.`pr_desc`, `a`.`pr_mid`, `a`.`pr_tid`, `a`.`pr_buy_ticket`, `b`.`id`, `b`.`movie_name`, `b`.`movie_name2`, `b`.`year`, `b`.`images`, `c`.`t_id`, `c`.`t_name`, `c`.`t_city`, `c`.`t_country_id`, `d`.`c_id`, `d`.`c_name`, `d`.`c_flag`
 FROM `jos_kinoarhiv_premieres` AS a
 LEFT JOIN `jos_kinoarhiv` AS b ON `b`.`movie_name` LIKE '`a`.`pr_mid`%' OR `b`.`movie_name2` LIKE '`a`.`pr_mid`%' AND `b`.`published` = '1'
 LEFT JOIN `jos_kinoarhiv_theatres` AS c ON `c`.`t_id` = `a`.`pr_tid` AND `c`.`t_published` = '1'
 LEFT JOIN `jos_kinoarhiv_countries` AS d ON `d`.`c_id` = `c`.`t_country_id`
 WHERE `pr_id` = '6' AND `pr_published` = '1'


т.е. меня смущает эта часть кода ...ON `b`.`movie_name` LIKE '`a`.`pr_mid`%' OR `b`.`movie_name2` LIKE '`a`.`pr_mid`%' AND...

Неактивен

 

#2 19.01.2010 12:33:23

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Имя поля в LIKE вместо строки

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

Неактивен

 

#3 19.01.2010 13:15:53

Globulopolis
Участник
Зарегистрирован: 17.09.2009
Сообщений: 23

Re: Имя поля в LIKE вместо строки

vasya написал:

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

да вот в том то и беда что не пашет. вы подтвердили мою догадку )

а выход из ситуации есть? или все же лучше левый запрос делать?

Неактивен

 

#4 19.01.2010 13:17:16

vaspet
Завсегдатай
Зарегистрирован: 11.03.2009
Сообщений: 83

Re: Имя поля в LIKE вместо строки

`b`.`movie_name` LIKE '`a`.`pr_mid`%'

здесь вы проверяете `movie_name` равна строчке "`a`.`pr_mid`_И_ЕЩЕ_КАКОЙ_ТО_ТЕКСТ"
а хотите наверное содержимое полей сравнить
Может так:

`b`.`movie_name`= LEFT(name2, LENGTH(`a`.`pr_mid`))

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson