Bereta
Дата: 29.02.2008 12:35:46
Есть три связанные таблицы: "Описание"(Адрес (ключ-к Основа-> адрес), Тип), "Основа" (дата, адрес, данные),"Хранение" (id(ключ к основа -данные),парамтр1, параметр2).
В таблицу "хранение " постоянно добавляются данные в поля параметр1, параметр2.
Мне нужен запрос который бы выбирал только последние:основываясь на поля адрес и тип.
Представленный запрос не в какую этого делать не хочет(не с last , не с max-id-увеличивается).
SELECT Параметр1, Параметр2
FROM Хранение INNER JOIN (Описание INNER JOIN Основа ON Описание.Адрес=Основа.Адрес) ON Хранение.id=Основа.данные
WHERE (данные=id And id=(SELECT last(id) FROM Хранение WHERE данные=id Описание.Адрес=1) AND (Описание.тип=0) AND ((Основа.адресс)=1);
Поле таблицы "Основа"-дата это дата внесения записи в таблицу Хранение.
Вообщем я запутулась....
Bereta
Дата: 29.02.2008 16:05:18
Он выбирается, для адреса процессора 2, а для 1, 3, 4 другой последний как его выбрать ?
Задача считывать последние параметры для каждого адреса процессора и его типа. Т.е. В таблице TData они будут периодически записываться, а мне нужно выбрать только последние.
SELECT TData.RTS, TData.Uskz1, TData.Iskz1, TData.Uskz2, TData.Iskz2, TData.STR1, TData.STR2, TData.KIP1_PP, TData.KIP1_ZP, TData.KIP1_TP, TData.KIP1_SBP, TData.KIP1_VSK
FROM TData INNER JOIN (TOCC INNER JOIN TPolling ON TOCC.CP_Address=TPolling.Address) ON TData.ID=TPolling.DataID
WHERE ((TOCC.CP_Address)=2) AND ((TOCC.CP_Type)=0) AND ((TPolling.Address)=2) and (ID=(SELECT max (ID) FROM Tdata));
Последний вариант не подходит, т.к.на адреса процессоров 1 , 3,4 он ничего не выдает.
Типов только два:1 или 0
Спасибо.
Bereta
Дата: 29.02.2008 16:15:47
Т.е. для каждого адреса параметры обновляюся и если они отличаются от прежних,то они записываются и увеличивается ID И DataId(если неотличаются то записываетя DataID =0) мне нужно считывать последние.
GROUP BY-не помог т.к. считал один раз последние и на них остановился.