[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: грамотная запись в WHERE в выборке SELECT
yogeswar
У меня имеется таблица catalog1 в базе, вот её фрагменты (вверху названия столбцов):
country city predmet1 predmet1 on_dolgen mi_dolgni
Саратовская Урюпинск кирпич шпала 120 100
Пермская Касапетовка лопат грабли 200 100
Московская Урюкинск мотыга рогатка 100 400
-------------------------------- - и т. д. -------------------------------- ------------------------------
У меня есть массив предметов $wot1 = array(1=>ковшик, 2=>кастрюля,3=>кувшин,4=>меч).
Для дальнейшей обработки в SELECT я делаю строку:
$w1 = "'" . implode("', '",$wot1) . "'";



В результате этого получаем строку: 'ковшик', 'кастрюля', 'кувшин', 'меч'

У меня есть массив регионов $wot2 = array(1=>Московская, Нарофоминск, 2=>Челябинская,Курган).
$w2 = "'" . implode("', '",$wot2) . "'";



В результате получаем строку: 'Московская, Нарофоминск', 'Челябинская, Курган'

Теперь мне в команде SELECT надо сделать выбоку из таблицы catalog1:
$dydy = array();
$sql2 = "SELECT *
FROM catalog1 WHERE country IN (
$w2) and city IN ($w2) and
predmet1 IN (
$w1) or predmet2
IN (
$w1) and on_dolgen - mi_dolgni <= 30 or mi_dolgni — on_dolgen >= 0";
$result2 = mysql_query($sql2) or die(mysql_error());
while($row2 = mysql_fetch_array($result2, MYSQL_NUM)){
$dydy[] = $row2;
}


В этой записи нормально проходит predmet1 IN ($w1) or predmet2 IN ($w1).
Не проходит country IN ($w2) and city IN ($w2) , даже если запишу country, city IN ($w2).
Не проходит on_dolgen - mi_dolgni <= 30 or mi_dolgni - on_dolgen >= 0 (Прошло бы, если бы была простая запись: on_dolgen > 40, но это мне не нужно.
Вопрос.
Как мне грамотно сделать выборку в SELECT с учётом всех «пожеланий» в WHERE?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.