Ir para conteúdo
Fórum Script Brasil
  • 0

Ordenação com subquery com 4 tabelas


Total :=  QryHora.FieldByN

Pergunta

Olá Pessoal,

Vejam a situação...

Tenho uma tabela de clientes e uma de categorias, é um relacionamento muitos pra muitos ou seja tenho outra tabela com as categorias de interesse do cliente...

nessa tabela tenho apenas o codigoDoCliente e codigoDaCategoria

E tenho um quarta tabela de produtos onde cada produto tem uma categoria tabem...

Preciso fazer uma consulta, que eu quero é trazer os produtos ordenados pelas categorias de interesse do cliente...

Exemplo: tenho o cliente de codigo 1, que tem na tabela que guarda as categorias do cliente as categorias 3 6 7,

quero ordenar 10 produtos dentro dessas categorias 3 6 7, pra que os produtos do interesse dele fiquem em primeiro lugar.

não sei se fui claro, espero contar com a ajuda de voces.

Grato

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
select *
from produto p
inner join categoria cat on p.categoria_id = cat.id
inner join cliente_categoria cli_cat on cli_cat.cat_id = cat.id
inner join cliente cli on cli.id = cli_cat.cliente_id
where cli.id = @cliente_id
order by p.nome
limit 10

Link para o comentário
Compartilhar em outros sites

  • 0
select *
from produto p
inner join categoria cat on p.categoria_id = cat.id
inner join cliente_categoria cli_cat on cli_cat.cat_id = cat.id
inner join cliente cli on cli.id = cli_cat.cliente_id
where cli.id = @cliente_id
order by p.nome
limit 10

Primeiro que agradecer pela ajudar,

acho que entendi sua logica, porém ela resolve em partes meu problema, pois preciso trazer todos os produtos para este cliente, digamos que estou fazendo um select em 10 produtos porém somente 4 deles são da categoria do cliente, preciso fazer uma ordenação conforme as categorias dele, nesse casso o 4 apareceriam primeiro e os outros seis em seguida, esta ordenação que esta complicando tudo, veja se consegue me ajudar.

Link para o comentário
Compartilhar em outros sites

  • 0
select *, 0 as preferencia
from produto p
inner join categoria cat on p.categoria_id = cat.id
inner join cliente_categoria cli_cat on cli_cat.cat_id = cat.id
inner join cliente cli on cli.id = cli_cat.cliente_id
where cli.id = @cliente_id

union

select *, 1 as preferencia
from produto
where condição = minha_condição

order by preferencia
limit 10

Editado por Kakao
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...