Ir para conteúdo

Arquivado

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

santos_s

JOIN duas tabelas

Recommended Posts

estou realizando esta consulta, tenho que retornar o nome do município referente ao código do município cadastrado no banco.

na tabela municipio_ibge tenho dois campos cod_municipio e nome_municipio.

na tabela de oficio tenho dois campos que armazena o código do municipio de origem destino.

tentei fazer assim no meu select.

$sql = mysql_query("SELECT * FROM sicof_oficio JOIN municipio_ibge WHERE tp_oficio like '$pesq_tp_oficio' and (mun_dest_ofi_sicof =cod_municipio AND mun_dest_ofi_sicof=cod_municipio)");
mais não me retornou nada.
att.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei Assim:

 $sql = mysql_query("SELECT * FROM sicof_oficio,municipio_ibge WHERE tp_oficio = '$pesq_tp_oficio' AND sicof_oficio.mun_dest_ofi_sicof = municipio_ibge.cod_municipio AND sicof_oficio.mun_orig_ofi_sicof = municipio_ibge.cod_municipio");

Não me retornou nada.

 

Meu objetivo de ligar as tabela é exibir o nome dos municípios dos código gravados na tabela de oficios, já cheguei a exibir, mais só conseguia exibir um dos dois, ou município de origem ou de destino.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém tem alguma sugestão?

quero exibir o nome dos municípios do qual pertence o código.

Ex:

tabela oficio tenho os códigos:

230560:

230650:

na tabela municípios tenho o nome dos municípios e os códigos referente ao municípios.

 

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual coluna da tabela do IBGE tem o mesmo valor da coluna da outra tabela?

Outras duas colunas municipio_origem e municipio_destino.

 

estou tentando aqui.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outras duas colunas municipio_origem e municipio_destino.

 

estou tentando aqui.

 

[]s

cod_municipio:Tabela municipios_ibge

municipio_origem e municipio_destino: Tabela sicof_oficios

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezados,

Estou numa situação já quebrei a cabeça e não sai de maneira nenhum.

Preciso realizar um UPDATE com INNER JOIN.

EX:

[table=TABELA A][tr]ID WEIGHT

1 0
2 0
3 0
4 0
5 0
6 0

[/tr][/table]

 

[table=TABELA B]ID NAME
1 CILINDRO
2 ROLO
3 CHIP
4 LAMINA
5 CHIP
6 PO
[/table]

Preciso fazer um UPDATE dos pesos na tabela A porém preciso fazer um INNER JOIN com tabela A para filtrar o texto "chip%". Ou seja preciso colocar o peso de 0.020 em todos os produtos que se iniciam com CHIP.

Tentei de varias formas mas resulta no seguinte erro:

"Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from .product inner join .product_description on .product_description.product_i' at line 2"
segue comando:
update .product set weight= 0.020
from .product inner join .product_description
on .product_description.product_id = .product.product_id
where name like "chip%"
Por favor , preciso muito disso pois são muitos produtos para fazer manual um por um.
Agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

santos_s, se ainda não resolveu e se entendi bem,

sugiro que utilize uma "view" p/ obter a 2ª coluna.

algo como:

select * from oficios

apenas isso.

a seguir na consulta relacione a coluna "destino" ao id da "view". O raciocínio segue abaixo:

 

há algum tempo surgiu (acho q foi neste forum mesmo) uma questão bem parecida
(um sistema de passagens aéreas).

 

então 1) imaginei um sisteminha bem simples,
2 tabelas: "municipios" (id e nome)
"viagens" (id, origem, destino)
(origem e destino, claro, chaves estrangeiras relacionadas à id de
"municípios").

2. a seguir 2 consultas p/ gerar as colunas "origem" e "destino":

SELECT municipios.nome AS origem
FROM viagens, municipios
where
viagens.origem=municipios.id;

SELECT municipios.nome AS destino
FROM viagens join municipios
on
viagens.destino=municipios.id;

ok, isoladamente as consultas funcionaram, só que ao "uni-las"
não surgia nenhum resultado (como deve estar acontecendo contigo).

 

aparentemente o problema é uma limitação (ou "bug") da sql ou dos SGDBs:
não deve ser possivel "chamar" 2 vezes a mesma coluna da mesma tabela
(o problema ocorreu também c/ o Postgres).

A solução que encontrei foi criar uma "view" p/ criar a 2ª coluna:

"select * from municipios"

(chamei de "consulmunicipios", p/ facilitar);

a seguir foi só relacionar a coluna "destino" (tabela viagens)
c/ o id da consulta consulmunicipios:

SELECT municipios.nome AS origem, consulmunicipios.nome AS destino
FROM (municipios INNER JOIN viagens ON municipios.id=viagens.origem)
INNER JOIN consulmunicipios ON viagens.destino=consulmunicipios.id;

veja se seria isso..

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha, + fácil ainda: deu certo também usando 1 "alias" p/ a tabela:

SELECT municipios.nome AS origem, cmunicipios.nome AS destino
FROM (municipios INNER JOIN viagens ON municipios.id=viagens.origem)
INNER JOIN municipios as cmunicipios ON viagens.destino=cmunicipios.id;



			
		

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.