|
|
|
| Всем привет, подскажите как найти записи или хотябы просто значения.
Есть для простоты 2 таблицы:
Таб1.ПолеДата1, Таб1.ПолеХ,
и Таб2.ПолеДата2, Таб2.ПолеY
Таб1 и Таб2 связаны по полю Код1.
Надо найти запись: для мах Таб1.ПолеДата1 и внутри мах Таб2.ПолеДата2 и соответствующие им Таб1.ПолеХ, Таб2.ПолеY | |
|
| |
|
|
|
| Для одного кода что - ли?
поподробнее плиз, что значит "и внутри мах Таб2.ПолеДата2 " | |
|
| |
|
|
|
| Найти мах(Таб1.ПолеДата1) и значения полей соотв. записи. У него есть несколько записей из подинённой Таб2 - из них надо отобрать мах(Таб2.ПолеДата2) и значения полей соотв. записи.
Беда в том, что когда формируешь запрос - находишь только саму макс.дату, а соотвт. ей значения полей ...
Получилось объяснить?
Если нет, то может кину вариант :) | |
|
| |
|
|
|
| А если таким образом?
SELECT Таб2.Код2, Таб2.Дата2, Таб2.Поле2
FROM Таб2
WHERE (((Таб2.Дата2)=(SELECT Max(Таб2.Дата2) AS [Max-Дата2]
FROM Таб2))); | |
|
| |
|
|
|
| Я понял так.
В таблице Таб1 нужно найти запись с максимальным ПолеДата1. Взять значения Код1 и ПолеХ из этой записи.
Затем из таблицы Таб1 получить все записи соответствующие получененному Код1 из них выбрать запись с максимальным ПолеДата2 и получить из этой записи ПолеХ.
Так? | |
|
| |
|
|
|
| Олег: малость иначе:
Затем из таблицы Таб2 получить все записи соответствующие получененному Код1 из них выбрать запись с максимальным ПолеДата2 и получить из этой записи ПолеY.
Ирча: верно, но это для одной т-цы, а у меня 2. У каждой таб1.дата1 может быть несколько записей из таб2 с полями Дата2, полеY
Спасибо, ребят, одним запросом не обойтись, у меня выборка по нескольким таб-м, надо код писать. | |
|
| |
|
|
|
| Одним действительно не обойтись, но если этот вложить в еще один, все будет... просто из Ваших слов не очень понятно как джойнить данные из первой и второй таблиц) | |
|
| |
|
|
|
| А такой вопрос в табл1 для одной даты могут быть несколько код1? | |
|
| |
|
|
|
| Ну вот попробуй так:
SELECT TOP 1 Таблица1.дата1, Таблица1.ПолеX, (SELECT TOP 1 Таблица2.ПолеY
FROM Таблица2 where Таблица2.код1 = Таблица1.код1
ORDER BY Таблица1.дата2 DESC;) AS Y
FROM Таблица1
ORDER BY Таблица1.дата1 DESC;
|
| |
|
| |
|
|
|
| или так:
SELECT TOP 1 Таб1.ПолеДата1, Таб2.ПолеДата2, Таб2.ПолеY
FROM Таб1 INNER JOIN Таб2 ON Таб1.Код1 = Таб2.Код1
ORDER BY Таб1.ПолеДата1 DESC , Таб2.ПолеДата2 DESC;
|
| |
|
| |
|
|
|
| Спасибо, я вернулясь :), буду пробовать . | |
|
| |