Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ / 18 сообщений из 18, страница 1 из 1
15.07.2003, 12:28
    #32208162
Cnupum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
sql.Clear;
sql.Add('select s.FIO,m.date_sled ');
sql.Add('from table_main m,table_sotr s');
sql.Add('where m.date_sled<=:d ');
sql.Add('order by s.FIO');
Parameters.ParamByName('d').Value:=datetostr(now);

КАК СДЕЛАТЬ, ЧТОБЫ FIO НЕ ПОВТОРЯЛОСЬ
Т.Е. ЕСТЬ КАКИЕ ТО ЧУВАКИ В ТАБЛИЦЕ SOTR А ДАТА СДАЧИ ЭКЗАМОВ В ТАБЛИЦЕ MAIN ЕСТЕСТВЕННО ЧТО ДАТ НА КАЖДОГО БОЛЬШЕ ОДНОЙ. ВОТ И ВОПРОС КАК СДЕЛАТЬ ЧТОБЫ ВЫВОДИЛ КАЖОГО ПО ОДНОМУ, ПРИЧЕМ ДАТА ФАКТИЧЕСКИ И НЕ ВАЖНА (У НЕЕ VISIBLE =FALSE, ТАК .. УСЛОВИЕ ВЫБОРКИ)
...
Рейтинг: 0 / 0
15.07.2003, 12:35
    #32208178
Cnupum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
sql.Clear;
sql.Add('select s.FIO,m.date_sled,s.kod,m.kod_sotr ');
sql.Add('from table_main m,table_sotr s');
sql.Add('where m.date_sled<=:d and s.kod=m.kod_sotr ');
sql.Add('order by s.FIO');
Parameters.ParamByName('d').Value:=datetostr(now);


спасибо за беспокойство и спасибо
...
Рейтинг: 0 / 0
15.07.2003, 13:38
    #32208293
Papka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
Toka luche :d - sdelaj tipa DateTime. i peredavaj kak DateTime.
...
Рейтинг: 0 / 0
15.07.2003, 14:05
    #32208341
Andrew Campball
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
Код: plaintext
1.
2.
3.
4.
select distinct s.FIO
  from table_main m,table_sotr s
  where m.date_sled<=:d
  order by s.FIO
...
Рейтинг: 0 / 0
15.07.2003, 20:19
    #32208969
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
Код: plaintext
1.
2.
3.
4.
5.
6.
select s.FIO,max(m.date_sled)
from table_main m join table_sotr s
on s.kod=m.kod_sotr 
where m.date_sled<=getdate()
group by s.FIO
order by s.FIO
...
Рейтинг: 0 / 0
16.07.2003, 10:54
    #32209379
Timujin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
2 Cat2
В запросе
select s.FIO,max(m.date_sled)
from table_main m join table_sotr s
on s.kod=m.kod_sotr
where m.date_sled<=getdate()
group by s.FIO
order by s.FIO
лишнее делать order by s.FIO, хотя я думаю, что Server тоже так считает и на время выполнения это не влияет
...
Рейтинг: 0 / 0
16.07.2003, 11:34
    #32209446
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
НЕЛЬЗЯ рассчитывать на порядок выдачи строк если он не указан явно
...
Рейтинг: 0 / 0
16.07.2003, 11:43
    #32209460
Timujin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
2 Gluk (Kazan)
Server перед группировкой записей сортирует их. У меня ни разу не было, чтобы после group by записи не выстраивались в порядке, указанном в group by
...
Рейтинг: 0 / 0
16.07.2003, 11:50
    #32209470
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
2 Timujin

Server перед группировкой записей сортирует их.

Где это написано? Если ты хочешь гарантированно иметь отсортированные записи ORDER BY необходим.
...
Рейтинг: 0 / 0
16.07.2003, 11:59
    #32209483
