Как выбрать из 2 таблиц, и в каждой 5 строке в первом цикле показывать 1 элемент из таблицы 2? - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть база данных mysql и я использую .asp classic.

Я хочу выбрать одну из 2 таблиц, первая - это продукты, а вторая - добавление.И я хочу отобразить 1add, затем 5 продуктов, а затем 1 add и т. Д., Вот так.

Add1
Product1
Product2
Product3
Product4
Product5
Add2
Product6
Product7...

Итак, я просто выбираю из обеих таблиц, а затем сначала отображаются все добавления, итогда все продукты.

sql = " SELECT * 
        FROM produkt,annonser 
        where produkt.publicera='true' 
            AND produkt.antal > "&nr&" 
            AND annonser.publicera='true' 
            AND annonser.antal > "&nr&" 
        order by 
            produkt.datum DESC, 
            annonser.datum DESC,
            produkt.artikel ASC, 
            annonser.artikel ASC limit 10"
set rs = conn.Execute (sql)

Так как же я могу выбрать то, что я хочу?Спасибо за любой вклад, спасибо.

Хорошо, так что это работает.

For i = 1 to 10
  If i mod 5 = 1 Then
     [Get the current Add and display it]
     if not rsAdds.EOF Then
        rsAdds.MoveNext()
     End If
  End If   
  if not rsProducts.EOF Then 
  [Display the Product]
  rsProducts.MoveNext()
Next

Но теперь я пытаюсь повторить все это снова, и я попытался использовать rs.MoveFirst по-другому,но я получаю только значение rs.eof или rs.buf, поэтому он не перемещает курсор на первую запись и не повторяет цикл?

Так что я хотел бы сначала выполнить цикл выше, а затем повторить цикл, что-то ещевот так.

For i = 1 to 10
      If i mod 5 = 1 Then
         [Get the current Add and display it]
         if not rsAdds.EOF Then
            rsAdds.MoveNext()
         End If
      End If   
      if not rsProducts.EOF Then 
      [Display the Product]
      rsProducts.MoveNext()
    Next

//Set the rs to move first so that the below will run-----

For x = 1 to 10
      If x mod 5 = 1 Then
         [Get the current Add and display it]
         if not rsAdds.EOF Then
            rsAdds.MoveNext()
         End If
      End If   
      if not rsProducts.EOF Then 
      [Display the Product]
      rsProducts.MoveNext()
    Next

Итак, где или как мне переместить rs в первое сообщение после первого цикла, чтобы он мог запустить второй код?Спасибо.

1 Ответ

0 голосов
/ 03 февраля 2019

Я предполагаю, что под ASP classic вы подразумеваете фактический VBA (или javascript?) В файле без .NET или элементов управления.

Вам придется сделать это с помощью комбинации процедурного кода иSQL.Поскольку похоже, что ваши надстройки и ваши продукты не связаны друг с другом, вам, вероятно, следует использовать их в отдельных запросах.

Таким образом, код будет выглядеть примерно так:

Dim rsAdds = [query and code to get the Adds]
Dim rsProducts = [query and code to get the Products]

' I'm not sure if you want just 10 products displayed, or all of them.  I'm going 
' I'm going to go with 10.

For i = 1 to 10
  If i mod 5 = 1 Then
     [Get the current Add and display it]
     if not rsAdds.EOF Then
        rsAdds.MoveNext()
     End If
  End If    
  [Display the Product]
  rsProducts.MoveNext()
Next i

Если все, что вам нужно, это просто интерполировать данные из двух несвязанных таблиц, , не заботясь о том, что эти данные на самом деле , не тратьте время на попытки обмануть SQL и сделать это за вас.Сделай это процедурно.

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