Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.03;
Скачать: CL | DM;

Вниз

ПОмогите составить SQL запрос   Найти похожие ветки 

 
AntonUSAnoV   (2008-01-08 18:08) [0]

Такая проблема:
Есть БД по спортивным мероприятиям, в таблице отображаются соревнования, сроки проведения, для сроков в таблице Базы данных определены след. поля: число, месяц, год.
Нужно составить SQL запрос к БД типа: пользователь указывает диапазон времени формата с (число),(месяц) по (число)(месяц), и программа выдаёт все мероприятия, проходящие в эти сроки.

Изначально написал такой вот код, :
if c1 = "%" then
    query1.SQL[3]:="(chislo >= ""+c1+"" or chislo is null) and" else
    query1.SQL[3]:="(chislo >= ""+c1+"") and";
 if m1 = "%" then
    query1.SQL[4]:="(month1 like ""+m1+"" or month1 is null) and" else
    query1.SQL[4]:="(month1 like ""+m1+"") and";
 if c2 = "%" then
    query1.SQL[5]:="(chislo2 <= ""+c2+"" or chislo2 is null) and" else
    query1.SQL[5]:="(chislo2 <= ""+c2+"") and";
  if m2 = "%" then
    query1.SQL[6]:="(month2 like ""+m2+"" or month2 is null) and" else
    query1.SQL[6]:="(month2 like ""+m2+"") and";
  if vyear = "%" then
    query1.SQL[7]:="(year1 like ""+vyear+"" or year1 is null) and" else
    query1.SQL[7]:="(year1 like ""+vyear+"") and";


но он логически неверный, очень прошу помочь..


 
AntonUSAnoV   (2008-01-08 18:10) [1]

c1 -с какого числа производится поиск,
c2 - по какое число
m1 - с какого месяца
m2 - по какой месяц


 
Правильный_Вася   (2008-01-08 19:17) [2]

с 10 по 20 всех месяцев с февраля по май?
или с 10 февраля по 20 мая?


 
Malik   (2008-01-08 19:20) [3]

А не судьба  число, месяц, год в один тип сделать — Date сделать?


 
AntonUSAnoV   (2008-01-08 20:18) [4]


> Правильный_Вася  

с 10 февраля по 20 мая !


 
AntonUSAnoV   (2008-01-08 20:21) [5]


> Malik

Ну мероприятие длится с 10 мая по 20 мая , а формат даты если не ошибаюсь дд.мм.гггг, т.е. мне для правильной записи числа нужно будет записывать в формате с 10 мая 2007 по 20 мая 2007.


 
Malik   (2008-01-08 20:25) [6]


> AntonUSAnoV   (08.01.08 20:21) [5]

А что ты будеш делать с мероприятием который идет на стыке годов скажем 20 ноб 2007 по 20 фев 2008?


 
AntonUSAnoV   (2008-01-09 18:24) [7]


> Malik

Такого не бывает, нет год для обоих концов сроков не нужен.


 
Ega23 ©   (2008-01-09 18:30) [8]


> а формат даты если не ошибаюсь дд.мм.гггг,


Ошибаешься.
Читай про тип TDateTime и про его строковое представление.


 
Malik   (2008-01-09 18:48) [9]


> Читай про тип TDateTime и про его строковое представление.

Сори если правильно то так сделать: мм.дд.гггг???


 
Юрий Зотов ©   (2008-01-09 20:01) [10]

> AntonUSAnoV   (08.01.08 20:21) [5]

> а формат даты если не ошибаюсь дд.мм.гггг,

Это не формат даты, это формат ее строкового представления. И он может быть ЛЮБЫМ, каким Вы только захотите. А в таблице должно быть не 3 целых поля (день, месяц, год), а одно поле типа TDateTime (сразу вся дата). Тогда весь ваш запрос сразу станет очень простым (...where DATE between...) и гарантированно правильным (то есть, с автоматическим учетом високосных лет, разного количества дней в месяцах и всего остального).

> Malik   (09.01.08 18:48) [9]

Если правильно, то надо прочитать про тип TDateTime и понять, что в нем нет ни месяцев, ни годов. И что его строковое представление можно сделать ЛЮБЫМ. Хоть мм.дд.гггг, хоть как угодно иначе.



Страницы: 1 вся ветка

Текущий архив: 2008.02.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
2-1199575318
koha overload
2008-01-06 02:21
2008.02.03
Помогите разобраться под что модуль написан?


15-1198725040
Slider007
2007-12-27 06:10
2008.02.03
С днем рождения ! 27 декабря 2007 четверг


15-1198421299
общества
2007-12-23 17:48
2008.02.03
ООО, ОАО, ЗАО


2-1199547471
VAD*Anti Gopn!k
2008-01-05 18:37
2008.02.03
IP-адреса локальной сети.


1-1193313819
Кристалл-эл
2007-10-25 16:03
2008.02.03
Господа, подскажите, как сделать "глобальные гор. клавиши"