Ir para conteúdo

POWERED BY:

Arquivado

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

Elton Ésqui

[Resolvido] Relacionamento

Recommended Posts

Amigos. Estou estudando MySQL e ainda não consegui chegar onde gostaria.

 

Vejam só.

Pra estudar fiz as duas tabelas abaixo:

DROP TABLE IF EXISTS `teste`.`carro`;
CREATE TABLE  `teste`.`carro` (
  `idcarro` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `modelo` varchar(45) CHARACTER SET latin1 NOT NULL,
  `ano_fab` varchar(45) CHARACTER SET latin1 NOT NULL,
  `ano_mod` varchar(45) CHARACTER SET latin1 NOT NULL,
  `cor` varchar(45) CHARACTER SET latin1 NOT NULL,
  `placa` varchar(45) CHARACTER SET latin1 NOT NULL,
  `idcarromarca` int(10) unsigned NOT NULL,
  PRIMARY KEY (`idcarro`,`idcarromarca`) USING BTREE,
  KEY `FK_carro_1` (`idcarro`) USING BTREE,
  KEY `FK_carros` (`idcarromarca`),
  CONSTRAINT `FK_carros` FOREIGN KEY (`idcarromarca`) REFERENCES `carromarca` (`idcarromarca`) ON DELETE NO ACTION ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

e

 

DROP TABLE IF EXISTS `teste`.`carromarca`;
CREATE TABLE  `teste`.`carromarca` (
  `idcarromarca` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `descricao` varchar(45) CHARACTER SET latin1 NOT NULL,
  PRIMARY KEY (`idcarromarca`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

Gostaria de saber como faço pra quando na página em PHP, por exemplo, for selecionada marca VOLKSWAGEM, exibir os carros (modelo, ano e etc) que estão relacionados a ele.

 

Só consegui com o código acima, fazer que exida o valor numérico relacionado.

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta fazer uma query relacionando as duas tabelas:

 

SELECT * FROM carro c, carromarca cm
WHERE
   c.idcarromarca = cm.idcarromarca
ORDER BY 
   c.idcarro
;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm...tô entendo...consigo manipular o relacionamento através do código...isso tá dando certo agora....

 

Agora!!!

 

Se eu precisar relacionar uma terceira tabela?

 

Já tentei diversas formas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta incluí-la na query e comparar as chaves estrangeiras.

 

Do mesmo jeito com 2 faz com 3 tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Caio Tostes.

 

Eu tentei, mas não consegui...até exibe, mas tá estranho...

 

Coloquei assim:

SELECT * FROM carros c, logistica l, m manutencao WHERE placa LIKE 'YYY-0000' and c.id_carros = l.id_carros and m.id_carros;

Deu pra ver que não sei como inserir a terceira tabela né? :D

Pelo menos depois do LIKE não sei o que fazer...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Élton basta comparar como te disse. Qual a finalidade da sua query? O que você deseja exibir de resultado?

 

Vou mostrar um EXEMPLO:

 

SELECT * 
FROM carros c, logistica l, m manutencao 
WHERE c.placa LIKE 'YYY-0000' 
and c.id_carro = l.id_carro
and l.id_carro = m.manutencao
ORDER By 1;

Este é um exemplo ilustrativo somente para mostrar como é utilizado, precisamos ver a estrutura das suas tabelas e ver qual o resultado final voce deseja para chegar na query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho três tabelas

 

- carros

- manutencao

- logistica

 

Onde carro é o registro dos carros da empresa

manutencao é o histórico de manutenção de cada carro

logistica é o histórico de uso de cada carro.

 

Consegui usando assim:

SELECT * FROM carros c
INNER JOIN logistica l
ON c.id_carros = l.id_carros
INNER JOIN manutencao m
ON c.id_carros = m.id_carros

WHERE placa LIKE '"%.$placa.%"'

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.