Timujin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
Согласен на контрольный в голову. Насчет сортировки записей перед их группировкой, конечно, нигде не написано, но так логичнее всего. Я не настаиваю, просто я делаю так и пока проблем не было.
...
Рейтинг: 0 / 0
16.07.2003, 12:03
    #32209493
Cnupum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
Все равно не работает кстати
...
Рейтинг: 0 / 0
16.07.2003, 12:12
    #32209506
Cnupum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
sql.Clear;
sql.Add('select distinct s.FIO,s.kod,m.kod_sotr,m.date_next ');
sql.Add('from table_main m, table_sotr s');
sql.Add('where m.date_next<=:d and s.kod=m.kod_sotr');
Parameters.ParamByName('d').Value:=now;
sql.Add('order by s.FIO');


вот этот текст выбирает все парвильно, но записи с одинаковыми FIO повторяются


sql.Add('select s.FIO,max(m.date_sled)');
sql.Add('from table_main m join table_sotr s');
sql.Add('on s.kod=m.kod_sotr');
sql.Add('where m.date_sled<=getdate()');
sql.Add('group by s.FIO');


этот пишет ошибка в синтаксисе FROM
...
Рейтинг: 0 / 0
16.07.2003, 14:17
    #32209739
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
2 Timujin

>> Server перед группировкой записей сортирует их. У меня ни разу не было ...

У меня было. Под Oracle программка долгое время работала как надо, а потом по непонятной причине данные "рассыпались" Стал проверять, оказывается забыл order by после group by.

Сервер сам решает в каком порядке удобнее выводить записи если пользователь этим не озаботился. В любом случае нужно взять за правило ставить order by если сортировка нужна.
...
Рейтинг: 0 / 0
16.07.2003, 14:24
    #32209754
Timujin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
2 Gluk (Kazan)
>> У меня было. Под Oracle программка долгое время работала как надо ...
Я работаю под InterBase. Спасибо за пример, я думал, что прав, но факты - вещь упрямая. Честно буду делать order by после group by.
...
Рейтинг: 0 / 0
16.07.2003, 15:51
    #32209919
Cnupum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
не отвлекайтесь от темы .... помогите блин запрос клевый сделать
...
Рейтинг: 0 / 0
16.07.2003, 15:57
    #32209940
Timujin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
sql.Clear;
sql.Add('select distinct s.FIO');
sql.Add('from table_main m,table_sotr s');
sql.Add('where m.date_sled<=:d ');
sql.Add('order by s.FIO');
Parameters.ParamByName('d').Value:=datetostr(now);

Чуть поправил твой первоначальный вариант. Я думаю, что так вопрос решен.
...
Рейтинг: 0 / 0
16.07.2003, 16:01
    #32209952
Timujin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
Ой!!!

sql.Clear;
sql.Add('select distinct s.FIO');
sql.Add('from table_main m,table_sotr s');
sql.Add('where m.sotr_id = s.id and m.date_sled<=:d ');
sql.Add('order by s.FIO');
Parameters.ParamByName('d').Value:=datetostr(now);

Не связал таблицы в предыдущем сообщении
...
Рейтинг: 0 / 0
16.07.2003, 22:49
    #32210331
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ
Про Order By. На MS 6.5 все было шоколадно. Если был GROUP BY, то сортировка шла по его полям. Первое время так же работала семера. А потом, то ли я MDAC новый поставил, то ли SP какой - не помню, все отвалилось. И без прямого "Order By" ничего не сортируется.
=============
Cnupum. Если предложеный мною запрос не проходит, то дело, скорее всего в Вашей ненормализованной базе. А то что она не нормализована - 100%. Присутсвие ФИО говорит от том, что нет даже 1NF. Если Вы хотите реально получит помощь, то киньте скрипт с заполнением базы тестовыми значениями и желаемый результат. Тут телепатов нету. Я отвечал по наиболее распространенному варианту требуемого решения - последняя отметка человека где-то.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ЕЩЕ ОДНА ПРОБЛЕМКА С SQL ЗАПРОСОМ / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]