Group by with union mysql select query

前端 未结 3 919
忘掉有多难
忘掉有多难 2020-12-08 06:02
(SELECT COUNT(motorbike.`owner_id`) as count,owner.`name`,transport.`type` FROM transport,owner,motorbike WHERE transport.type=\'motobike\'
AND owner.`owner_id`=moto         


        
相关标签:
3条回答
  • 2020-12-08 06:43

    This may be what your after:

    SELECT Count(Owner_ID), Name
    FROM (
        SELECT M.Owner_ID, O.Name, T.Type
        FROM Transport As T, Owner As O, Motorbike As M
        WHERE T.Type = 'Motorbike'
        AND O.Owner_ID = M.Owner_ID
        AND T.Type_ID = M.Motorbike_ID
    
        UNION ALL
    
        SELECT C.Owner_ID, O.Name, T.Type
        FROM Transport As T, Owner As O, Car As C
        WHERE T.Type = 'Car'
        AND O.Owner_ID = C.Owner_ID
        AND T.Type_ID = C.Car_ID
    )
    GROUP BY Owner_ID
    
    0 讨论(0)
  • 2020-12-08 06:57

    Try this EDITED:

    (SELECT COUNT(motorbike.owner_id),owner.name,transport.type FROM transport,owner,motorbike WHERE transport.type='motobike' AND owner.owner_id=motorbike.owner_id AND transport.type_id=motorbike.motorbike_id GROUP BY motorbike.owner_id)
    
    UNION ALL
    
    (SELECT COUNT(car.owner_id),owner.name,transport.type FROM transport,owner,car WHERE transport.type='car' AND owner.owner_id=car.owner_id AND transport.type_id=car.car_id GROUP BY car.owner_id)
    
    0 讨论(0)
  • 2020-12-08 07:04
    select sum(qty), name
    from (
        select count(m.owner_id) as qty, o.name
        from transport t,owner o,motorbike m
        where t.type='motobike' and o.owner_id=m.owner_id
            and t.type_id=m.motorbike_id
        group by m.owner_id
    
        union all
    
        select count(c.owner_id) as qty, o.name,
        from transport t,owner o,car c
        where t.type='car' and o.owner_id=c.owner_id and t.type_id=c.car_id
        group by c.owner_id
    ) t
    group by name
    
    0 讨论(0)
提交回复
热议问题