SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 03.10.2013 11:30:38

Vitalia85
Участник
Зарегистрирован: 03.10.2013
Сообщений: 2

Поиск по нескольким диапазонам

Помогите пожалуйста разобраться!

Подставили задачу сделать поиск по диапазонам, к примеру есть длина и ширина, выбираем от и до значения длины, также по ширине. К примеру есть 3 коробки, у них длина от 500 до 800 и ширина от 300 до 500. Делаю вот такой запрос, предварительно получив значения через форму инпут:


"
SELECT `id`,`title`,`description`,`imagemini`,`naznachenie`,`nomer`,`razmer2_d`,`razmer2_h`,`razmer2_v`,`date`,'view_data.php' AS `file` FROM `data` WHERE razmer2_d BETWEEN '$search' AND '$search2'
UNION ALL
SELECT `id`,`title`,`description`,`imagemini`,`naznachenie`,`nomer`,`razmer2_d`,`razmer2_h`,`razmer2_v`,`date`,'view_data.php' AS `file` FROM `data` WHERE razmer2_h BETWEEN '$search3' AND '$search4' "

Он сперва получается ищет по длине все коробки, потом по ширине и складывает в результат. Проблема заключается в том, что программа выводит всё подряд по одному параметру, а не сравнивая их с длиной и шириной. То есть если есть коробка в длине, но её нет в ширине, то тогда выводить её не надо. В интернете не смог найти решение, может вы сможете дать какой нибудь совет. Ещё есть проблема то что он повторяет некоторые коробки, но это вроде как решается через DISTINCT. Заранее благодарен

Неактивен

 

#2 03.10.2013 11:47:49

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Поиск по нескольким диапазонам

SELECT `id`,`title`,`description`,`imagemini`,`naznachenie`,`nomer`,`razmer2_d`,`razmer2_h`,`razmer2_v`,`date`,'view_data.php' AS `file` FROM `data` WHERE razmer2_d BETWEEN '$search' AND '$search2' AND razmer2_h BETWEEN '$search3' AND '$search4'

Неактивен

 

#3 03.10.2013 11:49:18

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Поиск по нескольким диапазонам

Зачем такие сложности - через UNION?
Не проще ли

SELECT `id`,`title`,`description`,`imagemini`,`naznachenie`,`nomer`,`razmer2_d`,`razmer2_h`,`razmer2_v`,`date`,'view_data.php' AS `file`
FROM `data`
WHERE razmer2_d >=  500 and razmer2_d <= 800
AND razmer2_h >=  300 and razmer2_h <= 500


?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#4 03.10.2013 11:55:52

Vitalia85
Участник
Зарегистрирован: 03.10.2013
Сообщений: 2

Re: Поиск по нескольким диапазонам

rgbeast, deadka

Спасибо большое за ответы, запрос выдал что надо:

SELECT `id`,`title`,`description`,`imagemini`,`naznachenie`,`nomer`,`razmer2_d`,`razmer2_h`,`razmer2_v`,`date`,'view_data.php' AS `file` FROM `data` WHERE razmer2_d BETWEEN '$search' AND '$search2' AND razmer2_h BETWEEN '$search3' AND '$search4'

Неактивен

 

Board footer

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