Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запрос


Link ©   (2002-06-19 11:37:00) 

Прошу помощи! Учусь работать с базами и составил запрос
select
dst_ip ,
sum(sent),
sum(recv)
from traffic
WHERE (SELECT DATEPART(mm, today)) = "2"
and(SELECT DATEPART (dd, today)) between "20" and "28"
and
sent > 0
and recv >0
group by dst_ip

Подскажите, что не так в шестой и седьмой строчке.
Заранее спасибо!


MOA   (2002-06-19 13:58:00) [1]

2Link: Когда создаете алиас на MSSQL (через БДЕ) скажите тип драйвера MSSQL. В именах - ничего особенного.
Однако, если Вам нужно просто записать таблицы Paradox в MSSQL, воспользуйтесь DTS - это проще. И не без пользы, если Вы будете работать с MSSQL.
И не забудьте поставить клиента!
А запросы - похожи, но не настолько. Такие - да (ну, datepart не в счет). Но очень многое по-другому. Начиная с идеологии построения системы и заканчивая более развитым языком запросов.
Удачи!


VAleksey   (2002-06-19 13:26:00) [2]

Local SQL понимает вложенные запросы.
в Local SQL ЕСТЬ функция которая может расщепить дату. И вообще см. LocalSQL.hlp


fnatali   (2002-06-19 13:12:00) [3]

>Link (19.06.02 13:04)
Дело в том, что синтаксис SQL для разных СУБД несколько отличается. И запрос, написанный для MSSQL не обязательно будет работать для Paradox.


Link   (2002-06-19 13:04:00) [4]

Существует программа на SQL и меня попросили написать к ней приложение на Delphi. Самой базы у меня нет, мы не успели её скачать. Но я сделал схожую базу в Paradox. И выясняется, что запросы соответствуют MSSQL. Я попробовал сделать такую же базу в MSSQL, а Database Desktop говорит, что Chosen alias is not of type MSSQL.


MOA   (2002-06-19 12:42:00) [5]

Если Вы Все же работаете с MSSQL и только начали проект - IMHO, лучше ADO.
А кто говорит про тип? Что именно говорит? Как именно Вы создаёте таблицу?


Link   (2002-06-19 12:35:00) [6]

Ребят, а чё у меня, когда создаю MSSQL таблицу, пишется, что alias не того типа. Тут что по-особому надо имя придумывать?


Link   (2002-06-19 12:21:00) [7]

Не знаю. Я только пятый день за базами. Может и нет в Paradox Datepart. Остальные варианты не помогли. А есть в Paradox эквивалентная функция? Просто очень нужно дату расчленить.


MOA   (2002-06-19 12:07:00) [8]

Пока писал ответ - обнаружилось, что за база. Сорри за MSSQL. А в Paradox есть DATEPART?
И в любом случае - ошибка во внутренних селектах - что же там выбирается? Откуда? Где связь с таблицей? (То что это поле таблицы - это не связь. Во вложенных SELECT FROM отсутствует. Откуда теперь брать today?). И движку это тоже неясно.
Удачи!


MOA   (2002-06-19 11:59:00) [9]

Это MSSQL, видимо?
today - это поле таблицы? Если нужна текущая дата, то в MSSQL это функция GETDATE().
Далее, по описанию DATEPART возвращает ЦЕЛОЕ (integer), т.е.
DATEPART(mm, today)=2 (без кавычек). Ну и второй аналогично.
Далее, непонятны 2 SELECT внутри - если today - это поле таблицы, то какой? Если это текущая дата - нет связи с таблицей traffic.
Т.е. варианты:

1. если today - это поле traffic

select
dst_ip ,
sum(sent),
sum(recv)
from traffic
WHERE DATEPART(mm, traffic.today) = 2
and DATEPART(dd, traffic.today) between 20 and 28
and
sent > 0
and recv >0
group by dst_ip

2. Если today - это попытка получить текущую дату, то непонятно о чем речь.

Удачи!


wicked   (2002-06-19 11:58:00) [10]

2 Link
повторяю - запрос для local sql засложен... он не понимает вложенных запросов... попробуй поубирать select"ы...


Link   (2002-06-19 11:52:00) [11]

А если имеется в виду дата в поле Today?


wicked   (2002-06-19 11:49:00) [12]

2 Link
а paradox имхо вообще такой запрос не проглотит...


Link   (2002-06-19 11:47:00) [13]

База Paradox.
Если интересуют поля, то
Dst_ip sent recv today

А ошибку выдаёт: лишняя скобка, когда убираешь, то лишнее between и так далее...


wicked   (2002-06-19 11:47:00) [14]

судя по функциям и синтаксису - это mssql...
а ошибка может быть в том, что в mssql нету такой функции, как today... ведь это не поле в таблице traffic?...
если имелась в виду текущая дата, то надо использовать getdate()...
и еще... в данном случае select"ы под where можно не использовать - уж очень неудобно читать...


GT-9121A   (2002-06-19 11:40:00) [15]

какая база, какая ошибка?


Наверх

Титульная страница Поиск, карта сайта Написать письмо