SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 12.10.2007 17:59:08

Сан
Участник
Зарегистрирован: 12.10.2007
Сообщений: 3

Усложненный запрос к таблице

Вопрос:
Как сделать запрос к таблице, если значение в ячейке может иметь такой вид:
1.    Просто числовое значение (пример 20)
2.    Значение типа <(меньше) или  >(больше) какого-то числа (пример <10)
3.    Диапазон чисел (пример 0…40).

Неактивен

 

#2 12.10.2007 19:52:29

Сан
Участник
Зарегистрирован: 12.10.2007
Сообщений: 3

Re: Усложненный запрос к таблице

Извините! Уточняю задачу. Есть таблица, которая содержит паспортные данные транзисторов. Данные в таблице могут быть в разных видах, уточняю: например ячейка с именем  'h21e'  - данные в ней в виде диапазона (пример 100…200), следующий вид, это когда в ячейке задано значение < или > какого-то числа (пример ячейка ‘Ikbo’ в ней значение <120).
(3, 'КТ201Б(М)', 'n-p-n', '20', '20', '30(100)', '0,15', '30-90', '<1', '>=10', '', '<20', '', 'T1a(T19a)')
Необходимо создать универсальный запрос в котором искомое значение либо приравнивалось к значению в ячейке, либо проверялось на попадание в диапазон данных.

Неактивен

 

#3 12.10.2007 19:53:44

Сан
Участник
Зарегистрирован: 12.10.2007
Сообщений: 3

Re: Усложненный запрос к таблице

Структура таблицы:
CREATE TABLE IF NOT EXISTS `tranzistor_datasheets` (
`id` tinyint(7) NOT NULL auto_increment,
`tranzistor_type` varchar(255) NOT NULL default '',
`tranzistor_structure` varchar(255) NOT NULL default '',
`tranzistor_Ukbo` varchar(255) NOT NULL default '',
`tranzistor_UkeR` varchar(255) NOT NULL default '',
`tranzistor_IkMAX` varchar(255) NOT NULL default '',
`tranzistor_PkMAX` varchar(255) NOT NULL default '',
`tranzistor_h21e` varchar(255) NOT NULL default '',
`tranzistor_Ikbo` varchar(255) NOT NULL default '',
`tranzistor_fgr` varchar(255) NOT NULL default '',
`tranzistor_Uken` varchar(255) NOT NULL default '',
`tranzistor_Ck` varchar(255) NOT NULL default '',
`tranzistor_Ksh` varchar(255) NOT NULL default '',
`tranzistor_image` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM;

Неактивен

 

#4 12.10.2007 20:21:16

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Усложненный запрос к таблице

Одним запросом это написать не получится, но Вы можете написать хранимую процедуру,
которая получает эти данные, например, курсором.

Если данные немного оптимизировать, то можно сделать и одним запросом. Предлагаю такую
оптимизацию: сделать два столбца "минимальное значение" и "максимальное значение".
При этом если минимума нет, то там должен быть ноль, если нет максимума - то какое-то
запредельно большое значение. Тогда обычный WHERE BETWEEN Вас спасет.

Если хотите писать NULL, то надо будет писать конструкции типа IFNULL (...).

Неактивен

 

#5 16.10.2007 06:07:53

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Усложненный запрос к таблице

Учтите, что хранимую процедуру можно написать, только если у вас версия MySQL 5.0 или выше.
это можно проверить командой SELECT VERSION();

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

Неактивен

 

Board footer

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