Здравствуйте, Аноним, Вы писали:
А>Есть таблицы Agents (agentid, name) Orders(orderid, agentid, prodid, orderdate) А>Как вывести самые последние заказы всех агентов? Спасибо.
Вариантов много(Зависит от СУБД), пробуй так
select A.agentid, A.name, O.orderid, O.prodid, O.orderdate from Agents A
left join Orders O on O.agentid = A.agentid
where O.orderdate = (select max(orderdate) from Orders where agentid = A.agentid)
Для оракла нуна аналитические функции поюзать
Не оставляй работу на субботу, а секс на старость
Re[2]: Помогите с запросом.
От:
Аноним
Дата:
19.08.05 12:53
Оценка:
Здравствуйте, banderlog, Вы писали:
Спасибо за отклик.
B>Вариантов много
меня уже клинит
B>(Зависит от СУБД)
MS SQL
B>select A.agentid, A.name, O.orderid, O.prodid, O.orderdate from Agents A B>left join Orders O on O.agentid = A.agentid B>where O.orderdate = (select max(orderdate) from Orders where agentid = A.agentid)
т.к. O.orderdate =, то выводится только один самый поздний заказ.
Хочется вывести все последние заказы по агентам.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, banderlog, Вы писали:
А>Спасибо за отклик.
B>>Вариантов много А>меня уже клинит
B>>(Зависит от СУБД) А>MS SQL
B>>select A.agentid, A.name, O.orderid, O.prodid, O.orderdate from Agents A B>>left join Orders O on O.agentid = A.agentid B>>where O.orderdate = (select max(orderdate) from Orders where agentid = A.agentid)
А>т.к. O.orderdate =, то выводится только один самый поздний заказ. А>Хочется вывести все последние заказы по агентам.
Это еще почему так? у меня в Ораклуле все ок Ты проверял? Если Микрософт Тупит, то дай мне ДДЛ таблиц, я проверю у себя.
select A.agentid, A.name, O.orderid, O.orderdate from Agents A
left join Orders O on O.agentid = A.agentid
where O.orderdate = (select max(orderdate) from Orders where agentid = A.agentid)
SELECT
a.agentid,
a.name,
o.orderid,
o.productid,
o.orderdate
FROM Orders AS o
INNER JOIN Agents AS a ON a.agentid=o.agentid
INNER JOIN
(
SELECT
oint.codeabon,
MAX(oint.orderdate) AS oe
FROM orders AS oint
WHERE oint.agentid = oint.agentid
GROUP BY oint.agentid
) AS oint ON oint.agentid=o.agentid
WHERE o.orderdate = oint.oe
вроде оттестил, вроде то что надо. но сомневаюсь.
может кто развеет сомнения
За последнюю неделю:
-------------
SELECT o.orederdate, a.name
FROM Agents AS a
LEFT OUTER JOIN Orders AS o
ON a.agentid = o.agentid
WHERE o.orderdate BETWEEN DATEADD('ww', -1, DATE()) AND DATE()
-------------
С Уважением,
Лекс
C Уважением,
Андрей.
Re[3]: Помогите с запросом.
От:
Аноним
Дата:
19.08.05 14:07
Оценка:
Спасибо, Андрей Игоревич:
Л>Или скажем, если в более жестких рамках:
Но это все для случаев, когда известно каждый делает минимум один заказ в день.
А если у одного вчера, а у другого год назад. Нужен дата последнего заказа каждого
агента. Евгений (banderlog) оказался "ближе к телу", но, видимо, разница MS SQL с Oracle'oм мешает нам стать друзьями
Я в соседней ветке привел рабочий запрос, хочется чтобы кто-нибудь проанализировал.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, banderlog, Вы писали:
А>Спасибо за отклик.
B>>Вариантов много А>меня уже клинит
B>>(Зависит от СУБД) А>MS SQL
B>>select A.agentid, A.name, O.orderid, O.prodid, O.orderdate from Agents A B>>left join Orders O on O.agentid = A.agentid B>>where O.orderdate = (select max(orderdate) from Orders where agentid = A.agentid)
А>т.к. O.orderdate =, то выводится только один самый поздний заказ. А>Хочется вывести все последние заказы по агентам.
Я проверил его на Микрософте, все работает. ты посмотри ты правильно условие написал
where O.orderdate = (select max(orderdate) from Orders where agentid = A.agentid) тут именно еще проверка максимальной даты только для агента из внешнего запроса where agentid = A.agentid
Не оставляй работу на субботу, а секс на старость
Re[4]: Помогите с запросом.
От:
Аноним
Дата:
22.08.05 11:51
Оценка:
Здравствуйте, Евгений:
признаю — мой косяк.
B>Я проверил его на Микрософте, все работает. ты посмотри ты правильно условие написал
В моей базе таблицы другие и сам запрос посложнее, видимо, я ошибся в другом месте,
а списал все на разницу MSSQL/Oracle.
Анализировать смысла нет: у меня — INNER JOIN + вложенный запрос, Ваша взяла
Заглаживаю вину голосованием.