single row subquery produced more than one row

Delphi

28/07/2005

update receitas set nvisitasobj=(select nvisitasobj from cadmedic where receitas.medico=cadmedic.nomedico),nvisitas=(select nvisitas from cadmedic where receitas.medico=cadmedic.nomedico


estou fazendo assim, o que tem de errado?(paradox)

o erro é o titulo do topico.


Rjcerri

Rjcerri

Curtidas 0

Respostas

Beppe

Beppe

28/07/2005

Parace que tem vários registros ´receitas.medico=cadmedic.nomedico´. cadmedic.nomedico é único?


GOSTEI 0
Rjcerri

Rjcerri

28/07/2005

cadmedic.nomedico é unico.


GOSTEI 0
Rjun

Rjun

28/07/2005

O relacionamento Receitas-CadMedico é 1-1 ou 1-N? Se for 1-N o Select retorna ´N´ registros, por isso o erro.


GOSTEI 0
Rjcerri

Rjcerri

28/07/2005

Receitas-CadMedico esta assim N-1, no receitas o nome repeti mas no cadmedic so tem um.

eu usei isso em outro prg e funcionou bem e mrpmatprima2-transmat e N-1

update mrpmatprima2 set estoque=(select estoque12 from transmat where mrpmatprima2.codmat = transmat.codigo)where simulacao=:simu


GOSTEI 0
Beppe

Beppe

28/07/2005

AFAIK, não tem problema em receitas.medico aparecer várias vezes, pq aquele seu SQL só trata uma linha por vez da tabela receitas. Só se for algo do Piradox mesmo, mas não deveria ser assim.


GOSTEI 0
Rjun

Rjun

28/07/2005

Bepee, tem certeza que não da erro? Ele está tentando fazer um update de um campo, mas a subquery retorna mais de um valor.


GOSTEI 0
Beppe

Beppe

28/07/2005

Bepee, tem certeza que não da erro? Ele está tentando fazer um update de um campo, mas a subquery retorna mais de um valor.

Não [b:283dd21ffc]devia[/b:283dd21ffc] dar erro, nas condições que ele disse(cadmedic.nomedico não repete). Pelo que eu pude ver, a subquery só retornaria mais de uma linha caso houvesse cadmedic.nomedico duplicados, e ele disse não haver.

Não posso agora, ma quando puder faço no FB pra ver o resultado dele.


GOSTEI 0
Rjun

Rjun

28/07/2005

Cometi um erro. Não tinha reparado que tabela da subquery era cadmedic. Tem certeza que o nome do médico não se repete. Não é uma boa prática você fazer comparação por nome.


GOSTEI 0
Rjcerri

Rjcerri

28/07/2005

Tenho, o cadmedic fica so um nome de cada medico e o receitas fica o nome com uma receita.


GOSTEI 0
Rjcerri

Rjcerri

28/07/2005

desculpe amigos vcs, tem razão, fui mostrar essa minha duvida ao outro programador e ele me informou que teve uma alteração na tabela, e que agora alguns nomes se repetem no cadmedic. Então não vou conseguir fazer essa SQL?


GOSTEI 0
Michelli88

Michelli88

28/07/2005

Porque não usa codigo do médico?


GOSTEI 0
Rjcerri

Rjcerri

28/07/2005

isso mesmo, valeu!!!! :lol:


GOSTEI 0
POSTAR