Grande dúvida em chave estrangeira.

MySQL

11/09/2013

Olá a todos estou com um dúvida em chave estrangeira, por exemplo eu tenho uma tabela chamada "funcionario" e outra chamada cargo.

na minha tabela chamada "cargo" eu tenho a chave primaria chamada CodCargo e uma chave estrangeira no campo também chamado CodCargo na tabela "funcionarios".

deu tudo certinho e tal, mais quando dou um
SELECT * FROM
ele retorna o Nome do Funcionário e o Código do Cargo, bem eu queria que ele retornasse o nome do cargo como eu faria? .

Fonte da minha tabela "cargo"
CREATE TABLE `cargo` (
  `CodCargo` int(11) NOT NULL AUTO_INCREMENT,
  `NomeCargo` varchar(50) NOT NULL,
  `ValorCargo` decimal(10,2) DEFAULT NULL,
  PRIMARY KEY (`CodCargo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


CREATE TABLE `funcionario` (
`Matricula` int(11) NOT NULL AUTO_INCREMENT,
`NomeFuncionario` varchar(80) NOT NULL,
`CodCargo` int(11) NOT NULL,
PRIMARY KEY (`Matricula`),
KEY `fk_CodCargo` (`CodCargo`),
CONSTRAINT `fk_CodCargo` FOREIGN KEY (`CodCargo`) REFERENCES `cargo` (`CodCargo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Fonte da minha tabela "funcionario"

Raniel Gomes

Raniel Gomes

Curtidas 0

Respostas

Raniel Gomes

Raniel Gomes

11/09/2013

Ajudem ai!!!!
GOSTEI 0
Roniere Almeida

Roniere Almeida

11/09/2013

tenta mudar o nome do campo, esses iguais aew ta estranho.
GOSTEI 0
Raniel Gomes

Raniel Gomes

11/09/2013

bem vou passar a minha real necessidade, bem eu quero que na tabela 'Funcionario' retorne o nome do Cargo que está na tabela 'Cargo'.
GOSTEI 0
Raniel Gomes

Raniel Gomes

11/09/2013

Fiz usando o INNER JOIN mais retorna o ID e o Nome do Cargo, pois só quero o cargo.
GOSTEI 0
William

William

11/09/2013

Fiz usando o INNER JOIN mais retorna o ID e o Nome do Cargo, pois só quero o cargo.


Tente assim:
SELECT F.Matricula, F.NomeFuncionario, C.NomeCargo
FROM funcionario F LEFT JOIN cargo C ON F.CodCargo = C.CodCargo


Qualquer dúvda poste novamente ...
GOSTEI 0
William

William

11/09/2013

tenta mudar o nome do campo, esses iguais aew ta estranho.


Colega Roniere, não tem problema usar o mesmo nome de campo em tabelas distintas, só que obriga utilizar um "alias" na instrução SQL para identificar a qual tabela pertence o campo que está sendo solicitado.
GOSTEI 0
Alex Lekao

Alex Lekao

11/09/2013

o Codigo passado pelo Willian vai resolver seu problema.

So lembrando que na utilizacao dos joins da vida tem-se que levar em consideracoes algumas coisa para quando vc for montar o codigo, como o produto cartesiano que em alguns codigos eh montado, no caso de usar o INNER JOIN ele devera mostrar os dados que sejam iguais nos dois, no caso usa aquele esquema da matematica do esta contido.

da uma olhada nesta imagem para te ajudar a ter uma ideia do funcionamento dos joins... para mim foi muito util.

https://skydrive.live.com/?mkt=pt-BR#cid=23DBEAB240EB869A&id=23DBEAB240EB869A%211510&v=3

Espero ter ajudado.

Abraco.

Alex - Lekao
GOSTEI 0
Raniel Gomes

Raniel Gomes

11/09/2013

Amigo William era isso mesmo muito obrigado, e também a todos por me ajudar a resolver esse probleminha abraços.
GOSTEI 0
William

William

11/09/2013

Colega Raniel é bom saber que conseguimos ajudar, estou encerrando o tópico para manter a organização do fórum.
GOSTEI 0
POSTAR