Fórum Grande dúvida em chave estrangeira. #454941

11/09/2013

0

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

Responder

Posts

12/09/2013

Raniel Gomes

Ajudem ai!!!!
Responder

Gostei + 0

12/09/2013

Roniere Almeida

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

Gostei + 0

13/09/2013

Raniel Gomes

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

Gostei + 0

13/09/2013

Raniel Gomes

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

Gostei + 0

19/09/2013

William

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 ...
Responder

Gostei + 0

19/09/2013

William

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.
Responder

Gostei + 0

19/09/2013

Alex Lekao

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
Responder

Gostei + 0

19/09/2013

Raniel Gomes

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

Gostei + 0

19/09/2013

William

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

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar