Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

douglasdamame

Lógica para um Select

Recommended Posts

Olá Pessoal,

 

Estou querendo fazer um select mas não estou conseguindo encontrar a lógica.

 

Banco de dados:

 

Título

Descrição

loja

 

No caso terei as lojas como 1, 2, 3 e 4

 

Quero mostrar 10 produtos mas da seguinte forma:

 

Item 1 - Loja 1

Item 2 - Loja 2

Item 3 - Loja 3

Item 4 - Loja 4

Item 5 - Loja 1

Item 6 - Loja 2

Item 7 - Loja 3

Item 8 - Loja 4

Item 9 - Loja 1

Item 10 - Loja 2

 

 

OBS: O número de lojas irão variar com o tempo, então não daria para fazer

 

IF loja = 1 then

loja = 2

End if

 

 

Não consigo entender a lógica para resolver isso.

Se puderam me ajudar agradeceria muito

 

Douglas Damame

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas qual a relação entre os itens e as lojas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estava escrevendo diversos detalhes e exemplos para tentar me explicar, mas acho melhor mostrar um exemplo funcionando.

 

http://compare.buscape.com.br/sony-playsta...slim.html?pos=1

 

O Buscapé e o UOL Shopping mostram seus resultados como desejo.

 

Observe como são mostrados os resultados.

 

1- Shoptime

2 - Americanas

3 - Kalunga

4 - Saraiva

5 - Fnac

6 - Shoptime

7 - Americanas

 

......... E assim vai

 

Observe que a partir de um determinado ponto somente o shoptime e americanas tem produtos a serem mostrados. As outras, como não tem, ficam fora da listagem. No final desta busca, apenas o shoptime tem produtos.

Para responder a sua pergunta:

 

Tabela Lojas:

 

ID

Nome_da_Loja

 

Tabela Produtos:

 

ID

ID_Loja

Nome_do_Produto

Preço

 

A relação entre as tabelas é entre ID e ID_Loja

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas entao

 

voce vai fazer uma busca por um produto e o ue encontrar colocaráa loja que o possui?

 

é so selecionar tudo usando JOIN no SELECT

 

SELECT LOJAS.ID, LOJAS.Nome_da_Loja, PRODUTOS.ID, PRODUTOS.ID_Loja, PRODUTOS.Nome_do_Produto, PRODUTOS.Preço FROM LOJAS INNER JOIN PRODUTOS ON LOJAS.ID = PRODUTOS.ID_Loja

 

basicamente isso trará todas as informações

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Mário,

 

Estou tentando fazer como me indicou mas da erro:

 

Microsoft JET Database Engine (0x80004005)

Tipo não coincidente na expressão.

 

 

 

SQL = "SELECT Lojas.ID, Lojas.Nome_loja, Produtos.ID, Produtos.ID_Loja, Produtos.Produto, Produtos.Preco FROM Lojas INNER JOIN Produtos ON Lojas.ID = Produtos.ID_Loja"

 

Já mudei a posição das tabelas para busca e nada!!

Estou completamente perdido, pois nunca desenvolvi nada com INNER JOIN, e comparando o que eu fiz com os exemplos que eu vi na internet esta correto.

 

Se puder me ajudar mais um pouco, coloquei os arquivos, ASP e MDB em

www.u2net.com.br/teste.zip

 

 

 

Outra questão é, mesmo fazendo a comparação entre as duas tabelas, deste modo que você me passou, a listagem dos produtos seriam alternadas pelas Lojas?

Pois pelo que eu entendi, nesta linha de Select eu apenas estou fazendo uma comparação entre os produtos da Tabela 1 e Tabela 2 e mostrando os dados se existirem em uma e na outra.

 

Exemplo do que desejo fazer:

 

Tabela Lojas

 

ID_loja---------- Nome_loja

 

1 ---------------- Americanas

2 ---------------- Shoptime

3 ---------------- Submarino

 

Tabela Produtos

 

ID -------- ID_Loja ---------- Produto --------- Preco

 

1 --------- 1 ---------- Celular -------- 850,00

2 --------- 1 ---------- Calculadora --- 100,00

