Ir ao conteúdo
  • Cadastre-se

Consulta SQL


thiagoinnfo

Posts recomendados

Boa Tarde Galera.

Estou com dificuldade em resolver uma consulta SQL, acredito que pra quem tem conhecimento em SQL seja fácil resolver isso.

Tenho a consulta abaixo:

$strSql = "SELECT nome,[COLOR="red"] codigocliente[/COLOR], data FROM [COLOR="Blue"]clientes[/COLOR]"

Preciso unir a consulta acima com a consulta abaixo:

$strSql = "SELECT nome, [COLOR="Red"]codigorepresentante[/COLOR], data FROM [COLOR="blue"]representantes[/COLOR]"

Porém existe uma coluna que possuem o nome diferente, mas os valores são iguais. Já tentei usar o comando UNION mas não funcionou. Preciso que a consulta atinja a tabela clientes e representantes.

Link para o comentário
Compartilhar em outros sites

  • Moderador

Olá,

Tem duas formas de resolver isso...

uma é utilizar a seguinte sintaxe de consulta:


SELECT
cliente.nome, fornecedor.nome
FROM
cliente,
fornecedor

ou pode fazer com a clausula INNER JOIN

onde, um ID referente deve ser igual ao ID da tebela pai.

exemplo de sitaxe:


SELECT
cliente.nome, cliente.idFornecedor, fornecedor.nome
FROM
cliente
INNER JOIN fornecedor
ON fornecedor.idFornecedor = cliente.idFornecedor

Veja que nesse segundo caso, a tabela cliente comanda a consulta.. onde nele possui o campo ID fornecedor para ser comparado com o id do fornecedor da tabela fornecedor.

Link para o comentário
Compartilhar em outros sites

Obrigado pela resposta, mas não consigo adaptar as informações que me passou no script abaixo:

Preciso que este select abaixo, também funcione na tabela fdv_pedidos_clientes, porém ao invés da coluna se chamar codped ela se chama codcli.

$strSql = " select p.codped, p.cnpj, to_char(p.dt_pedido, 'DD/MM/YYYY') dt_pedido, c.nome, c.codcli from fdv_pedidos p";

Acredito que daqui para baixo, não seja necessário mexer pois preciso apenas do select .

 $strSql .= " inner join clientes c on c.cgc = p.cnpj ";
$strSql .= " where p.cnpj = (select cgc from clientes where codcli = :vw_codcli) ";
$strSql .= " and p.status = :vw_status ";
$strSql .= " order by p.codigo desc ";

Link para o comentário
Compartilhar em outros sites

  • Moderador

desculpe, mas não deu para entender nada desse seu código.

poste a consulta completa ...

pelo que eu vi ali.. você esta concatenando varias vezes... podes fazer uma vez só. também notei que está errada o jeito que está fazendo a consulta.

Outro erro que muitos cometem é querer usar siglas.. e coisas abreviadas para nomes de campos ou tabela.. não seja "preguiçoso" não no sentido pejorativo.. mas sim no sentido de escrever por extenso os nomes.. isso evita erros.

Para ter uma ajuda mais eficiente.. poste a estrutura das tabelas.. também.. formular uma consulta sql sem olhar a estrutura é fogo..

Link para o comentário
Compartilhar em outros sites

Olá.

Bom, não entendi muito bem as postagens posteriores, desculpe me intrometer, mas analisando o perguntado apenas (primeiro post)

falaria pra você usar o UNION ALL


SELECT nome
,codigocliente AS COLUNA_02
,data
FROM clientes
UNION ALL
SELECT nome
,codigorepresentante AS COLUNA_02
,data
FROM representantes;

ou então

SELECT NOME,COLUNA_02,DATA 
FROM(
SELECT nome
,codigocliente AS COLUNA_02
,data
FROM clientes
UNION ALL
SELECT nome
,codigorepresentante AS COLUNA_02
,data
FROM representantes
) AS TESTE_UNION WHERE COLUNA_02 BETWEEN 1 AND 1000;

Link para o comentário
Compartilhar em outros sites

Olá Dif.

Obrigado pelas respostas compreendi corretamente como juntar dois selects, o código está desse jeito, pois peguei ele assim e vou precisar dar manutenção nele e uma coisa depende da outra por isso não posso simplesmente alterar. Muito obrigado por seu conselho também, concordo plenamente com você, resolvi este tópico mudando algumas coisas no código fonte onde consegui não mexer no SQL.

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...