Criar consulta de cliente e telefone
Bom dia*
Preciso criar uma consulta onde o cliente pode ter varios telefones, ou seja, na tabela cliente fica o codigo da tabela telefone, e a tabela telefone fica com um dos telefones...
ex.:
[u:c3896aac17]tab. clientes[/u:c3896aac17]
[u:c3896aac17]cod.cliente[/u:c3896aac17]PK
cod.telefone
[u:c3896aac17]tab.telefones[/u:c3896aac17]
[u:c3896aac17]cod.tabela[/u:c3896aac17]PK
cod.cliente-FK
tp,telefone-FK
numero telefone
se o tp do numero for 1=residencia, 2=celular
Desde já agradeço pela força!!!
;)
Preciso criar uma consulta onde o cliente pode ter varios telefones, ou seja, na tabela cliente fica o codigo da tabela telefone, e a tabela telefone fica com um dos telefones...
ex.:
[u:c3896aac17]tab. clientes[/u:c3896aac17]
[u:c3896aac17]cod.cliente[/u:c3896aac17]PK
cod.telefone
[u:c3896aac17]tab.telefones[/u:c3896aac17]
[u:c3896aac17]cod.tabela[/u:c3896aac17]PK
cod.cliente-FK
tp,telefone-FK
numero telefone
se o tp do numero for 1=residencia, 2=celular
Desde já agradeço pela força!!!
;)
Lip
Curtidas 0
Respostas
Emerson Nascimento
21/05/2008
tente essa instrução:
select cli.nome, case when tel.tptelefone = 1 then ´Residência´ when tel.tptelefone = 2 ´Celular´ else ´Sem telefone´ end Tipo, tel.numero from clientes cli left join telefones tel on (tel.codcliente = cli.codcliente)
GOSTEI 0
Lip
21/05/2008
select
clp.nome,
case when tel.tipo = 1 then ´Residência ´
when tel.tptelefone = 2 ´Celular ´
else ´Sem telefone´ end Tipo,
tel.numero
from
cl_pacientes clp
left join
cl_pacientetelefones tel on (tel.paciente = clp.handle)
msg. de erro:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, char 8.
when.
eu tentei fazer um sql um pouco diferente ontem, e o erro era parecido com este, acho que o meu ibexpert ta com pau, por isso dessa forma não vai funcionar.....
tem alguma forma mais simples, com um select um pouco grosseiro, mas que não trave o pc ao fazer a consulta??
clp.nome,
case when tel.tipo = 1 then ´Residência ´
when tel.tptelefone = 2 ´Celular ´
else ´Sem telefone´ end Tipo,
tel.numero
from
cl_pacientes clp
left join
cl_pacientetelefones tel on (tel.paciente = clp.handle)
msg. de erro:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, char 8.
when.
eu tentei fazer um sql um pouco diferente ontem, e o erro era parecido com este, acho que o meu ibexpert ta com pau, por isso dessa forma não vai funcionar.....
tem alguma forma mais simples, com um select um pouco grosseiro, mas que não trave o pc ao fazer a consulta??
GOSTEI 0
Emerson Nascimento
21/05/2008
pergunta: qual banco de dados está usando??? (e qual versão)
GOSTEI 0
Martins
21/05/2008
Se vc estiver usando Firebird esse código funciona sim.
Reveja agora o case.
Não sei pq não está reconhecendo a instrução case corretamente. Lembrando que este comando foi introduzido a partir da versão 1.5 do FB.
Reveja agora o case.
select cli.nome, case tel.tipo when 1 then ´Residência´ when 2 then ´Celular´ else ´Sem telefone´ end Tipo, tel.numero from clientes cli left join telefones tel on (tel.codcliente = cli.codcliente) Order By 1
Não sei pq não está reconhecendo a instrução case corretamente. Lembrando que este comando foi introduzido a partir da versão 1.5 do FB.
GOSTEI 0
André Rodrigues
21/05/2008
Ola lip,
a primeira coisa seria modificar suas tabelas, ficariam assim:
[u:3905dd0fe5][b:3905dd0fe5]Clientes[/b:3905dd0fe5][/u:3905dd0fe5]
cod_clientePK
nomecliente
[b:3905dd0fe5][u:3905dd0fe5]TipoTelefone[/u:3905dd0fe5][/b:3905dd0fe5]
cod_tipotelefonePK
tipotelefone
[u:3905dd0fe5][b:3905dd0fe5]Telefones[/b:3905dd0fe5][/u:3905dd0fe5]
cod_telefonePK
cod_cliente-FK
cod_tipotelefone-FK
numerotelefone
e faria a seguinte consulta:
select a.nomecliente, b.numerotelefone, c.tipotelefone from clientes a
inner join telefones b on (a.cod_cliente = b.cod_cliente)
inner join tipotelefone c on (c.cod_tipotelefone = b.cod_tipotelefone)
a primeira coisa seria modificar suas tabelas, ficariam assim:
[u:3905dd0fe5][b:3905dd0fe5]Clientes[/b:3905dd0fe5][/u:3905dd0fe5]
cod_clientePK
nomecliente
[b:3905dd0fe5][u:3905dd0fe5]TipoTelefone[/u:3905dd0fe5][/b:3905dd0fe5]
cod_tipotelefonePK
tipotelefone
[u:3905dd0fe5][b:3905dd0fe5]Telefones[/b:3905dd0fe5][/u:3905dd0fe5]
cod_telefonePK
cod_cliente-FK
cod_tipotelefone-FK
numerotelefone
e faria a seguinte consulta:
select a.nomecliente, b.numerotelefone, c.tipotelefone from clientes a
inner join telefones b on (a.cod_cliente = b.cod_cliente)
inner join tipotelefone c on (c.cod_tipotelefone = b.cod_tipotelefone)
GOSTEI 0
Lip
21/05/2008
ae galera
nao pude modificar as tabelas, mas o case* do Martins funciona sim... eu num consegui explicar direito, mas o interbase tava ´conflitando´ com o firebird, aquele bendito arquivinho gds32.dll
mas agora ta td ok
vlw, obrigado a todos
nao pude modificar as tabelas, mas o case* do Martins funciona sim... eu num consegui explicar direito, mas o interbase tava ´conflitando´ com o firebird, aquele bendito arquivinho gds32.dll
mas agora ta td ok
vlw, obrigado a todos
GOSTEI 0