Vraag : SQL de Vraag van de Vraag

Hey, gisteren werd ik deze vraag en het heeft boete gewerkt.  Maar het schijnt als na 12:00 het het werken heeft tegengehouden.  De code moet voor een verzamelingsrapport de laatste tijd bepalen iemand ingegaan of verlaten het gebouw.  Het schijnt volkomen te werken, dan hield het enkel op werkend.  De fout die ik is heb gekregen: Subquery

Message == keerde meer dan 1 waarde terug. Dit wordt niet toegelaten wanneer subquery = volgt! =, <, <=, >, >= of wanneer subquery als expression

Is daar iets in de code wordt gebruikt die verkeerd is of zou moeten worden overgedaan?  De lijsten kijken fijn aan me, zijn er niets bizar in them.

This is in een MSDE database.
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
Select C.FirstName, C.LastName
      , h.T als Tijd
      , voeg me samen ((uitgezochte Naam van HWIndependentDevices als D
          Binnen sluit me aan bij Geschiedenis als X
            op D.deviceid=X.link1
           en c.recordid=x.link3
           en H.t=x.gentime
         ), „Onbekend“) als Deur    
  van Kaarthouder als C
 Binnen treed toe (uitgezochte link3, maximum (gentime) als t 
               van Geschiedenis 
              Waar Gentime >= „20100715“
              groep door link3
           ) als H 
    OP C.RecordID = H.Link3     
 Orde door LastName, FirstName, h.t Desc

Antwoord : SQL de Vraag van de Vraag

De oorzaak van uw probleem is verwant met volgende subquery:


(uitgezochte Naam van HWIndependentDevices als D
          Binnen sluit me aan bij Geschiedenis als X
            op D.deviceid=X.link1
           en c.recordid=x.link3
           en H.t=x.gentime
         )…

Subquery wordt aangehaald voor elke rij van de belangrijkste vraag.  Het werkt wanneer het waarden 0 of 1 voor ELKE rij van de belangrijkste vraag.  Het ontbreekt met de fout u observered wanneer het meer dan één waarde voor OM HET EVEN WELKE rij van de belangrijkste vraag terugkeert.  

Zo, dan… is het gevoelig voor de gegevens in één van de gecorreleerde lijsten: waarschijnlijk Geschiedenis.  U correleert met geschiedenis als dit:  „en H.t=x.gentime“, wat betekent als u veelvoudige link3 met zelfde maximum (gentime) krijgt, het probleem komt voor.

Het probleem is een weinig complex, zodat kan ik niet verder zonder gedetailleerde kennis van uw gegevens adviseren.  Nochtans die, verdenk ik dat subquery in kwestie waarschijnlijk met de geschiedenislijst moet correleren op het wordt gebaseerd is primaire sleutel eerder dan gentime.  

Ik stel ook voor u de vraag in bijlage aan betere isolate de gegevens veroorzakend de kwestie probeert.  Merk op dat DoorCount > 1 probleemgegevens identificeert.

 



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:
Selecteer C.FirstName, C.LastName
       , (uitgezochte telling (*) van HWIndependentDevices als D
          Binnen sluit me aan bij Geschiedenis als X
            op D.deviceid=X.link1
           en c.recordid=x.link3
           en H.t=x.gentime
        ) als DoorCount  
      , h.T als Tijd
      , voeg me samen ((uitgezochte maximum (Naam) van HWIndependentDevices als D
          Binnen sluit me aan bij Geschiedenis als X
            op D.deviceid=X.link1
           en c.recordid=x.link3
           en H.t=x.gentime
         ), „Onbekend“) als DoorMax
      , voeg me samen ((uitgezocht min (Naam) van HWIndependentDevices als D
          Binnen sluit me aan bij Geschiedenis als X
            op D.deviceid=X.link1
           en c.recordid=x.link3
           en H.t=x.gentime
         ), „Onbekend“) als DoorMin
 
  van Kaarthouder als C
 Binnen treed toe 
(uitgezochte link3, maximum (gentime) als t 
               van Geschiedenis 
              Waar Gentime >= „20100715“
              groep door link3
           )  als H 
    OP C.RecordID = H.Link3     
 Orde door 3 Desc
Andere oplossingen  
 
programming4us programming4us