0

私は以下のクエリからの 2 つの結果セットであり、結果を 1 つのテーブルに「結合」したいのですが、ここから先に進む方法がわかりません。誰か親切にガイダンスを提供してください:

SELECT userid, vehicleId, count(vehicleId) As SearchCount FROM MemberSearches 
GROUP BY userid, vehicleId 
ORDER BY count(vehicleId) DESC

SELECT f.UserId, v.AutoId AS VehicleId, count(v.AutoId) AS SearchCount FROM Favorites f
LEFT JOIN [SellPost] sp
ON (f.PostId = sp.AutoId)
LEFT JOIN [Vehicle] v
ON (sp.CarId = v.AutoId)
GROUP BY f.UserId, v.AutoId
ORDER BY COUNT(v.AutoId) DESC

最初の選択の結果:

UserId       VehicleId  SearchCount
2926FC8A78FB    7       3
2926FC8A78FB    2       2
2926FC8A78FB    6       1

2 番目の選択の結果:

UserId       VehicleId  SearchCount
2926FC8A78FB    1       5
2926FC8A78FB    2       5

次のように最終結果を達成する必要があります。

UserId       VehicleId  SearchCount
2926FC8A78FB    1       5
2926FC8A78FB    2       7
2926FC8A78FB    6       1
2926FC8A78FB    7       3
4

3 に答える 3

2

効率的ではありません。動作をテストするだけです...

   SELECT userid, vehicleId, SUM(SearchCount) As SearchCount
FROM
(SELECT userid, vehicleId, count(vehicleId) As SearchCount FROM MemberSearches 
GROUP BY userid, vehicleId 
UNION ALL
SELECT f.UserId, v.AutoId AS VehicleId, count(v.AutoId) AS SearchCount FROM Favorites f
LEFT JOIN [SellPost] sp
ON (f.PostId = sp.AutoId)
LEFT JOIN [Vehicle] v
ON (sp.CarId = v.AutoId)
GROUP BY f.UserId, v.AutoId
) t
GROUP BY userid, vehicleId
于 2013-05-31T08:33:45.793 に答える
1
SELECT
    userid, vehicleId, count(*) As SearchCount
FROM (
    SELECT userid, vehicleId FROM MemberSearches 

    UNION ALL

    SELECT f.UserId, v.AutoId FROM Favorites f
    LEFT JOIN [SellPost] sp
    ON (f.PostId = sp.AutoId)
    LEFT JOIN [Vehicle] v
    ON (sp.CarId = v.AutoId)
) AS X
GROUP BY userid, vehicleId 
ORDER BY 3 DESC
于 2013-05-31T08:40:34.723 に答える