Вы пишете плохую информацию о своей проблеме, но я попытаюсь привести пример, чтобы помочь вам.
У вас есть таблица "A" и таблица "B", и вам нужно выбрать " top"дата таблицы" B ", связанная с таблицей" A "
Примеры таблиц:
Table A:
AID| NAME
----|-----
1 | Foo
2 | Bar
Table B:
BID | AID | DateField
----| ----| ----
1 | 1 | 2000-01-01
2 | 1 | 2000-01-02
3 | 2 | 2000-01-01
ЕслиВы делаете это sql:
SELECT * FROM A RIGHT JOIN B ON B.ID = A.ID
Вы получаете всю информацию о A и B, которая связана по ID (это в этом теоретическом случае является полем, которое является общим для обеих таблиц, чтобы связать отношение)
A.AID | A.NAME | B.BID | B.AID | B.DateField
------|--------|-------|-------|--------------
1 | Foo | 1 | 1 | 2000-01-01
1 | Foo | 2 | 1 | 2000-01-02
2 | Bar | 3 | 2 | 2000-01-01
Но вам требуется только последняя дата для каждого элемента таблицы A (верхняя дата B)
Далее, если вам нужно получить только верхнюю ДАТУ, которую нужно сгруппироватьВаш запрос с помощью B.AID и выборки только на верхнюю дату
SELECT
B.AID, First(A.NAME), MAX(B.DateField)
FROM
A RIGHT JOIN B ON B.ID = A.ID
GROUP BY
B.AID
И результат этой операции:
B.AID | A.NAME | B.DateField
------|--------|--------------
1 | Foo | 2000-01-02
2 | Bar | 2000-01-01
В этом результате я удалилнекоторые поля, которые дублируются (например, A.AID и B.AID, которые являются отношениями между двумя таблицами) или не являются обязательными.
- Совет: это также работает, если у вас есть больше таблиц в sql.Sql «делает» запрос, а затем применяет группировку для использования B, чтобы ограничить количество повторений B верхней датой.