Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
SQL not getting the results I want
Message
De
20/07/2006 12:26:26
 
 
À
Tous
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Titre:
SQL not getting the results I want
Divers
Thread ID:
01138126
Message ID:
01138126
Vues:
64
Hi Searchers

The below SQL is certainly not getting me the results I expect and, worse still gives me 1 spurious result.

I've already done a search to multiply the number of journies done on eligible bus services, by a certain factor, to give a "trips" total for each bus operator, route no + (ticket) class, et al, within 2 date ranges.

Now I wish to list all the journies that didn't get included in the prev. report because although the (bus) operator had a (ticket) CLASS, the class didn't have an associated MULTIPLIER in the OpClass Table.
OpClass Table is as follows:

Operator#, Class#, Multiplier, ...

And Operator:

Operator#, Class#, ...
The ETMDATA table holds details of all Electronic Ticket Machine (ETM) transactions over a period.
The reason why OpClass needs the 2 keys is that a class is not unique to an operator, and certain class nos mean different things to different operators, but are issued by the ETM manufacturer.

Have I got the NOT EXISTS logic wrong or what is it?

'ppreciate it.

Terry
Select	DISTINCT ET.Operator as MLOperator, ET.Class as MLClass, ;
		op.Desc as MLOpDesc, rf.ServType as MLServType, ;
		SUM( IIF( BETWEEN( ET.date, ldStartCurr, ldEndCurr), ET.Number, 0000000)) AS MLCurrPass, ;
		SUM( IIF( BETWEEN( ET.date, ldStartPrev, ldEndPrev), ET.Number, 0000000)) AS MLPrevPass ;
  FROM ETMData ET ;
	JOIN Operator op ;
		On ET.Operator 	== op.Code ;
	JOIN RteFam rf ;
		On ET.Operator 	== rf.Operator ;
		and ET.Route    	== rf.ERoute ;
  WHERE  ET.date BETWEEN ldStartCurr and ldEndCurr ;
  OR 	ET.date BETWEEN ldStartPrev and ldEndPrev ;
  AND 	NOT EXISTS ;
  	( Select * from OpClass ;
  		WHERE OpClass.Operator == ET.Operator ;
 		AND   OpClass.Class    == ET.Class ) ;
  ORDER BY	ET.Operator, ET.Class ;
  INTO Cursor csrMultless
- Whoever said that women are the weaker sex never tried to wrest the bedclothes off one in the middle of the night
- Worry is the interest you pay, in advance, for a loan that you may never need to take out.
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform