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

Query avançada


Marianne

Pergunta

Tenho a query abaixo mas quando rodo ela ela exibe 2 linahs no recordset, isso porque este cliente tem 2 telefones na tabelea de endereco..

Como posso otimizar para que mostra apenas 1 linha ? Tem como :)

SELECT Empresa.Id AS EmpresaId, Empresa.Nome AS EmpresaNome, Empresa.Status AS EmpresaStatus, EmpresaEndereco.Endereco, EmpresaEndereco.Bairro, EmpresaEndereco.Cidade, EmpresaEndereco.Estado, EmpresaEndereco.Cep, EmpresaEndereco.Status AS EmpresaEnderecoStatus, EmpresaTelefone.DDD, EmpresaTelefone.Telefone, EmpresaTelefone.Ramal, EmpresaTelefone.Status AS EmpresaTelefoneStatus, EmpresaTipo.Nome AS EmpresaTipoNome, EnderecoTipo.Nome AS EnderecoTipoNome, TelefoneTipo.Nome AS TelefoneTipoNome FROM ((((Empresa INNER JOIN EmpresaEndereco ON Empresa.Id = EmpresaEndereco.EmpresaId) INNER JOIN EmpresaTelefone ON Empresa.Id = EmpresaTelefone.EmpresaId) INNER JOIN EmpresaTipo ON Empresa.EmpresaTipoId = EmpresaTipo.Id) INNER JOIN EnderecoTipo ON EmpresaEndereco.EnderecoTipoId = EnderecoTipo.Id) INNER JOIN TelefoneTipo ON EmpresaTelefone.TelefoneTipoId = TelefoneTipo.Id WHERE (((Empresa.Nome) LIKE '%maria%'))

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

no seu codigo, so não entendi direito o esquema de dois telefones na tabela de endereco.

afinal, a tabela é de enderco ou de telefone?? você tem varios campos com o endereco, certo?? no primeiro registro você poe os campos com todos os dados dela e mais o telefone. e no segundo?? você poe os mesmos dados tudo de novo com outro telefone??

se for isso, fica meio estranho, suas tabelas tão mal normalizadas. ou você punha dois campos de telefone na tabela, ou, no caso de a empresa puder ter qtos telefones quiser, você teria q criar uma tabela só de telefones e nela gravar tb o codigo da empresa ou do endereco.

e o q exatamente você quer fazer na sua query?? você quer selecionar tipo os campos (por exemplo) nome_da_empresa, ..., telefone1, telefone2?? seria isso??

se for isso, recomendo q você reorganize suas tabelas, ou q faca pelo ASP mesmo (dois selects separados).

se isso não for possivel, então você poderia fazer duas subqueries, uma pro primeiro telefone e outra pro segundo (usando o Order By e o Top 1 pra pegar o telefone especifico), e fazer joins com as subqueries na query principal.

mas e ai se uma empresa tiver 3 telefones?? você quer q apareca os tres campos??

e se tiver 10 telefones??

nesses casos não teria como fazer por query, entendeu?? você teria q fazer pelo ASP mesmo, nesse caso era melhor normalizar direito as tabelas.

mas se você optar por fazer a query com as subquerys como eu sugeri (o q vai funcionar pra ate dois telefones), se tiver duvida de como fazer, posta ai, mas explica melhor como funciona esse seu banco e sua query.

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,2k
    • Posts
      651,9k
×
×
  • Criar Novo...