Sql em várias tabelas pelo cpf
SELECT
func.nis,
func.nomef,
func.datanscf,
func.cpf,
graduacao.grauacademico,
graduacao.modalidadedecruso,
graduacao.instituicao,
graduacao.cpf,
lotacao.lotacao,
lotacao.niveldeensino,
lotacao.cargahoraria,
lotacao.cpf,
extensaoepos.cpf,
extensaoepos.nivel,
extensaoepos.paisext,
extensaoepos.instituicao,
FROM
func, graduacao, lotacao, extensaoepos
WHERE
(func.cpf = graduacao.cpf) and (graduacao.cpf = lotacao.cpf) and (lotacao.cpf = extensaoepos.cpf)
Essa sql me retorna exatamente o que quero n aordem que eu quero, ele e mostra a graduação, a lotação e a extensaepos do funcionario pelo cpf, a chave de ligação entre as tabelas e o cpf igual. mais a um problema ex:
se o funcoinario de cpf 999999 fez 3 graduações retorna assim.
Titulo -> nome cpf graduacao lotacao extensaepos
dados -> jose 999999 graduacao01 lotacao01 lotacao01
dados -> jose 999999 graduacao02
dados -> jose 999999 graduacao03
eu queria assim tudo em colunas sequencias. como abaixo
Titulo -> nome cpf graduacao graduacao graduacao lotacao extensaepos
dados -> jose 999999 graduacao01 graduacao02 graduacao03 lotacao01 extensaoepos01
Se tiver varias graduações e lotações e extensaoepos ficasem assim
Titulo -> nome cpf graduacao graduacao graduacao lotacao lotacao extensaepos extensaepos
dados -> jose 999999 graduacao01 graduacao02 graduacao03 lotacao01 lotacao02 extensaoepos01 extensaoepos02
func.nis,
func.nomef,
func.datanscf,
func.cpf,
graduacao.grauacademico,
graduacao.modalidadedecruso,
graduacao.instituicao,
graduacao.cpf,
lotacao.lotacao,
lotacao.niveldeensino,
lotacao.cargahoraria,
lotacao.cpf,
extensaoepos.cpf,
extensaoepos.nivel,
extensaoepos.paisext,
extensaoepos.instituicao,
FROM
func, graduacao, lotacao, extensaoepos
WHERE
(func.cpf = graduacao.cpf) and (graduacao.cpf = lotacao.cpf) and (lotacao.cpf = extensaoepos.cpf)
Essa sql me retorna exatamente o que quero n aordem que eu quero, ele e mostra a graduação, a lotação e a extensaepos do funcionario pelo cpf, a chave de ligação entre as tabelas e o cpf igual. mais a um problema ex:
se o funcoinario de cpf 999999 fez 3 graduações retorna assim.
Titulo -> nome cpf graduacao lotacao extensaepos
dados -> jose 999999 graduacao01 lotacao01 lotacao01
dados -> jose 999999 graduacao02
dados -> jose 999999 graduacao03
eu queria assim tudo em colunas sequencias. como abaixo
Titulo -> nome cpf graduacao graduacao graduacao lotacao extensaepos
dados -> jose 999999 graduacao01 graduacao02 graduacao03 lotacao01 extensaoepos01
Se tiver varias graduações e lotações e extensaoepos ficasem assim
Titulo -> nome cpf graduacao graduacao graduacao lotacao lotacao extensaepos extensaepos
dados -> jose 999999 graduacao01 graduacao02 graduacao03 lotacao01 lotacao02 extensaoepos01 extensaoepos02
Jose Junior
Curtidas 0
Respostas
Alex William
10/01/2018
O que você procura são "JOINS":
LEFT JOIN Command:
https://www.w3schools.com/sql/sql_join_left.asp
INNER JOIN Command:
https://www.w3schools.com/sql/sql_join_inner.asp
Um desses dois já deve te suprir no que você precisa, qualquer coisa só falar. :D
LEFT JOIN Command:
https://www.w3schools.com/sql/sql_join_left.asp
INNER JOIN Command:
https://www.w3schools.com/sql/sql_join_inner.asp
Um desses dois já deve te suprir no que você precisa, qualquer coisa só falar. :D
GOSTEI 0
Emerson Nascimento
10/01/2018
tente algo assim (procure sobre group_concat):
SELECT
func.nis,
func.nomef,
func.datanscf,
func.cpf,
group_concat(graduacao.grauacademico separator '; '),
group_concat(lotacao.lotacao separator '; '),
group_concat(extensaoepos.nivel separator '; ')
FROM
func, graduacao, lotacao, extensaoepos
WHERE
(func.cpf = graduacao.cpf) and (graduacao.cpf = lotacao.cpf) and (lotacao.cpf = extensaoepos.cpf)
SELECT
func.nis,
func.nomef,
func.datanscf,
func.cpf,
group_concat(graduacao.grauacademico separator '; '),
group_concat(lotacao.lotacao separator '; '),
group_concat(extensaoepos.nivel separator '; ')
FROM
func, graduacao, lotacao, extensaoepos
WHERE
(func.cpf = graduacao.cpf) and (graduacao.cpf = lotacao.cpf) and (lotacao.cpf = extensaoepos.cpf)
GOSTEI 0