Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.02.03;
Скачать: [xml.tar.bz2];

Вниз

ПОмогите составить 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.052 c
15-1198422204
Sergey Masloff
2007-12-23 18:03
2008.02.03
А почему просто не удалять мусорные ветки?


2-1198145145
vegarulez
2007-12-20 13:05
2008.02.03
Вопрос про перекодировку response (IdHTTP, Indy8->Indy10)


11-1183576848
=BuckLr=
2007-07-04 23:20
2008.02.03
OnRE_URLClick правой мышью


15-1198530408
Владимир
2007-12-25 00:06
2008.02.03
Не загружается Windows XP


3-1190719104
oleg_v
2007-09-25 15:18
2008.02.03
DBF - как полностью удалить запись из таблицы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский