Для отображения выберите оператор - SQL запрос - PullRequest
0 голосов
/ 03 января 2012

У меня есть запрос, который выбирает companyName и department из базы данных.Когда я отобразлю на своем веб-сайте, это будет заказ на companyName.

Когда я добавляю select productSold из отдела, мой отдел делится на 2 записи, если есть 2 productSold.Есть ли в любом случае я могу отобразить 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;

Это мой код, чтобы проверить, совпадает ли предыдущая запись с текущей.

Ответы [ 2 ]

1 голос
/ 04 января 2012

Вы не устанавливаете переменную 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 голосов
/ 03 января 2012

Если вы работаете с SQL Server 2005+, вы можете объединить все продукты одного отдела в один список продуктов, разделив их, например, с разделителями строк (в зависимости от того, предпочитаете ли вы в этом случае varchar или nvarchar, это может быть CHAR(13) + CHAR(10) или NCHAR(13) + NCHAR(10)).

Этот сайт содержит множество примеров того, как объединить столбец значений в одно значение. Вот только один из лота:

Вы можете изучить раздел Linked , чтобы найти больше похожих вопросов и, следовательно, больше примеров.

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