Fråga : Sql-queryen ifrågasätter

Hey jag fick denna query igår, och det har varit den funktionsdugliga boten.  Men det verkar likt, efter 12:00 det har stoppat arbetet.  Kodifiera är för att en musterrapport ska bestämma sista gång någon som skrivs in eller lämnas byggnaden.  Den verkar för att fungera perfekt, då den stoppade precis arbetet.  Felet som jag får, är: ==subqueryen för

Message gick tillbaka mer, än 1 värderar. Detta tillåts inte, när subqueryen följer =! =, <, <=, >, >= eller, när subqueryen används som en expression

Is där något i kodifiera som är fel eller bör redones?  Bordlägger lookbot till mig, där är ingenting som är kusligt i them.

This, är i en MSDE database.
> för
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
" codeBody " " >Select C.FirstName, C.LastName för class= " för = ”20100715”, grupp vid link3 ) som H PÅ C.RecordID = H.Link3 Beställa vid LastName, FirstName, h.t Desc
" klar "

Svar : Sql-queryen ifrågasätter

Orsaka av ditt problem förbinds till efter subqueryen:

…,
(välj känt från HWIndependentDevices som D,
          Inre sammanfoga historia som X
            på D.deviceid=X.link1
           och c.recordid=x.link3
           och H.t=x.gentime
         )…,

Subqueryen åkallas för varje ror av den huvudsakliga queryen.  Den fungerar, när den 0 eller 1 värderar för VARJE ror av den huvudsakliga queryen.  Den missar med felet som du observered, när det går tillbaka mer än en värderar för NÅGRA ror av den huvudsakliga queryen.  

Så därefter… den är känslig till datan i en av korrelerad bordlägger: antagligen historia.  Du korrelerar till historienågot liknande denna:  ”och H.t=x.gentime”, som som hjälpmedlet, om du får multipeln link3 med det samma max (gentime), problemet uppstår.

Problemet är lite ett komplex, så jag kan inte råda vidare utan specificerad kunskap av dina data.  Emellertid jag misstänker att subqueryen ifrågasätter in antagligen behov att korrelera till historien bordlägger baserat på den är primärt nyckel- snarlikt än gentime.  

Jag föreslår också dig försök den fäste queryen att förbättra isolaten datan orsaka utfärda.  Notera att DoorCount > 1 identifierar problemdata.

 



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:
Välj C.FirstName, C.LastName
       , (välj räkningen (*) från HWIndependentDevices som D
          Inre sammanfoga historia som X
            på D.deviceid=X.link1
           och c.recordid=x.link3
           och H.t=x.gentime
        ) som DoorCount  
      , h.T som Time
      sammansmälta ((valt max (känt) från HWIndependentDevices som D,
          Inre sammanfoga historia som X
            på D.deviceid=X.link1
           och c.recordid=x.link3
           och H.t=x.gentime
         ) ”okända”) som DoorMax
      sammansmälta ((den valda minuten (namnge), från HWIndependentDevices som D,
          Inre sammanfoga historia som X
            på D.deviceid=X.link1
           och c.recordid=x.link3
           och H.t=x.gentime
         ) ”okända”) som DoorMin
 
  från CardHolder som C
 Inre sammanfoga 
(vald link3 som är max (gentime) som t 
               från historia 
              Var Gentime >= ”20100715”,
              grupp vid link3
           )  som H 
    PÅ C.RecordID = H.Link3     
 Beställa vid 3 Desc
Andra lösningar  
 
programming4us programming4us