Pergunta : Pergunta da pergunta do SQL

Hey, eu começ esta pergunta ontem e tem trabalhado muito bem.  Mas parece como depois que o 12:00 ele parou o trabalho.  O código é para que um relatório do agrupamento determine a última vez alguém inscrito ou saiu do edifício.  Parece trabalhar perfeitamente, a seguir apenas parou de trabalhar.  O erro que eu começ é: o Subquery do == do

Message retornou mais de 1 valor. Isto não é permitido quando o subquery segue =! =, <, <=, >, >= ou quando o subquery for usado como um expression

Is lá algo no código que é erro ou deve redone?  As tabelas não me olham muito bem, lá são nada estranho em them.

This estão em um MSDE database.
class= > " desobstruído " do
> do " codeSnippet " do class= do
class= " lineNumbers " do
class= do
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
>Select notpretty C.FirstName " do class= " do id= " codeSnippet814553 do
= “20100715” de Gentime
              grupo por link3
           ) como H 
    EM C.RecordID = H.Link3     
 Ordem por LastName, FirstName, h.t Desc
class= do

Resposta : Pergunta da pergunta do SQL

A causa de seu problema é relacionada ao seguinte subquery:


(nome seleto de HWIndependentDevices como D
          Interno juntar-se à história como X
            em D.deviceid=X.link1
           e c.recordid=x.link3
           e H.t=x.gentime
         )…

O subquery é invocado para cada fileira da pergunta principal.  Trabalhar quando ele os valores 0 ou 1 para CADA fileira da pergunta principal.  Falha com o erro que você observered quando retorna mais de um valor para TODA A fileira da pergunta principal.  

Assim, então… é sensível aos dados em uma das tabelas correlacionadas: provavelmente história.  Você correlaciona à história como este:  “e H.t=x.gentime”, que significa se você começ link3 múltiplo com o mesmo máximo (gentime), o problema ocorre.

O problema é um pouco complexo, assim que eu não posso recomendar mais sem conhecimento detalhado de seus dados.  Entretanto, eu suspeito que o subquery da pergunta em necessidades provavelmente de correlacionar à tabela da história baseada nele é chave preliminar um pouco do que o gentime.  

Eu igualmente propor o tentativa a pergunta unida melhorar o isolado os dados que causam a edição.  Anotar que DoorCount > 1 identifica dados de problema.

 



1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
Selecionar C.FirstName, C.LastName
       , (selecionar a contagem (*) de HWIndependentDevices como D
          Interno juntar-se à história como X
            em D.deviceid=X.link1
           e c.recordid=x.link3
           e H.t=x.gentime
        ) como DoorCount  
      , h.T como o tempo
      , coalescer ((máximo seleto (nome) de HWIndependentDevices como D
          Interno juntar-se à história como X
            em D.deviceid=X.link1
           e c.recordid=x.link3
           e H.t=x.gentime
         ), “desconhecido ") como DoorMax
      , coalescer ((minuto seleto (nome) de HWIndependentDevices como D
          Interno juntar-se à história como X
            em D.deviceid=X.link1
           e c.recordid=x.link3
           e H.t=x.gentime
         ), “desconhecido ") como DoorMin
 
  do possuidor de cartão como C
 Interno juntar-se 
(link3 seleto, máximo (gentime) como t 
               da história 
              Onde >= “20100715” de Gentime
              grupo por link3
           )  como H 
    EM C.RecordID = H.Link3     
 Ordem por 3 Desc
Outras soluções  
 
programming4us programming4us