Select que não roda???

Delphi

12/01/2005

Alguém sabe que erro é este:

[b:a3518bca37]Multiple rows in singleton select
.
Multiple rows in singleton select.[/b:a3518bca37]

(
Ocorre quando rodo esta query no ibExpert
select materia.pagina_inicial,
materia.titulo,
(select foto.id_retranca from foto
where m.ordem = foto.ordem),

(select count(*) from page_view
where page_view.in_tipo = ´Z´
and page_view.nr_tempo_permanecia > ´30´) as leituras
from materia m
)


Jowjow

Jowjow

Curtidas 0

Respostas

Edison_br

Edison_br

12/01/2005

não entendi o que vc quer fazer mas vou te dau um exemplo de como fazer um sql com duas tabelas

SELECT C.CODIGO, C.NOME, CI.NOME || ´-´ || CI.UF
FROM CLIFOR C, CIDADE CI
WHERE CI.CODIGO = C.CIDADE

se vc não entender explique oque vc que fazer.

[]Edison de Brito


GOSTEI 0
Vinicius2k

Vinicius2k

12/01/2005

Colega,

O que está acontecendo é que sub-selects só podem trazer um único registro para a linha da select principal...
Uma, ou as duas, sub-selects que vc está utilizando, estão retornando mais de um registro.
Vc precisa rever as cláusulas where das sub-selects para que elas só tragam um único registro para a select principal.

T+


GOSTEI 0
Paulo_amorim

Paulo_amorim

12/01/2005

Olá

Como o Vinicius disse, a subselect traz mais de um registro, causando conflito. No caso, vê-se que o problema eh na primeira subquery, já que a segunda eh um COUNT

Na sua primeira subquery você não passa parâmetros, mas só faz um Join... isso vai trazer todos os registros relacionados, quando deveria trazer um só. Verifique quais devem ser os parâmetros para que ela funcione adequadamente

Até+


GOSTEI 0
Thyago

Thyago

12/01/2005

Ola Pessoal, bom dia!

Estou enfrentando o mesmo problema que jowjow passsou ou está passando..

Multiple rows in singleton select

Utilizando a seguinte consulta..

SELECT DESCRICAO_OBSERVACAO FROM OBSERVACAO
WHERE ID_OBSERVACAO = (SELECT ID_OBSERVACAO FROM AVALIACAO_OBSERVACAO WHERE AVALIACAO_OBSERVACAO.ID_AVALIACAO = ´33´)



Como faço para retornar mais valores??

Onde eu colocaria o Join.. ? Que tipo de Join é recomando usar neste caso? O Inner?

Obrigado.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

12/01/2005

Ola Pessoal, bom dia! Estou enfrentando o mesmo problema que jowjow passsou ou está passando.. Multiple rows in singleton select Utilizando a seguinte consulta..
SELECT DESCRICAO_OBSERVACAO FROM OBSERVACAO
WHERE ID_OBSERVACAO = (SELECT ID_OBSERVACAO FROM AVALIACAO_OBSERVACAO WHERE AVALIACAO_OBSERVACAO.ID_AVALIACAO = ´33´)
Como faço para retornar mais valores?? Onde eu colocaria o Join.. ? Que tipo de Join é recomando usar neste caso? O Inner? Obrigado.


no seu caso o mais recomendado é o uso do comparador IN no lugar do = :
SELECT
  DESCRICAO_OBSERVACAO
FROM
  OBSERVACAO
WHERE ID_OBSERVACAO IN
   (SELECT
      ID_OBSERVACAO
    FROM
      AVALIACAO_OBSERVACAO
    WHERE
      AVALIACAO_OBSERVACAO.ID_AVALIACAO = ´33´)



GOSTEI 0
POSTAR