Konstantin,
Thursday, March 14, 2002, 1:04:42 PM, you wrote:
KT> : denonymous,
KT> : Wednesday, March 13, 2002, 9:06:48 PM, you wrote:
KT> :
KT> : d>> Hi all -- I just need a quick sanity check on a query.
KT> :
KT> :
KT> : d>> I have two tables:
KT> :
KT> : d>> CREATE TABLE users (
KT> : d>> userID VARCHAR(10) NOT NULL PRIMARY KEY,
KT> : d>> [many other fields]
KT> : d>> )
KT> :
KT> : d>> CREATE TABLE subscriptions (
KT> : d>> userID VARCHAR(10) NOT NULL,
KT> : d>> listID INT NOT NULL
KT> : d>> )
KT> :
KT> :
KT> : d>> In these tables, users.userID == subscriptions.userID.
KT> : d>> The users table keeps 1 record per userID, and the subscriptions table
KT> keep
KT> : d>> multiple records per userID (one for each listID to which they're
KT> : d>> subscribed).
KT> :
KT> : d>> If I wanted to select all users from the users table that *do not*
KT> appear in
KT> : d>> the subscriptions table, I'd want the following query:
KT> :
KT> : d>> SELECT users.*
KT> : d>> FROM users
KT> : d>> LEFT JOIN subscriptions
KT> : d>> ON users.userID=subscriptions.userID
KT> : d>> WHERE subscriptions.userID IS NULL
KT> subscriptions.userID will never be NULL (the field is created that way).
KT> maybe a good idea is to let it be NULL so you can tell when there is no
KT> coresponding record in the users table.
Take a closer look at the manual:
http://www.mysql.com/doc/J/O/JOIN.html
Look at:
mysql> select * from users;
+--------+
| userid |
+--------+
| egor |
| sasha |
| vita |
+--------+
mysql> select * from subscriptions;
+--------+--------+
| userid | listid |
+--------+--------+
| vita | 1 |
| vita | 2 |
| masha | 3 |
| cate | 4 |
+--------+--------+
4 rows in set (0.00 sec)
mysql> select * from users left join subscriptions on
users.userid=subscriptions.userid;
+--------+--------+--------+
| userid | userid | listid |
+--------+--------+--------+
| egor | NULL | NULL |
| sasha | NULL | NULL |
| vita | vita | 1 |
| vita | vita | 2 |
+--------+--------+--------+
4 rows in set (0.01 sec)
mysql> select users.userid from users left join subscriptions on
users.userid=subscriptions.userid where subscriptions.userid is null;
+--------+
| userid |
+--------+
| egor |
| sasha |
+--------+
2 rows in set (0.00 sec)
That's all.
--
For technical support contracts, goto https://order.mysql.com/
This email is sponsored by Ensita.net http://www.ensita.net/
__ ___ ___ ____ __
/ |/ /_ __/ __/ __ \/ / Victoria Reznichenko
/ /|_/ / // /\ \/ /_/ / /__ [EMAIL PROTECTED]
/_/ /_/\_, /___/\___\_\___/ MySQL AB / Ensita.net
<___/ www.mysql.com
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php