Wie kan mij uitleggen wat deze query doet? (SQL)

Status
Niet open voor verdere reacties.

Barbara81

Gebruiker
Lid geworden
28 dec 2003
Berichten
12
Het is vast simpel, maar ik snap er nix van :) Help mij!

SELECT [findadmin checked].pitnr, [findadmin checked].roomnr, [findadmin checked].unitnr, [findadmin checked].vlaknr, [findadmin checked].findnr, [findadmin checked].remarks, [findadmin checked].double
FROM [findadmin checked]
WHERE ((([findadmin checked].pitnr) In (SELECT [pitnr] FROM [findadmin checked] As Tmp GROUP BY [pitnr],[roomnr],[unitnr],[vlaknr],[findnr],[remarks] HAVING Count(*)>1 And [roomnr] = [findadmin checked].[roomnr] And [unitnr] = [findadmin checked].[unitnr] And [vlaknr] = [findadmin checked].[vlaknr] And [findnr] = [findadmin checked].[findnr] And [remarks] = [findadmin checked].[remarks])))
ORDER BY [findadmin checked].pitnr, [findadmin checked].roomnr, [findadmin checked].unitnr, [findadmin checked].vlaknr, [findadmin checked].findnr, [findadmin checked].remarks;

THANKS!

Groetjes Barbara
 
Dit is de query zoals die netjes uitgeschreven eruit ziet. Access maakt er altijd een zooitje van door veel te vaak de tabelnaam te herhalen en op andere plaatsen deze weer niet neer te zetten zodat het zaakje redelijk onleesbaar wordt.

Code:
SELECT 
  pitnr,
  roomnr,
  unitnr,
  vlaknr,
  findnr,
  remarks,
  double 
FROM 
  [findadmin checked] 
WHERE 
(pitnr In 
  (SELECT 
     pitnr 
   FROM [findadmin checked] As Tmp 
   GROUP BY 
     pitnr,
     roomnr,
     unitnr,
     vlaknr,
     findnr,
     remarks
   HAVING 
     Count(*)>1 And 
     Tmp.roomnr = [findadmin checked].roomnr And 
     Tmp.unitnr = [findadmin checked].unitnr And 
     Tmp.vlaknr = [findadmin checked].vlaknr And 
     Tmp.findnr = [findadmin checked].findnr And 
     Tmp.remarks = [findadmin checked].remarks
  )
) 
ORDER BY 
  pitnr,
  roomnr,
  unitnr,
  vlaknr,
  findnr,
  remarks;

Dit zal je al een heel eind helpen. Volgens mij komt het er in het kort op neer dat de query alle "pitnr" zoekt die meer dan eens in de tabel "finadmin checked" voorkomen.

Dit kun je controleren door de subquery die tussen haakjes staat eruit te helen en een keer los te draaien. Het resultaat daarvan is waar de records in de tabel aan moeten voldoen om getoond te kunnen worden in het eindresultaat.


Grtz,
 
Laatst bewerkt:
thanx!

Hey, harstikke bedankt voor je reactie. Het is me echt een stuk duidelijk nu! :thumb:

Groetjes Barbara
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan