Questione : Domanda di domanda di SQL

Hey, ho ottenuto ieri questa domanda e sta funzionando benissimo.  Ma sembra come dopo che il 12:00 esso ha arrestato il funzionamento.  Il codice è affinchè un rapporto di adunata determini l'ultima volta qualcuno inserito o ha lasciato la costruzione.  Sembra funzionare perfettamente, quindi ha smesso appena di funzionare.  L'errore che ottengo è: la sottointerrogazione del == del

Message ha restituito il più di 1 valore. Ciò non è consentita quando la sottointerrogazione segue =! =, <, <=, >, >= o quando la sottointerrogazione è utilizzata come expression

Is là qualcosa nel codice che è torto o dovrebbe essere rifatto?  Le tabelle osservano benissimo a me, là è niente di bizzarro in them.

This è in un MSDE database.
class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
>Select notpretty C.FirstName, C.LastName " del class= " del id= " codeSnippet814553 del
= “20100715„ di Gentime
              gruppo da link3
           ) come H 
    SU C.RecordID = H.Link3     
 Ordine da LastName, FirstName, h.t Desc
class= del

Risposta : Domanda di domanda di SQL

La causa del vostro problema è collegata con la seguente sottointerrogazione:


(nome prescelto da HWIndependentDevices come D
          Interno unire la storia come X
            su D.deviceid=X.link1
           e c.recordid=x.link3
           e H.t=x.gentime
         )…

La sottointerrogazione è invocata per ogni fila della domanda principale.  Funziona quando esso i valori 0 o 1 per OGNI fila della domanda principale.  Viene a mancare con l'errore che observered quando restituisce il più di un valore per TUTTA LA fila della domanda principale.  

Così, allora… è sensibile ai dati in una delle tabelle correlate: probabilmente storia.  Correlate alla storia come questo:  “e H.t=x.gentime„, che significa se ottenete link3 multiplo con lo stesso massimo (gentime), il problema accade.

Il problema è poco un complesso, in modo da non posso raccomandare più ulteriormente senza conoscenza dettagliata dei vostri dati.  Tuttavia, ritengo sospetto che la sottointerrogazione di domanda nelle necessità probabilmente di correlare alla tabella di storia basata su esso è chiave primaria piuttosto che il gentime.  

Inoltre lo propongo prova la domanda allegata per migliorare l'isolato i dati che causano l'edizione.  Si noti che DoorCount > 1 identifica i dati di 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:
Selezionare C.FirstName, C.LastName
       , (selezionare il conteggio (*) a partire da HWIndependentDevices come D
          Interno unire la storia come X
            su D.deviceid=X.link1
           e c.recordid=x.link3
           e H.t=x.gentime
        ) come DoorCount  
      , h.T come tempo
      , unir ((massimo prescelto (nome) da HWIndependentDevices come D
          Interno unire la storia come X
            su D.deviceid=X.link1
           e c.recordid=x.link3
           e H.t=x.gentime
         ), “sconosciuto ") come DoorMax
      , unir ((minuto prescelto (nome) da HWIndependentDevices come D
          Interno unire la storia come X
            su D.deviceid=X.link1
           e c.recordid=x.link3
           e H.t=x.gentime
         ), “sconosciuto ") come DoorMin
 
  dal socio come C
 Interno unir 
(link3 prescelto, massimo (gentime) come t 
               da storia 
              Dove >= “20100715„ di Gentime
              gruppo da link3
           )  come H 
    SU C.RecordID = H.Link3     
 Ordine da 3 Desc
Altre soluzioni  
 
programming4us programming4us