2012-01-03 151 views
0

我有一個查詢從數據庫中選擇companyNamedepartment。當我在我的網站上展示時,它將由companyName訂購。要顯示select語句 - sql查詢

當我從部門添加選擇productSold時,如果有2個productSold,我的部門分爲2個記錄。無論如何,我可以在表格中顯示1個部門的2條記錄。 謝謝。

我的查詢如下:

SELECT dbo.CompanyAdd.companyName, 
     dbo.OrderDetails.department, 
     dbo.OrderDetails.productSold 
FROM dbo.CompanyAdd 
INNER JOIN 
     dbo.OrderDetails 
GROUP BY dbo.CompanyAdd.companyName, 
     dbo.OrderDetails.department, 
     dbo.OrderDetails.productSold 
HAVING (dbo.User2Company.UsrID = 10) 
ORDER BY 
     dbo.OrderDetails.department; 

這是我的代碼檢查,如果此前的紀錄是一樣的電流。

<% dim productSold 
    Do While Not registerRS.EOF 
    Response.write"<table>" 
    Response.write "<tr>" %> 
    <td height="265.6" width="264.56"> 
     <%=rS.Fields("companyName")%> <br /> 
     <%=rS.Fields("department") %><br /> 
     <%=rS.Fields("productSold") %><br /> 
    </td>  
    <% 
     Response.write "</tr>" 
     If r = 4 then r = 1 
     'Next 
     if rS.Fields("productSold") <> productSold then 
      Response.write("productSold:" & productSold) 
     end if 
     rS.movenext 
    loop 
    Response.write "</table> " 
    rS.close 
    set rS=nothing 
%> 
+1

你得到1個部門有2個記錄,它只是把這個部門放在兩個記錄上,對嗎?你真的不能輕易擺脫你的結果集,我建議循環你的結果,只顯示第一個記錄的部門,然後出售第一和第二個記錄的產品。 – Robert 2012-01-03 04:14:01

+0

所以我將不得不使用嵌套循環?一個循環直到產品銷售完成,另一個直到部門完成? – JohnDoe4136 2012-01-03 06:49:23

+0

你可以做到這一點,或只是使用一個循環,並檢查部門已經改變,如果它已經寫了,如果不是不寫。 – Robert 2012-01-03 11:43:56

回答

1

您未將變量productSold設置爲rS.Fields("productSold")。如果在循環語句之前,你也會錯過一個結束語。

嘗試修改你的代碼是這樣的。

<% dim productSold 
    Do While Not registerRS.EOF 
    Response.write"<table>" 
    Response.write "<tr>" %> 
    <td height="265.6" width="264.56"> 
     <%=rS.Fields("companyName")%> <br /> 
     <%=rS.Fields("department") %><br /> 
     if rS.Fields("productSold") <> productSold then 
     Response.write("productSold:" & productSold) 
     end if   
    </td>  
    <% 
     Response.write "</tr>" 
     If r = 4 then r = 1 
     'Next 
     if rS.Fields("productSold") <> productSold then 
     Response.write("productSold 2:" & productSold) 
     end if 
     productSold = rS.Fields("productSold") '<-- Set productSold variable 
     rS.movenext 
    loop 
    Response.write "</table> " 
    rS.close 
    set rS=nothing 
%> 

我添加它if聲明之外,但是這取決於你的邏輯,你可能需要設置它if語句中。你評論說你在循環之前移動了rS.movenext,它必須在循環之前,否則你的記錄集將永遠不會到達下一個記錄。

+0

嗨,我試過你的代碼,但重複所有的記錄,即使部門保持不變。 – JohnDoe4136 2012-01-09 08:51:27

+0

我稍微更新了腳本,我的結尾如果對你來說不正確。我還注意到,你在2個位置寫出productSold變量。你確定它是第二次寫它時,他們是一樣的嗎?我修改了代碼以檢查兩個地方,並在第二個寫入語句中添加了2。 – Robert 2012-01-09 16:43:35

+0

謝謝。這正是我想要得到的。 – JohnDoe4136 2012-01-10 01:46:01

0

如果你的SQL Server 2005+上,你可以串連所有的同系產品爲單一的產品列表,例如他們劃定使用行分隔符(取決於您在此案例中是否更喜歡varcharnvarchar,它可能是CHAR(13) + CHAR(10)NCHAR(13) + NCHAR(10))。

本網站包含大量關於如何將一列值連接成單個值的示例。這裏僅僅是許多之一:

您可以探索這個問題的鏈接節找到更多類似的問題,因此,更多的例子。