Ir para conteúdo

POWERED BY:

Arquivado

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

djenir

SELECT em tabela INNODB registro pai sem filho retornando erro

Recommended Posts

Estou fazendo um select em 2 tabelas innodb pai e filho:

 

select * from pai, filho where codigo = 2

 

resultado pai 2 e filho do pai 1

 

codigo | nome | filho_codigo | chave_pai | filho_nome

2 pedro 1 1 marcos

 

se eu fizer uma consulta relacionando as chaves estrangeiras:

 

SELECT * FROM pai,filho WHERE codigo = 2 and codigo = chave_pai

 

o resultado é:

 

O MySQL retornou um conjunto vazio (ex. zero registros). (Consulta levou 0.0003 segundos)

 

como fazer para ter um retorno de somente o pai, com as colunas de filho zeradas?

 

--
-- Estrutura para tabela `pai`
--

CREATE TABLE IF NOT EXISTS `pai` (
`codigo` int(8) NOT NULL AUTO_INCREMENT,
`nome` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`codigo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

--
-- Fazendo dump de dados para tabela `pai`
--

INSERT INTO `pai` (`codigo`, `nome`) VALUES
(1, 'joão'),
(2, 'pedro');

 

--
-- Estrutura para tabela `filho`
--

CREATE TABLE IF NOT EXISTS `filho` (
`filho_codigo` int(8) NOT NULL AUTO_INCREMENT,
`chave_pai` int(8) NOT NULL,
`filho_nome` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`filho_codigo`,`chave_pai`),
KEY `pai_filho` (`chave_pai`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;

--
-- Fazendo dump de dados para tabela `filho`
--

INSERT INTO `filho` (`filho_codigo`, `chave_pai`, `filho_nome`) VALUES
(1, 1, 'marcos');

--
-- Restrições para dumps de tabelas
--

--
-- Restrições para tabelas `filho`
--
ALTER TABLE `filho`
ADD CONSTRAINT `pai_filho` FOREIGN KEY (`chave_pai`) REFERENCES `pai` (`codigo`) ON DELETE CASCADE ON UPDATE CASCADE;

Compartilhar este post


Link para o post
Compartilhar em outros sites

usei

 

SELECT * from pai LEFT JOIN filho ON codigo=chave_pai where codigo = 2

 

funcionou, obrigado

 

a tabela filho voltou com os campos nulo e se o coido = 1 retorna todos os campos

 

valeu

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.