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

Вниз

group by хелп   Найти похожие ветки 

 
vltorax   (2006-04-28 09:39) [0]

select rabotnik, detal, mashina, max (data)
from remont
group by rabotnik, detal, mashina

цель получить список последих ремонтов каждой детали на каждой машине, при этом необходимо знать кто производил ремонт. в ответе на представленный выше запрос будут повторяться одинаковые ремонты произведенные в разное время если их производили разные люди. нужны только последние . Как тут это запросить (paradox tables).
заранее благодарю


 
Johnmen ©   (2006-04-28 09:53) [1]

SELECT * FROM Table T1
WHERE T1.data = (SELECT MAX(T2.data) FROM Table T2
                         WHERE (T1.rabotnik=T2.rabotnik) AND (T1.detal=T2.detal) AND (T1.mashina=T2.mashina))


 
vltorax   (2006-04-28 10:00) [2]

таблица-то одна, как понимать Т1 и Т2?


 
Johnmen ©   (2006-04-28 10:05) [3]

Так, как предписывает стандарт SQL. Т.е. как псевдоним, он же алиас(alias).


 
vltorax   (2006-04-28 10:22) [4]

хм, выдаёт ремонты с последней датой только
нужны последние ремонты по всем деталям и машинам

SELECT * FROM remont
WHERE data = (SELECT MAX(data) FROM remont
                     group by mashina, detal
типа того что-то надо, наверное, но конкретно это даёт ошибку
operation not aplicable


 
Johnmen ©   (2006-04-28 10:25) [5]

Убери в [1] условие T1.rabotnik=T2.rabotnik


 
ЮЮ ©   (2006-04-28 10:28) [6]

>но конкретно это даёт ошибку
конкретно в этом нет закрывающей скобки, в отличии от [1]

Выброси rabotnik из своего запроса и получишь что надо


 
vltorax   (2006-04-28 10:30) [7]

тот же самый ответ


 
vltorax   (2006-04-28 10:31) [8]

скобки нет только в форуме Ж)


 
ЮЮ ©   (2006-04-28 10:33) [9]

Выброси rabotnik из своего запроса и получишь что надо

Если же работник всё-таки интересует, то к результату надо Join-ить таблицу:

Select  remont.* r
FROM
 "lastRemont.sql" lr
 JOIN remont r ON  (r.detal=lr.detal) AND (r.mashina=lr.mashina)


 
vltorax   (2006-04-28 10:41) [10]

ага dankeshon
дело все в том и состоит что он, рабботтник этот и интересует, джёинить не получается (специфика приложения, не буду распростаняться)
нужен другой путь, если его нет - построим


 
ЮЮ ©   (2006-04-28 11:23) [11]


> джёинить не получается (специфика приложения, не буду распростаняться)

даже так, как в [9]? :)

Чисто запросом можно ответить на вопрос "когда последний раз ремонтировалась  любая деталь на любом станке: (1)

select mashina, detal, max (data) data
from remont
group by mashina, detal

а чтобы найти все записи из remont, надо теперь соединить этот запрос с таблицей по трем полям:

Select  remont.* r
FROM
 ( select mashina, detal, max (data) data
   from remont
  group by mashina, detal ) lr
JOIN remont r ON  
   (r.detal=lr.detal) AND (r.mashina=lr.mashina) AND  (r.data=lr.data)

Так мы получим те записи, что обусловили результат запроса (1)

Но синтаксис Local SQL не позволяет использоват подзапросы как таблицы.
Однако BDE позволет оформить подзапрос в виде тектового файла и использовать уже его (см. Local View).

>нужен другой путь, если его нет - построим


Вперед  в цикле по правильно отсортированной таблице remont



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

Форум: "Базы";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.012 c
3-1146121628
Ильичев С.А.
2006-04-27 11:07
2006.06.25
SELECT после INSERT


1-1147986841
Германн
2006-05-19 01:14
2006.06.25
Установка Indy9 на Д6


1-1148025448
QuickFinder
2006-05-19 11:57
2006.06.25
Текстовые файлы огромного размера


2-1149773568
XTD
2006-06-08 17:32
2006.06.25
Как программно свернуть окно ?


2-1149741898
Roman80
2006-06-08 08:44
2006.06.25
RichEdit на последнию строку.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский