Нужна помощь со сложным запросом - PullRequest
0 голосов
/ 12 мая 2011

Мой набор результатов выглядит нормально, за исключением того, что я получаю дополнительные дубликаты результатов, которых я хочу избежать, вот такой случай:

Я использую две таблицы:

заказ

id|companyname|routeid|orderdate
1 |company1   | 23dsa | 
2 |company1   | 23dsa | 2011-04-28
3 |company1   | 23dsa | 2011-04-05
4 |company2   | 24gcc | 2011-22-05

машина

id| vehiclename | routeid
1 | van1        | 23dsa 
2 | van2        | 24gcc 

Это мой запрос 1:

select t1.companyname, max(t1.orderdate) as orderdate
from order t1, vehicle t2 where t1.routeid=t2.routeid
group by t1.companyname, t1.orderdate
order by t1.id

Это запрос 2:

 select t1.companyname, max(t1.orderdate) as orderdate
    from order t1, vehicle t2 where t1.routeid=t2.routeid
    group by t1.companyname, t1.orderdate having count(1) = 1
    order by t1.id

Это мой результат:

companyname | orderdate
company1    |  
company1    | 2011-04-28
company1    | 2011-04-05
company2    | 2011-22-05

Я бы хотел, чтобы это было так:

companyname | orderdate
company1    | 2011-04-28
company2    | 2011-22-05

я пропустил не ноль:

select t1.companyname, max(t1.orderdate) as orderdate
    from order t1, vehicle t2 where t1.orderdate is not null and t1.routeid=t2.routeid
    group by t1.companyname, t1.orderdate
    order by t1.id

Ответы [ 2 ]

0 голосов
/ 12 мая 2011

Как насчет:

SELECT
    companyname, MAX(orderdate) AS orderdate
FROM
    `order`
GROUP BY
    companyname
ORDER BY
    id

А если вам понадобится этот автомобиль, то:

SELECT
    companyname, MAX(orderdate) AS orderdate
FROM
    `order` o, vehicle v
WHERE
    o.routeid=v.routeid
GROUP BY
    companyname
ORDER BY
    o.id
0 голосов
/ 12 мая 2011
select t1.companyname, max(t1.orderdate) as orderdate
from order t1, vehicle t2 where t1.routeid=t2.routeid
group by t1.companyname
order by t1.id

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...