Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.07.2013, 12:59
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию SQL - выбрать только те записи, где значение одного столбца больше X

Здравствуйте, товарищи!
Обращусь к вам, за помощью.
Есть таблица, в ней есть 32 столбца.
Первый столбец - название датчика, остальные 31 - значение температуры (float -128...+128).
Как можно выбрать только те записи, где хотя бы в одном столбце температура превышает допустимую?
Можно конечно и :
Код:
SELECT * FROM dbo.Table WHERE (a1 > 50) AND (a2 > 50) .... AND (a30 >50)
но можно же как то проще, да? :-)
Ответить с цитированием
  #2  
Старый 23.07.2013, 14:07
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

ну
во первых: не AND, а OR
во вторых: можно попробовать извратиться примерно таким образом:
Код:
SELECT t.id, s.ss
FROM dbo.Table t
  JOIN
    (
    SELECT t1.id, ';'||t1.a1||';'||t1.a2||';'||t1.a3||';'||t1.a4||';'...||t1.a30||';' AS ss
    FROM dbo.Table t1
    ) s ON s.id = o.id
WHERE s.ss CONTAINING (';'||50||';')
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 23.07.2013 в 14:09.
Ответить с цитированием
  #3  
Старый 23.07.2013, 17:30
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Цитата:
Сообщение от alexusankov
Здравствуйте, товарищи!
Обращусь к вам, за помощью.
Есть таблица, в ней есть 32 столбца.
Первый столбец - название датчика, остальные 31 - значение температуры (float -128...+128).
Как можно выбрать только те записи, где хотя бы в одном столбце температура превышает допустимую?
Можно конечно и :
Код:
SELECT * FROM dbo.Table WHERE (a1 > 50) AND (a2 > 50) .... AND (a30 >50)
но можно же как то проще, да? :-)

может
Код:
var z: string;
...
z:='(a1 > 50) ';
for i:=2 to 31 do 
   z:=z + ' OR (a' + inttostr(i) + ' > 50) ';
adoqury1.sql.text:='SELECT * FROM dbo.Table WHERE ' + z; 

хотя, с точки зрения базы ничего не изменится))
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:20.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025