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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.12.2011, 20:22
Den-is Den-is вне форума
Новичок
 
Регистрация: 07.10.2011
Сообщения: 66
Репутация: 10
По умолчанию Запрос

Всем привет, подскажите как правильно написать?

Вот такой запос:
Код:
select * from tab1, tab2 where (tab1.nomer = tab2.nomer) and (at1 = (select max(at1) from tab2))'
проблема в том что этот запрос выводит только одну запись с максимальным значением at1, а мне нужно чтобы для каждой tab1.nomer выводилась максимальное значение at1, далее я делаю следующее:
Код:
select * from tab1, tab2 where (tab1.nomer = 1) and (tab1.nomer = tab2.nomer) and (at1 = (select max(at1) from tab2))'

но вместо того что бы вывести максимсальное значение at1 для tab1.nomer = 1 он ни выводит ничего, так как максимальное значение at1 содержит запись не tab1.nomer = 1

как правильно нужно задать условие?
Ответить с цитированием
  #2  
Старый 20.12.2011, 06:31
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Код:
select tab1.nomer, max(tab2.at1)
from tab1, tab2
where tab1.nomer = tab2.nomer
group by tab1.nomer
__________________
Google в помощь
Ответить с цитированием
  #3  
Старый 20.12.2011, 06:56
Den-is Den-is вне форума
Новичок
 
Регистрация: 07.10.2011
Сообщения: 66
Репутация: 10
По умолчанию

Огромное спасибо что в очередной раз выручил!
ща попробую......
Ответить с цитированием
  #4  
Старый 20.12.2011, 08:39
Den-is Den-is вне форума
Новичок
 
Регистрация: 07.10.2011
Сообщения: 66
Репутация: 10
По умолчанию

Все работает!)))
Ответить с цитированием
  #5  
Старый 21.12.2011, 06:18
Den-is Den-is вне форума
Новичок
 
Регистрация: 07.10.2011
Сообщения: 66
Репутация: 10
По умолчанию дополнительно

Слушай, а если вот так нужно:
1.- вот тут все понятно, работает.
Код:
select sotrudniki.familia, sotrudniki.ima, sotrudniki.otchestvo, max(attestacia_itr.at1), max(attestacia_itr.at2), max(attestacia_itr.at3) from 
sotrudniki, attestacia_itr where sotrudniki.tabel = attestacia_itr.tabel group by sotrudniki.familia, sotrudniki.ima, sotrudniki.otchestvo

2.- но стоит мне добавить еще одно поле "примечание" в конце, то не работает, выдается сообщение что это поле не может быть найдено
Код:
select sotrudniki.familia, sotrudniki.ima, sotrudniki.otchestvo, max(attestacia_itr.at1), max(attestacia_itr.at2), max(attestacia_itr.at3), attestacia_itr.primechanie from 
sotrudniki, attestacia_itr where sotrudniki.tabel = attestacia_itr.tabel group by sotrudniki.familia, sotrudniki.ima, sotrudniki.otchestvo, attestacia_it.primechanie
Ответить с цитированием
  #6  
Старый 21.12.2011, 06:36
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Ну конечно же оно не может быть найдено
Код:
select sotrudniki.familia, sotrudniki.ima, sotrudniki.otchestvo, max(attestacia_itr.at1), max(attestacia_itr.at2), max(attestacia_itr.at3), attestacia_itr.primechanie
from sotrudniki, attestacia_itr
where sotrudniki.tabel = attestacia_itr.tabel
group by sotrudniki.familia, sotrudniki.ima,
sotrudniki.otchestvo, attestacia_itR.primechanie

А вообще совет используй следующий прием:
Код:
select s.familia, s.ima, s.otchestvo, max(a.at1), max(a.at2), max(a.at3), a.primechanie
from sotrudniki s, attestacia_itr a
where s.tabel = a.tabel
group by s.familia, s.ima, s.otchestvo, a.primechanie
__________________
Google в помощь
Ответить с цитированием
  #7  
Старый 21.12.2011, 07:06
Den-is Den-is вне форума
Новичок
 
Регистрация: 07.10.2011
Сообщения: 66
Репутация: 10
По умолчанию

а ну да, это моя невнимательность)))
но потом я правильно написал и все равно!
есть небольшаяч особенность, для отображения текущей записи мне пришлось создать одно вычисляемое поле "nomer" и как полагается в делфи, что бы все они отображались мне пришлось и все другие поля сразу указывать в adoquery и dbgrigeh. Так вот может в этом вся загвоздка?
Ответить с цитированием
  #8  
Старый 21.12.2011, 07:13
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Цитата:
Сообщение от Den-is
а ну да, это моя невнимательность)))
но потом я правильно написал и все равно!
есть небольшаяч особенность, для отображения текущей записи мне пришлось создать одно вычисляемое поле "nomer" и как полагается в делфи, что бы все они отображались мне пришлось и все другие поля сразу указывать в adoquery и dbgrigeh. Так вот может в этом вся загвоздка?
В таком случаи в ADOQuery обязательно нужно добавить новое поле (primechanie).
__________________
Google в помощь
Ответить с цитированием
  #9  
Старый 21.12.2011, 08:01
Den-is Den-is вне форума
Новичок
 
Регистрация: 07.10.2011
Сообщения: 66
Репутация: 10
По умолчанию

все правильно, я его создал, точнее говоря добавил из таблицы и ве ровно!
Ответить с цитированием
  #10  
Старый 21.12.2011, 08:30
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Цитата:
Сообщение от Den-is
все правильно, я его создал, точнее говоря добавил из таблицы и ве ровно!
В Object Treeview найди свой кверик, выбери его подраздел Fields, нажми на него правой кнопкой мыши и выбери Add all fields. Проверь свой запрос еще раз. Потом попробуй переключить свойство кверика Active на true. Если переключится, значит с квериком все нормально, если нет, то ты что-то там намудрил основательно.
__________________
Google в помощь

Последний раз редактировалось Ildar-tsr, 21.12.2011 в 08:33.
Ответить с цитированием
  #11  
Старый 21.12.2011, 08:58
Den-is Den-is вне форума
Новичок
 
Регистрация: 07.10.2011
Сообщения: 66
Репутация: 10
По умолчанию

все причина найдена!!!!
дело было в названии этого примечания, огромное спасибо за помощь!
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter