Frage : Sql-Fragen-Frage

He, erhielt ich diese Frage gestern und sie adaequat gewesen.  Aber sie scheint wie, nachdem 12:00 es das Arbeiten gestoppt.  Der Code ist, damit ein Musterungreport das letzte Mal eingeführtes jemand feststellt oder verließ das Gebäude.  Er scheint, tadellos zu arbeiten, dann stoppte er gerade zu arbeiten.  Die Störung, die ich erhalte, ist:

Message == Subquery zurückbrachte mehr als 1 Wert. Dieses die Erlaubnis gehabt nicht, wenn der Subquery = folgt! =, <, <=, >, >= oder, wenn der Subquery als expression

Is dort etwas im Code verwendet, der Unrecht ist oder nochmals gemacht werden sollte?  Die Tabellen schauen fein zu mir, dort ist nichts, die in them.

This sonderbar ist, ist in einem MSDE database.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
Select C.FirstName, C.LastName
      , h.T als Zeit
      , verschmelzen ((auserwählter Name von HWIndependentDevices als D
          Inner Geschichte als X anschließen
            auf D.deviceid=X.link1
           und c.recordid=x.link3
           und H.t=x.gentime
         ), „Unbekanntes ") als Tür    
  vom Kartenbesitzer als C
 Inner verbinden (auserwähltes link3, maximal (gentime) als t 
               von der Geschichte 
              Wo Gentime >= „20100715“
              Gruppe durch link3
           ) als H 
    AUF C.RecordID = H.Link3     
 Auftrag durch LastName, FirstName, h.t Desc

Antwort : Sql-Fragen-Frage

Die Ursache Ihres Probleme zusammenhängt mit dem folgenden Subquery lgenden:


(auserwählter Name von HWIndependentDevices als D
          Inner Geschichte als X anschließen
            auf D.deviceid=X.link1
           und c.recordid=x.link3
           und H.t=x.gentime
         )…

Der Subquery hervorgerufen für jede Reihe der Hauptfrage aupt-.  Es funktioniert wenn es Werte 0 oder 1 für JEDE Reihe der Hauptfrage.  Es ausfällt mit der Störung es, die Sie observered, wenn sie mehr als einen Wert für JEDE MÖGLICHE Reihe der Hauptfrage zurückbringt.  

So dann… ist es für die Daten in einer der aufeinander bezogenen Tabellen empfindlich: vermutlich Geschichte.  Sie aufeinander beziehen mit Geschichte so:  „und H.t=x.gentime“, das bedeutet, wenn Sie mehrfaches link3 mit dem gleichen maximalen (gentime) erhalten, das Problem auftritt tt.

Das Problem ist ein wenig kompliziertes, also kann ich nicht ohne ausführliches Wissen Ihrer Daten weiter raten.  Jedoch vermute ich, dass die fraglichen vermutlich Notwendigkeiten des Subquery, mit dem Geschichtentabelle aufeinander zu beziehen, das auf ihm basiert, Primärschlüssel eher als gentime ist.  

Ich vorschlage Sie auch Versuch die angebrachte Frage ch, um Isolat zu verbessern die Daten, welche die Ausgabe verursachen.  Merken, dass DoorCount > 1 Problemdaten kennzeichnet.

 



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:
C.FirstName, C.LastName vorwählen
       , (Zählimpuls (*) von HWIndependentDevices als D vorwählen
          Inner Geschichte als X anschließen
            auf D.deviceid=X.link1
           und c.recordid=x.link3
           und H.t=x.gentime
        ) als DoorCount  
      , h.T als Zeit
      , verschmelzen ((auserwähltes maximales (Name) von HWIndependentDevices als D
          Inner Geschichte als X anschließen
            auf D.deviceid=X.link1
           und c.recordid=x.link3
           und H.t=x.gentime
         ), „Unbekanntes ") als DoorMax
      , verschmelzen ((auserwählte Minute (Name) von HWIndependentDevices als D
          Inner Geschichte als X anschließen
            auf D.deviceid=X.link1
           und c.recordid=x.link3
           und H.t=x.gentime
         ), „Unbekanntes ") als DoorMin
 
  vom Kartenbesitzer als C
 Inner verbinden 
(auserwähltes link3, maximal (gentime) als t 
               von der Geschichte 
              Wo Gentime >= „20100715“
              Gruppe durch link3
           )  als H 
    AUF C.RecordID = H.Link3     
 Auftrag durch 3 Desc
Weitere Lösungen  
 
programming4us programming4us