Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
SQL Select question
Message
From
25/11/2022 14:00:14
 
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Miscellaneous
Thread ID:
01685415
Message ID:
01685416
Views:
56
>Hi,
>
>UPDATED:
>I have three tables. I want the SQL Select to include some records from one table, some records from the second table, but only one value from the third table, the most recent date
>
>Here is an example (simplified):
>Table1
>
>user_name, user_pk 
>
>So, the above ecords from the Table1 should be in the query
>Table2
>
>user_pk, user_email
>
>The column USER_EMAIL from the second table
>Table3
>
>user_name, data_in
>
>Date_in - the last time this user logged in.
>So the resulting query should look something like this
>
>USER_1     USER_1_EMAIL       USER1_LASTDATE_IN
>USER_2     USER_2_EMAIL       USER2_LASTDATE_IN
>
>Here is what I tried
>
>select Table1.USER_NAME as USER_1, MAX(USER_EMAIL) as USER_1_EMAIL, MAX(DATE_IN) AS USER1_LASTDATE_IN FROM Table1
>LEFT JOIN Table3 on Table1.USER_NAME = Table3.USER_NAME GROUP BY Table1.USER_NAME 
>LEFT JOIN Table2 ON Table2.USER_PK = Table1.USER_PK
>
>The above works.
>But I wonder if MAX(USER_EMAIL) will give the correct results. I was hoping that I could select USER_EMAIL from Table2 without MAX.
>
>TIA.

Max(Email) may give incorrect results.

I would try something like this:

Group by user, order by Last Login date, take 1 per group:

(sample query):
select name, value 
from( select name, value, ROW_NUMBER() OVER(PARTITION BY name ORDER BY value desc) as rn
from out_pumptable ) as a
where rn = 1
Christian Isberner
Software Consultant
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform