Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Calculated fields in SQL
Message
De
21/02/2006 15:14:49
 
 
À
21/02/2006 15:04:22
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Divers
Thread ID:
01095969
Message ID:
01097865
Vues:
21
Don,
Can you post some simple data from both tables and desired result?



>Thanks Sergy and Borislav -
>I guess my original question did not fully explain what I am trying to do. Sergey's answer gets me close but not quite there. Say there are 2 tables Links and Nodes. Each record of the Links table contains the the node numbers for the endpoints of a line. The Nodes table contains the x,y coordinates for each of the nodes. The task is to select all the records from the Links table and add the x and y coordinates for the 2 ends of the line. Thus X1 and Y1 define the first endpoint and X2 and Y2 define the second endpoint. We also want to compute the deltaX and delta Y for the 2 endpoints so we can tell if the line is mostly horizontal or mostly verticle. Based on Sergey's response I have coded:
>
>cd \foxpro\networkupdate
>close tables all
>use linkdata in 0 alias links
>use xydata in 0 alias nodes
>use xydata in 0 alias nodes2 again
>	>select dt1.*, nodes2.x as x2, nodes2.y as y2, ;
>abs(dt1.x1-nodes2.x) as dx, abs(dt1.y1-nodes2.y) as dy ;
>from ( ;
>	select links.*, nodes.n, nodes.x as x1, nodes.y as y1 ;
>	from nodes ;
>	right outer join links ;
>	on nodes.n = links.a ;
>	where st_name <> ' ' ;
>	) dt1 ;
>right outer join dt1 ;
>on dt1.n = nodes2.n ;
>where dt1.st_name <> ' '	
>
>Which gets me almost there but not quite because the outside SELECT wants to see dt1 as a preexisting table. Can either of you tell me where to go from here?
>
>Thanks
>
>
>
>>That what we get when assuming anything. :)
>>Now lets wait and see who's assumption is correct.
>>
>>>But I am not referencing X2 and Y2, I am referencing nodes.x and nodes.y.
>>>If they are calculated fields, you are right, but they are not (if the example SELECT is correct).
>>>
>>>>It's not going to work. You cannot reference calculated fields in consequent calculations in the same list. You can use derived table
>>>>SELECT *, ABS(dt1.x2-dt2.y2) AS dx ;
>>>>  FROM ( ;
>>>>select temp1.*,nodes.x as x2, nodes.y as y2,
>>>>	from UPDNETATR!xydata nodes ;
>>>>	right outer join temp1 ;
>>>>	on  nodes.n = temp1.b;
>>>>	where st_name <> ' ' ;
>>>>	order by temp1.st_name ;
>>>>       ) dt1
>>>>
>>>>>Yes it is:
>>>>>BTW the result contains x2 and Y2 :-)
>>>>>of course if you didn't have X1 in Temp1
>>>>>
>>>>>select temp1.*,nodes.x as x2, nodes.y as y2, ABS(nodes.x-nodes.y) AS dx;
>>>>>	from UPDNETATR!xydata nodes ;
>>>>>	right outer join temp1 ;
>>>>>	on  nodes.n = temp1.b;
>>>>>	where st_name <> ' ' ;
>>>>>	order by temp1.st_name
>>>>>
Against Stupidity the Gods themselves Contend in Vain - Johann Christoph Friedrich von Schiller
The only thing normal about database guys is their tables.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform