Precisando de ajuda SQL RUIM
DESTA FORMA ELA ME TRAS OS DADOS CERTO MAS PRECISO DOS CAMPOS DAS OUTRAS TABELAS
DESTA FORMA ME TRAZ TAMBÉM OS NOMES DOS CAMPOS
Select P.P_NOME,P_CEP,P_DATANASC,P_CLASCADASTRO,P_ATIVO,
P_FONE,P_ENDCOMPL,P_EMAIL,C.CEP_NOME,B.BAIRRO_NOME,
CI.CIDADE_NOME,E.ESTADO_SIGLA,PA.PAIS_NOME from PESSOA P,
CEP C,BAIRRO B,CIDADE CI, ESTADO E, PAIS PA
WHERE (P.P_CEP = C.ID_CEP)
AND (C.ID_CEP = B.ID_BAIRRO)
AND (CI.CIDADE_COD_ESTADO = E.ID_ESTADO)
AND (E.ESTADO_CODPAIS = PA.ID_PAIS)
ORDER BY P.P_DATANASC
ESTA FUNCIONA MAS ME TRAS OS DADOS NOVE VEZES CADA INSTÂNCIA
SELECT EXTRACT(DAY FROM P_DATANASC),P.P_NOME,P_CEP,P_CLASCADASTRO,P_ATIVO,P_FONE,C.CEP_NOME,B.BAIRRO_NOME,CI.CIDADE_NOME,E.ESTADO_SIGLA,PA.PAIS_NOME
FROM PESSOA P,CEP C, BAIRRO B,CIDADE CI, ESTADO E, PAIS PA
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
Olá pessoal estou com problemas com esta sql poderiam me ajudar a resolver?
DESTA FORMA ELA ME TRAZ OS NOMES DOS CAMPOS SOMENTE SEM AS DADOS DOS ANIVERSARIANTES
SELECT EXTRACT(DAY FROM P_DATANASC),P.P_NOME,P_CEP,P_CLASCADASTRO,P_ATIVO,P_FONE,C.CEP_NOME,B.BAIRRO_NOME,CI.CIDADE_NOME,E.ESTADO_SIGLA,PA.PAIS_NOME
FROM PESSOA P,CEP C, BAIRRO B,CIDADE CI, ESTADO E, PAIS PA
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
AND(P.P_CEP = C.ID_CEP)
AND (C.ID_CEP = B.ID_BAIRRO)
AND (CI.CIDADE_COD_ESTADO = E.ID_ESTADO)
AND (E.ESTADO_CODPAIS = PA.ID_PAIS)
ORDER BY P.P_DATANASC
TENTEI COM INNER JOIN DEU O MESMO RESULTADO
DESTA FORMA ME TRAZ TAMBÉM OS NOMES DOS CAMPOS
Select P.P_NOME,P_CEP,P_DATANASC,P_CLASCADASTRO,P_ATIVO,
P_FONE,P_ENDCOMPL,P_EMAIL,C.CEP_NOME,B.BAIRRO_NOME,
CI.CIDADE_NOME,E.ESTADO_SIGLA,PA.PAIS_NOME from PESSOA P,
CEP C,BAIRRO B,CIDADE CI, ESTADO E, PAIS PA
WHERE (P.P_CEP = C.ID_CEP)
AND (C.ID_CEP = B.ID_BAIRRO)
AND (CI.CIDADE_COD_ESTADO = E.ID_ESTADO)
AND (E.ESTADO_CODPAIS = PA.ID_PAIS)
ORDER BY P.P_DATANASC
ESTA FUNCIONA MAS ME TRAS OS DADOS NOVE VEZES CADA INSTÂNCIA
SELECT EXTRACT(DAY FROM P_DATANASC),P.P_NOME,P_CEP,P_CLASCADASTRO,P_ATIVO,P_FONE,C.CEP_NOME,B.BAIRRO_NOME,CI.CIDADE_NOME,E.ESTADO_SIGLA,PA.PAIS_NOME
FROM PESSOA P,CEP C, BAIRRO B,CIDADE CI, ESTADO E, PAIS PA
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
Olá pessoal estou com problemas com esta sql poderiam me ajudar a resolver?
DESTA FORMA ELA ME TRAZ OS NOMES DOS CAMPOS SOMENTE SEM AS DADOS DOS ANIVERSARIANTES
SELECT EXTRACT(DAY FROM P_DATANASC),P.P_NOME,P_CEP,P_CLASCADASTRO,P_ATIVO,P_FONE,C.CEP_NOME,B.BAIRRO_NOME,CI.CIDADE_NOME,E.ESTADO_SIGLA,PA.PAIS_NOME
FROM PESSOA P,CEP C, BAIRRO B,CIDADE CI, ESTADO E, PAIS PA
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
AND(P.P_CEP = C.ID_CEP)
AND (C.ID_CEP = B.ID_BAIRRO)
AND (CI.CIDADE_COD_ESTADO = E.ID_ESTADO)
AND (E.ESTADO_CODPAIS = PA.ID_PAIS)
ORDER BY P.P_DATANASC
TENTEI COM INNER JOIN DEU O MESMO RESULTADO
Marcelo Augusto
Curtidas 0
Respostas
Marcelo Augusto
10/12/2012
DESTA FORMA ELA ME TRAS OS DADOS CERTO MAS PRECISO DOS CAMPOS DAS OUTRAS TABELAS
SELECT EXTRACT(DAY FROM P_DATANASC),P.P_NOME,P_CEP,P_CLASCADASTRO,P_ATIVO,P_FONE
FROM PESSOA P
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
DESTA FORMA ME TRAZ TAMBÉM OS NOMES DOS CAMPOS
Select P.P_NOME,P_CEP,P_DATANASC,P_CLASCADASTRO,P_ATIVO,
P_FONE,P_ENDCOMPL,P_EMAIL,C.CEP_NOME,B.BAIRRO_NOME,
CI.CIDADE_NOME,E.ESTADO_SIGLA,PA.PAIS_NOME from PESSOA P,
CEP C,BAIRRO B,CIDADE CI, ESTADO E, PAIS PA
WHERE (P.P_CEP = C.ID_CEP)
AND (C.ID_CEP = B.ID_BAIRRO)
AND (CI.CIDADE_COD_ESTADO = E.ID_ESTADO)
AND (E.ESTADO_CODPAIS = PA.ID_PAIS)
ORDER BY P.P_DATANASC
ESTA FUNCIONA MAS ME TRAS OS DADOS NOVE VEZES CADA INSTÂNCIA
SELECT EXTRACT(DAY FROM P_DATANASC),P.P_NOME,P_CEP,P_CLASCADASTRO,P_ATIVO,P_FONE,C.CEP_NOME,B.BAIRRO_NOME,CI.CIDADE_NOME,E.ESTADO_SIGLA,PA.PAIS_NOME
FROM PESSOA P,CEP C, BAIRRO B,CIDADE CI, ESTADO E, PAIS PA
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
Olá pessoal estou com problemas com esta sql poderiam me ajudar a resolver?
DESTA FORMA ELA ME TRAZ OS NOMES DOS CAMPOS SOMENTE SEM AS DADOS DOS ANIVERSARIANTES
SELECT EXTRACT(DAY FROM P_DATANASC),P.P_NOME,P_CEP,P_CLASCADASTRO,P_ATIVO,P_FONE,C.CEP_NOME,B.BAIRRO_NOME,CI.CIDADE_NOME,E.ESTADO_SIGLA,PA.PAIS_NOME
FROM PESSOA P,CEP C, BAIRRO B,CIDADE CI, ESTADO E, PAIS PA
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
AND(P.P_CEP = C.ID_CEP)
AND (C.ID_CEP = B.ID_BAIRRO)
AND (CI.CIDADE_COD_ESTADO = E.ID_ESTADO)
AND (E.ESTADO_CODPAIS = PA.ID_PAIS)
ORDER BY P.P_DATANASC
TENTEI COM INNER JOIN DEU O MESMO RESULTADO
SELECT EXTRACT(DAY FROM P_DATANASC),P.P_NOME,P_CEP,P_CLASCADASTRO,P_ATIVO,P_FONE
FROM PESSOA P
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
DESTA FORMA ME TRAZ TAMBÉM OS NOMES DOS CAMPOS
Select P.P_NOME,P_CEP,P_DATANASC,P_CLASCADASTRO,P_ATIVO,
P_FONE,P_ENDCOMPL,P_EMAIL,C.CEP_NOME,B.BAIRRO_NOME,
CI.CIDADE_NOME,E.ESTADO_SIGLA,PA.PAIS_NOME from PESSOA P,
CEP C,BAIRRO B,CIDADE CI, ESTADO E, PAIS PA
WHERE (P.P_CEP = C.ID_CEP)
AND (C.ID_CEP = B.ID_BAIRRO)
AND (CI.CIDADE_COD_ESTADO = E.ID_ESTADO)
AND (E.ESTADO_CODPAIS = PA.ID_PAIS)
ORDER BY P.P_DATANASC
ESTA FUNCIONA MAS ME TRAS OS DADOS NOVE VEZES CADA INSTÂNCIA
SELECT EXTRACT(DAY FROM P_DATANASC),P.P_NOME,P_CEP,P_CLASCADASTRO,P_ATIVO,P_FONE,C.CEP_NOME,B.BAIRRO_NOME,CI.CIDADE_NOME,E.ESTADO_SIGLA,PA.PAIS_NOME
FROM PESSOA P,CEP C, BAIRRO B,CIDADE CI, ESTADO E, PAIS PA
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
Olá pessoal estou com problemas com esta sql poderiam me ajudar a resolver?
DESTA FORMA ELA ME TRAZ OS NOMES DOS CAMPOS SOMENTE SEM AS DADOS DOS ANIVERSARIANTES
SELECT EXTRACT(DAY FROM P_DATANASC),P.P_NOME,P_CEP,P_CLASCADASTRO,P_ATIVO,P_FONE,C.CEP_NOME,B.BAIRRO_NOME,CI.CIDADE_NOME,E.ESTADO_SIGLA,PA.PAIS_NOME
FROM PESSOA P,CEP C, BAIRRO B,CIDADE CI, ESTADO E, PAIS PA
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
AND(P.P_CEP = C.ID_CEP)
AND (C.ID_CEP = B.ID_BAIRRO)
AND (CI.CIDADE_COD_ESTADO = E.ID_ESTADO)
AND (E.ESTADO_CODPAIS = PA.ID_PAIS)
ORDER BY P.P_DATANASC
TENTEI COM INNER JOIN DEU O MESMO RESULTADO
GOSTEI 0
William
10/12/2012
Colega qual o relacionamento entre as tabelas?
Se possível poste os campos que tem relação entre as tabelas, fica mais fácil de montar a instrução SQL.
Se possível poste os campos que tem relação entre as tabelas, fica mais fácil de montar a instrução SQL.
GOSTEI 0
Marcelo Augusto
10/12/2012
Colega qual o relacionamento entre as tabelas?
Se possível poste os campos que tem relação entre as tabelas, fica mais fácil de montar a instrução SQL.
Se possível poste os campos que tem relação entre as tabelas, fica mais fácil de montar a instrução SQL.
amigo Wllfl
tabela principal Pessoa
- PESSOA
ID_PESSOA
P_NOME
P_CEP FK FK DA TABELA CEP
P_DATANASC
E OUTROS ATRIBUTOS
- CEP
ID_CEP CONSTRAINT ´"PK_CEP"´ PRIMARY KEY (´"ID_CEP"´)
CEP_NOME
CEP_BAI_COD FK DA TABELA BAIRRO
ALTER TABLE "CEP" ADD CONSTRAINT "FK_CEP_DO_BAIRRO" FOREIGN KEY ("CEP_BAI_COD") REFERENCES BAIRRO ("ID_BAIRRO");
- BAIRRO
ID_BAIRRO
BAIRRO_NOME
BAI_COD_CID FK DA TABELA CIDADE E ASSIM POR DIANTE
GOSTEI 0
William
10/12/2012
Colega dá uma olhada nessa instrução, pode ser q alguns campos estejam com nomes diferentes, mas qualquer dúvida post aí novamente:
Aparentemente está normal e funcionando.
SELECT P.nome, P.p_cep, P.datanasc, P.ativo, P.fone, C.cep, b.bairro, ci.cidade, E.estado, PA.pais
FROM PESSOA P INNER JOIN CEP C ON P.p_cep = C.id
INNER JOIN BAIRRO B ON c.cep_bai_cod = b.id
INNER JOIN CIDADE CI ON CI.id = B.bai_cod_cid
INNER JOIN ESTADO E ON E.id = CI.estado
INNER JOIN PAIS PA ON PA.id = E.pais
Aparentemente está normal e funcionando.
GOSTEI 0
Marcelo Augusto
10/12/2012
oi wllfl, desta forma eu tenho algumas consultas funcionando legal mas o que eu estou precisando no momento é que a consulta me traga além do endereço completo a data nascimento da pessoa para gerar relatório aniversariantes e endereçar correspondência, a consulta para gerar relatorio com os campos da tabela pessoa está postada aí é esta que está abaixo, mas os campos cepnome, nomebairro etc... estão nas outras tabelas.
SELECT EXTRACT(DAY FROM P_DATANASC),P.P_NOME,P_CEP,P_CLASCADASTRO,P_ATIVO,P_FONE
FROM PESSOA P
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
eu não estou conseguindo juntar as outras tabelas. Valeu qualquer ajuda.
SELECT EXTRACT(DAY FROM P_DATANASC),P.P_NOME,P_CEP,P_CLASCADASTRO,P_ATIVO,P_FONE
FROM PESSOA P
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
eu não estou conseguindo juntar as outras tabelas. Valeu qualquer ajuda.
GOSTEI 0
Claudia Nogueira
10/12/2012
Ficou faltando você explicar alguns relacionamentos.
Montei um SQL mais ou menos do jeito que eu entendi a estrutura.
Usei o LEFT OUTER JOIN, pois se você não trabalhar com FK, alguma tabela pode não ter o relacionamento, sendo assim, não vai influenciar no resultado.
Onde está LEFT OUTER JOIN CEP C ON (P.P_CEP = C.ID_CEP) eu entendi que o campo P_CEP da pessoa é chave da tabela CEP
Onde está LEFT OUTER JOIN BAIRRO B ON (C.CEP_BAI_COD = B.ID_BAIRRO) eu entendi que CEP_BAI_COD é a chave da tabela BAIRRO
Onde está LEFT OUTER JOIN CIDADE CI ON (B.BAI_COD_CID = CI.ID_CIDADE) eu entendi que BAI_COD_CID é a chave da tabela CIDADE
Onde está LEFT OUTER JOIN ESTADO E ON (CI.CIDADE_COD_ESTADO = E.ID_ESTADO) eu entendi que CIDADE_COD_ESTADO é a chave da tabela estado, porém não tenho certeza se é esse nome mesmo, se não for tem que trocar o CI.CIDADE_COD_ESTADO pelo nome correto do campo na tabela CIDADE
Onde está LEFT OUTER JOIN PAIS PA ON (E.PAIS_COD_PAIS = PA.ID_PAIS) eu entendi que PAIS_COD_PAIS é a chave da tabela PAIS, se não for tem que trocar E.PAIS_COD_PAIS pelo nome certo do campo chave da tabela PAIS na tabela ESTADO.
Obs.: Provavelmente tenha erros de digitação.
Montei um SQL mais ou menos do jeito que eu entendi a estrutura.
SELECT EXTRACT(DAY FROM P.P_DATANASC) AS DIA_NASC,
P.P_NOME,
P.P_CEP,
P.P_CLASCADASTRO,
P.P_ATIVO,
P.P_FONE,
C.CEP_NOME,
B.BAIRRO_NOME,
CI.CIDADE_NOME,
E.ESTADO_SIGLA,
PA.PAIS_NOME
FROM PESSOA P
LEFT OUTER JOIN CEP C ON (P.P_CEP = C.ID_CEP)
LEFT OUTER JOIN BAIRRO B ON (C.CEP_BAI_COD = B.ID_BAIRRO)
LEFT OUTER JOIN CIDADE CI ON (B.BAI_COD_CID = CI.ID_CIDADE)
LEFT OUTER JOIN ESTADO E ON (CI.CIDADE_COD_ESTADO = E.ID_ESTADO)
LEFT OUTER JOIN PAIS PA ON (E.PAIS_COD_PAIS = PA.ID_PAIS)
ORDER BY P.P_DATANASC
Usei o LEFT OUTER JOIN, pois se você não trabalhar com FK, alguma tabela pode não ter o relacionamento, sendo assim, não vai influenciar no resultado.
Onde está LEFT OUTER JOIN CEP C ON (P.P_CEP = C.ID_CEP) eu entendi que o campo P_CEP da pessoa é chave da tabela CEP
Onde está LEFT OUTER JOIN BAIRRO B ON (C.CEP_BAI_COD = B.ID_BAIRRO) eu entendi que CEP_BAI_COD é a chave da tabela BAIRRO
Onde está LEFT OUTER JOIN CIDADE CI ON (B.BAI_COD_CID = CI.ID_CIDADE) eu entendi que BAI_COD_CID é a chave da tabela CIDADE
Onde está LEFT OUTER JOIN ESTADO E ON (CI.CIDADE_COD_ESTADO = E.ID_ESTADO) eu entendi que CIDADE_COD_ESTADO é a chave da tabela estado, porém não tenho certeza se é esse nome mesmo, se não for tem que trocar o CI.CIDADE_COD_ESTADO pelo nome correto do campo na tabela CIDADE
Onde está LEFT OUTER JOIN PAIS PA ON (E.PAIS_COD_PAIS = PA.ID_PAIS) eu entendi que PAIS_COD_PAIS é a chave da tabela PAIS, se não for tem que trocar E.PAIS_COD_PAIS pelo nome certo do campo chave da tabela PAIS na tabela ESTADO.
Obs.: Provavelmente tenha erros de digitação.
GOSTEI 0
William
10/12/2012
Bom acho q assim vai funcionar então:
Usei uma condição quando mês igual à 11 na cláusula WHERE, o nomes de campos podem estar diferentes.
SELECT P.p_nome , P.p_cep, EXTRACT(DAY FROM P.p_datanasc) AS DIA, P.p_fone, C.cep, b.bairro, ci.cidade, E.estado, PA.pais FROM PESSOA P INNER JOIN CEP C ON P.p_cep = C.id INNER JOIN BAIRRO B ON c.cep_bai_cod = b.id INNER JOIN CIDADE CI ON CI.id = B.bai_cod_cid INNER JOIN ESTADO E ON E.id = CI.cid_cod_uf INNER JOIN PAIS PA ON PA.id = E.uf_cod_pais WHERE EXTRACT(MONTH FROM P.p_datanasc) = 11
Usei uma condição quando mês igual à 11 na cláusula WHERE, o nomes de campos podem estar diferentes.
GOSTEI 0
Marcelo Augusto
10/12/2012
desta forma funcionou perfeitamente
Obribado a todos do devi media especialmente a claudia dnh e willfll pela ajuda
SELECT EXTRACT(DAY FROM P.P_DATANASC) AS DIA_NASC,
P.P_NOME,
P.P_CEP,
P.P_CLASCADASTRO,
P.P_ATIVO,
P.P_FONE,
C.CEP_NOME,
B.BAIRRO_NOME,
CI.CIDADE_NOME,
E.ESTADO_SIGLA,
PA.PAIS_NOME
FROM PESSOA P
LEFT OUTER JOIN CEP C ON (P.P_CEP = C.ID_CEP)
LEFT OUTER JOIN BAIRRO B ON (C.CEP_BAI_COD = B.ID_BAIRRO)
LEFT OUTER JOIN CIDADE CI ON (B.BAIRRO_COD_CID = CI.ID_CIDADE)
LEFT OUTER JOIN ESTADO E ON (CI.CIDADE_COD_ESTADO = E.ID_ESTADO)
LEFT OUTER JOIN PAIS PA ON (E.Estado_CODPAIS = PA.ID_PAIS)
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
ORDER BY P.P_DATANASC
Obribado a todos do devi media especialmente a claudia dnh e willfll pela ajuda
SELECT EXTRACT(DAY FROM P.P_DATANASC) AS DIA_NASC,
P.P_NOME,
P.P_CEP,
P.P_CLASCADASTRO,
P.P_ATIVO,
P.P_FONE,
C.CEP_NOME,
B.BAIRRO_NOME,
CI.CIDADE_NOME,
E.ESTADO_SIGLA,
PA.PAIS_NOME
FROM PESSOA P
LEFT OUTER JOIN CEP C ON (P.P_CEP = C.ID_CEP)
LEFT OUTER JOIN BAIRRO B ON (C.CEP_BAI_COD = B.ID_BAIRRO)
LEFT OUTER JOIN CIDADE CI ON (B.BAIRRO_COD_CID = CI.ID_CIDADE)
LEFT OUTER JOIN ESTADO E ON (CI.CIDADE_COD_ESTADO = E.ID_ESTADO)
LEFT OUTER JOIN PAIS PA ON (E.Estado_CODPAIS = PA.ID_PAIS)
WHERE EXTRACT(MONTH FROM P_DATANASC) = 7
ORDER BY P.P_DATANASC
GOSTEI 0