3 --------- 3 ---------- Celular ------- 890,00

4 --------- 2 --------- Playstation ------ 1200,00

5 --------- 2 --------- Oculos ------ 600,00

6 -------- 3 -------- Relogio ------ 830,00

7 -------- 1 -------- Notebook ------ 2800,00

 

Eu quero mostrar a busca de Produtos ordenado pelo Nome das Lojas, mas intercalando:

 

1° - Americanas ---- Celular ------ 850,00 ------ ID do produto = 1

2° - Shoptime ------ Playstation --- 1200,00 ---- ID do produto = 4

3° - Subamarino --- Celular -------- 890,00 ----- ID do produto = 3

 

4° - Americanas ---- Calculadora -- 2800,00 ------ ID do produto = 2

5° - Shoptime ------- Oculos -------- 600,00 ------ ID do produto = 5

6° - submarino ------ Relogio ------- 100,00 ------ ID do produto = 6

 

7° - Americanas ---- Notebook ------ 100,00 ------ ID do produto = 7

 

 

 

Se puder me ajudar mais um pouco te agradeceria muito.

 

Obrigado,

 

Douglas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, consegui fazer funcionar o Select como me enviou, mas como falei no post anterior, deste modo não mostrará os resultados como desejo.

 

Acho que desta forma que eu quero terei que fazer um loop dentro do outro. Tentei fazer desta forma:

<%

abredb  = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("database.mdb")

Set busca = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT *FROM Produtos"
busca.Open SQL, abredb, 1, 3

Do while not busca.Eof

	Set lojas = Server.CreateObject("ADODB.Recordset")
	SQL = "SELECT *FROM Lojas"
	lojas.Open SQL, abredb, 1, 3

	Do while not lojas.Eof
%>
		
		<%  
		id_loja = lojas("id_loja")
		Set produtos = Server.CreateObject("ADODB.Recordset")
		SQL = "SELECT *FROM Produtos where id_loja = "&id_loja&" "
		produtos.Open SQL, abredb, 1, 3
		if not produtos.eof then
		
		%>
		Pruduto n° <% = produtos("id")%> - <% = produtos("produto")%> - <% = produtos("preco")%> - <% = lojas("nome_loja")%> <br />
		<% end if %>
		
		
<%

	Lojas.Movenext
	loop


busca.Movenext
loop
%>

Mas o resultado é:

 

Pruduto n° 1 - Plays station - 650 - Americanas

Pruduto n° 3 - playstation 3 - 1780 - ShopTime

Pruduto n° 6 - Play - 550 - Bigboygames

 

Pruduto n° 1 - Plays station - 650 - Americanas

Pruduto n° 3 - playstation 3 - 1780 - ShopTime

Pruduto n° 6 - Play - 550 - Bigboygames

 

Pruduto n° 1 - Plays station - 650 - Americanas

Pruduto n° 3 - playstation 3 - 1780 - ShopTime

Pruduto n° 6 - Play - 550 - Bigboygames

 

Pruduto n° 1 - Plays station - 650 - Americanas

Pruduto n° 3 - playstation 3 - 1780 - ShopTime

Pruduto n° 6 - Play - 550 - Bigboygames

 

Pruduto n° 1 - Plays station - 650 - Americanas

Pruduto n° 3 - playstation 3 - 1780 - ShopTime

Pruduto n° 6 - Play - 550 - Bigboygames

 

Pruduto n° 1 - Plays station - 650 - Americanas

Pruduto n° 3 - playstation 3 - 1780 - ShopTime

Pruduto n° 6 - Play - 550 - Bigboygames

 

 

Ou seja, esta fazendo 6 Loops, que corresponde a 6 produtos cadastrados e ainda repete todos os produtos.

 

Pensei em pegar o valor do produto mostrado

 

produto_mostrado= produtos("id")

 

E no select não mostrar o produto

 

SQL = "SELECT *FROM Produtos where id_loja = "&id_loja&" and id <> " & produto_mostrado & " "

Mas a cada Loop ele esta mostrando 3 produtos, nesta tentativa..............

 

 

Não sei mais o que fazer, esta lógica de programação esta me matando!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.