vmware reviewit # mysql --version
mysql  Ver 14.12 Distrib 5.0.19, for pc-linux-gnu (i686) using readline 5.1

Given two tables:

CREATE TABLE `logs` ( 
          `id` bigint(20) unsigned NOT NULL auto_increment,
          `user_id` int(10) unsigned default '0',
          `created_on` timestamp NOT NULL default 
                        CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
          `body` text, 
          PRIMARY KEY  (`id`), 
        ) ENGINE=InnoDB; 
                
CREATE TABLE `users` ( 
          `id` int(10) unsigned NOT NULL auto_increment, 
          `username` varchar(30) NOT NULL,
          `firstname` varchar(255) NOT NULL,
          `lastname` varchar(255) NOT NULL,
          `login_date` datetime default NULL,
          `timestamp` timestamp NOT NULL default 
                        CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, 
          PRIMARY KEY  (`id`),
        ) ENGINE=InnoDB;


I want a query that will show me the username and the single most current
log body and date for every user.

I think I need to use a sub query, but I can't even get the very basic
example one to work...
http://dev.mysql.com/doc/refman/5.0/en/subqueries.html

mysql> SELECT * FROM logs WHERE user_id = (SELECT id FROM users);
ERROR 1242 (21000): Subquery returns more than 1 row

mysql> SELECT * FROM logs WHERE users.id = (SELECT id FROM users);
ERROR 1054 (42S22): Unknown column 'users.id' in 'where clause'

mysql> SELECT logs.*, users.username 
    -> FROM logs JOIN users ON users.id = logs.id
    -> WHERE user_id = (SELECT id FROM users ORDER BY username);
ERROR 1242 (21000): Subquery returns more than 1 row

Duh. Isn't that the point? 
Of course I want the subquery to return more than one row?! 
I don't get it.



-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to