Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2011, 15:42   #1
Ximera370
Пользователь
 
Регистрация: 06.07.2011
Сообщений: 11
Восклицание функция мах в таблице где есть одинаковsе значения

Здравствуйте!!!
Подскажите кто может, никак не могу понять что сделать в такой ситуации...

Есть две таблицы.
1. Основная - Osnova имеет поля ID*, f1,f2,f3...
2. Подчиненная - Status имеет поля ID*, status, datastatus, IDosnova
где Оsnova.ID=Status.IDosnova
Для каждого Оsnova.ID может быть несколько статусов с разными датами. Приблизительно вот так:

Status

ID*, status, datastatus, IDosnova
76 передано 27.06.2011 134
77 сдано 13.05.2011 134
78 возврат 14.09.2010 135
79 сдано 15.07.2011 135


Необходимо сделать такую выборку что бы остались для каждого IDosnova
только последние по дате значения.т.е.

ID*, status, datastatus, IDosnova
76 передано 27.06.2011 134
79 сдано 15.07.2011 135


я пробовал с помощью
Код:
 
select status.IDosnova, max(status.Datastatus)
from status
where (status.IDosnova=status.IDosnova)
and
(status.datastatus>= :datastart)
and
(status.datastatus<= :datafinish)

group by status.IDosnova,

однако так оно правильно выбирает почему то не всегда(например при одном ID последнюю занесенную запись не всегда учитывает) и кроме этого так можно выбрать только одно поле, а мне в выборке еще надо несколько полей...задать несколько полей можно но тогда в віборке получаются все равно все записи.

Последний раз редактировалось Stilet; 26.07.2011 в 14:25.
Ximera370 вне форума Ответить с цитированием
Старый 25.07.2011, 16:19   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1)
Цитата:
Код:
where (status.IDosnova=status.IDosnova)
Это бред! (точнее, не бред, а абсолютно бесполезная вещь! С таким же успехом можете написать where (1=1)


2) думаю, что проблема в atastart и atafinish ...
такой запрос как отрабатывает, нормально?
Код:
select status.IDosnova, max(status.Datastatus)
from status
group by status.IDosnova

p.s. получите в результате только IDosnova и максимальную дату по этой самой IDosnova
Код:
134, 27.06.2011
135, 15.07.2011

Последний раз редактировалось Serge_Bliznykov; 25.07.2011 в 16:23.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.07.2011, 11:58   #3
Ximera370
Пользователь
 
Регистрация: 06.07.2011
Сообщений: 11
По умолчанию

Спасибо большое!!!как раз эта бесполезная строчка все и портила, а без нее - то что и требовалось!

Вот только как мне в таком запросе выбрать не только status.IDosnova а еще несколько полей?

Последний раз редактировалось Stilet; 26.07.2011 в 14:25.
Ximera370 вне форума Ответить с цитированием
Старый 26.07.2011, 13:37   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вот только как мне в таком запросе выбрать не только status.IDosnova а еще несколько полей?
а вот с этим у Вас будут определённые проблемы..

теоретически (если Вы уверены, что Вам именно это и нужно!), то это можно сделать так:
Код:
select Status.* from Status, 
   (select InStatus.IDosnova as IDosnova, max(InStatus.Datastatus) as MaxDS 
          from status InStatus 
          group by InStatus.IDosnova) as sMax
where 
   sMax.MaxDS = Status.Datastatus
and
  sMax.IDosnova = Status.IDosnova
p.s. ВНИМАНИЕ!: если по какому-то IDOsnova будет несколько дат равных масимальной - выберутся все строчки!!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка есть ли такая запись в таблице Uxas Помощь студентам 6 20.02.2011 19:55
Самопроизвольный лимит значения AutoIndex в таблице MySQL DJ Triton PHP 1 23.04.2010 10:16
Замена значений в одной таблице на значения из другой 1134 Microsoft Office Excel 10 09.04.2010 12:12
Паскаль. мах и min значения в матрице Dog Помощь студентам 5 29.09.2009 16:10
Поиск значения в таблице solo7_77 Microsoft Office Excel 3 15.11.2008 01:26