我想爲複雜的搜索場景構建SQL語句,我需要你們幫助。情景是:試圖爲複雜的搜索場景構建SQL語句(比較)
我試圖提供一項服務,商家將爲其註冊並提供他們將爲每個產品提供的最佳價值(最多的錢),然後用戶可以提供他們的位置並提供多少/他們每個產品有多少公斤,並將其值輸入到輸入表單中,然後我希望我的SQL將所有商家列入他們將在TOTAL中提供的金額,其中最多的商品將從頂部開始。
我有一個數據庫與招商局表& MerchantProducts表和地點表。每個商戶有20種產品,而這些產品都是相同的每一個商家,
Merchant Table I have:
UserID (which is merchant's unique id)
MerchantName
MerchantTelNo
MerchantIsActive
MerchantProducts Table I have:
MerchantProductID
UserID
MerchantProductName
MerchantProductValue
MerchantProductLastUpdated
我所試圖做的是:
1 - 我有一個產品的形式,用戶可以輸入產品的數量,他們有。哪一個產品清單隻包括產品名稱(標籤)和金額(文本框)。產品的數量將乘以產品的價值。
2-用戶將輸入他/她的位置。
3- SQL填充查找附近的商家,並將列出他們最多的數量將列在最上面,最下面的列表中。
到目前爲止,我已經完成了用戶將只選擇一種產品並輸入其位置的任務,並且我將以最高的金額返回一個商家。我已經完成了以下SQL存儲過程:
ALTER PROCEDURE [dbo].[GetNearbyLocations2]
@ChosenProduct VARCHAR(100),
@CenterLatitude FLOAT,
@CenterLongitude FLOAT,
@SearchDistance FLOAT,
@EarthRadius FLOAT AS DECLARE @CntXAxis FLOAT DECLARE @CntYAxis FLOAT DECLARE @CntZAxis FLOAT
SET @CntXAxis = COS(RADIANS(@CenterLatitude)) * COS(RADIANS(@CenterLongitude))
SET @CntYAxis = COS(RADIANS(@CenterLatitude)) * SIN(RADIANS(@CenterLongitude))
SET @CntZAxis = SIN(RADIANS(@CenterLatitude))
SELECT TOP 100 *,
ProxDistance = @EarthRadius * ACOS(dbo.XAxis(latitude, longitude)*@CntXAxis + dbo.YAxis(latitude, longitude)*@CntYAxis + dbo.ZAxis(latitude)*@CntZAxis)
FROM MerchantProducts AS M INNER JOIN Locations AS L ON M.UserID = L.UserID INNER JOIN (SELECT MAX(M.MerchantProductValue) AS MerchantProductValue FROM Locations AS L LEFT OUTER JOIN MerchantProducts AS M On L.UserID = M.UserID
WHERE (M.MerchantProductName = @ChosenProduct AND @EarthRadius * ACOS(dbo.XAxis(latitude, longitude)*@CntXAxis + dbo.YAxis(latitude, longitude)*@CntYAxis + dbo.ZAxis(latitude)*@CntZAxis) <= @SearchDistance))
AS MX ON M.MerchantProductValue = MX.MerchantProductValue
AND M.MerchantProductName = @ChosenProduct
AND latitude IS NOT NULL ORDER BY ProxDistance ASC
我想創建一個存儲過程來完成no。 1,2 & 3.基本上我希望用戶輸入他們每種產品有多少公斤的產品,然後我想讓sql通過每個商家並找出哪個商家將爲所有商品提供最多的總金額那些用戶在列表中輸入的產品。
在此先感謝,我希望我能通過我的問題。
你的問題是什麼? – 2012-04-23 14:49:04
對不起,我正在嘗試創建一個存儲過程來完成no。 1,2&3。基本上我想要用戶輸入他們每種產品有多少公斤的產品,然後我想讓sql通過每個商家,並找出哪個商家會給列表中最多的錢。 – kurban294 2012-04-23 17:43:53
感謝您告訴我們您正在嘗試做什麼,但您需要提出具體問題。本網站不適合志願爲您工作的人員。你寫的是一個規範,而不是一個問題。 – JohnFx 2012-04-23 18:33:09