Hi folks, I'm trying to, possibly do the impossible here. I have to select data from 4 different tables to come up with the right information and I'm having one heck of time trying to figure it out. This is going to be a long email ...
Table_1: +-----------+--------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+--------------------------+------+-----+---------+-------+ | photo_uid | int(7) unsigned zerofill | NO | PRI | NULL | | | username | varchar(100) | NO | | NULL | | | votes | int(5) | YES | | 0 | | +-----------+--------------------------+------+-----+---------+-------+ Table_2: +-----------+--------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+--------------------------+------+-----+---------+-------+ | photo_uid | int(7) unsigned zerofill | NO | UNI | NULL | | | username | varchar(100) | NO | PRI | NULL | | | vote | int(2) | NO | | 0 | | | voted_on | datetime | NO | | NULL | | +-----------+--------------------------+------+-----+---------+-------+ Table_3: +------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------------+------+-----+---------+----------------+ | username | varchar(100) | NO | UNI | NULL | | | info | varchar(100) | NO | | NULL | | +------------+---------------------+------+-----+---------+----------------+ Table_4: +-----------+--------------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+--------------------------+------+-----+---------+----------------+ | photo_uid | int(7) unsigned zerofill | NO | PRI | NULL | auto_increment | | username | varchar(100) | NO | | NULL | | | photo | varchar(100) | NO | | NULL | | +-----------+--------------------------+------+-----+---------+----------------+ Data used for query: username=foo The goal here is several. 1. query Table 3 for info where username=foo (always 1 record) 2. query Table 3 for username where info = (result of Q1 above) EXCLUDING username=foo (results in 0 to many records) 3. query Table 1 for photo_uid where username= (all records in query from Q2 above) 4. query Table 4 for photo_uid from Q2 above and EXCLUDING username=foo Now, I started fiddling with LEFT JOIN and came up with this: select * from Table_1 left join Table_2 using (photo_uid) where Table_1.username != 'dopey'; +-----------+----------+-------+----------+------+---------------------+ | photo_uid | username | votes | username | vote | voted_on | +-----------+----------+-------+----------+------+---------------------+ | 0000011 | bashful | 0 | NULL | NULL | NULL | | 0000010 | bashful | 0 | NULL | NULL | NULL | | 0000005 | bashful | 0 | dopey | 1 | 2009-11-15 03:56:30 | | 0000003 | bashful | 0 | NULL | NULL | NULL | | 0000001 | bashful | 0 | NULL | NULL | NULL | | 0000014 | grumpy | 0 | bashful | 1 | 2009-11-15 03:48:55 | +-----------+----------+-------+----------+------+---------------------+ Close, I need to also set Table_2.username != 'dopey', however the moment I do that, I get exactly 1 record returned: +-----------+----------+-------+----------+------+---------------------+ | photo_uid | username | votes | username | vote | voted_on | +-----------+----------+-------+----------+------+---------------------+ | 0000014 | grumpy | 0 | bashful | 1 | 2009-11-15 03:48:55 | +-----------+----------+-------+----------+------+---------------------+ Not the result I was expecting. I need to keep those that say NULL in the username as well. After that, I'm stuck trying to figure out how to join the other Tables to get the data I need. Suggestions? I really don't want to break this into several foor loops in PHP, at least not if I can somehow do it all within MySQL. Thanks! Ashley