all groups > sql server (alternate) > december 2003 >
You're in the

sql server (alternate)

group:

SQL join query


SQL join query yavior NO[at]SPAM mercury.co.il
12/28/2003 7:17:27 AM
sql server (alternate):
Hi,
I have a question regarding join query syntax:
In my DB there are Users table, and Transactions table (which has
'TransactionDate' and 'UserName' fields). I would like to display a
list of all users (each user will appear only once), and for each user
- his last transaction date.
Please advice.

Thanks,
Re: SQL join query John Gilson
12/28/2003 3:29:13 PM
[quoted text, click to view]

CREATE TABLE Users
(
user_name VARCHAR(25) NOT NULL PRIMARY KEY
)

CREATE TABLE UserTransactions
(
user_name VARCHAR(25) NOT NULL REFERENCES Users (user_name),
transaction_date DATETIME NOT NULL
CHECK (transaction_date <= CURRENT_TIMESTAMP),
PRIMARY KEY (user_name, transaction_date)
)

SELECT user_name, MAX(transaction_date) AS latest_transaction_date
FROM UserTransactions
GROUP BY user_name

If you want every user, regardless of whether he has a transaction entry,
then do the following:

SELECT U.user_name, MAX(T.transaction_date) AS latest_transaction_date
FROM Users AS U
LEFT OUTER JOIN
UserTransactions AS T
ON U.user_name = T.user_name
GROUP BY U.user_name

Regards,
jag

Re: SQL join query yavior NO[at]SPAM mercury.co.il
12/31/2003 11:49:27 PM
[quoted text, click to view]

That worked great, thanks. though - when I wanted to add the
Transaction name from Transaction table (join by TransactionID to
UserTransactions table), I got multiplied recordset without the
Re: SQL join query Erland Sommarskog
1/1/2004 9:39:20 AM
Yaron Avior (yavior@mercury.co.il) writes:
[quoted text, click to view]

Something like:


SELECT ut.username, t.transactionname, ut.transactiondate
FROM (SELECT ut.username, transactiondate = MAX(ut.transactiondate)
FROM usertransactions
GROUP BY ut.username) AS ut
JOIN usertransactions ut2 ON ut.username = ut2.username
AND ut.transactiondate = ut2.transactiondate
JOIN transactions t ON ut.transactionid = t.transactionid



--
Erland Sommarskog, SQL Server MVP, sommar@algonet.se

Books Online for SQL Server SP3 at
AddThis Social Bookmark Button