I’m trying to get the number of nodes created in the last six months by users in a group who do not have “example.com” in their email address.
I think I have most of the query working but the “created in the last six months” part is not … I’m guessing it’s a problem with my join syntax. It doesn’t matter what I change the INTERVAL value to (6 MONTH or 6 DAY), I get the same count.
mysql> SELECT COUNT(*)
-> FROM node n
-> LEFT JOIN users u
-> ON n.uid = u.uid
-> LEFT OUTER JOIN og_uid og
-> ON u.uid = og.uid
-> LEFT JOIN node nog
-> ON og.nid = nog.nid
-> WHERE nog.nid = 858031
-> AND u.mail NOT LIKE '%example.com%'
-> AND n.created >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH);
+----------+
| COUNT(*) |
+----------+
| 18637 |
+----------+
1 row in set (0.11 sec)
mysql> DESCRIBE node;
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| nid | int(10) unsigned | NO | PRI | NULL | auto_increment |
| type | varchar(32) | NO | MUL | | |
| title | varchar(255) | NO | MUL | | |
| uid | int(10) | NO | MUL | 0 | |
| status | int(4) | NO | MUL | 1 | |
| created | int(11) | NO | MUL | 0 | |
| changed | int(11) | NO | MUL | 0 | |
| comment | int(2) | NO | | 0 | |
| promote | int(2) | NO | MUL | 0 | |
| moderate | int(2) | NO | MUL | 0 | |
| sticky | int(2) | NO | | 0 | |
| vid | int(10) unsigned | NO | UNI | 0 | |
| language | varchar(12) | NO | | | |
| tnid | int(10) unsigned | NO | MUL | 0 | |
| translate | int(11) | NO | MUL | 0 | |
+-----------+------------------+------+-----+---------+----------------+
15 rows in set (0.00 sec)
mysql> DESCRIBE users;
+------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------+----------------+
| uid | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(60) | NO | UNI | | |
| pass | varchar(32) | NO | | | |
| mail | varchar(64) | YES | MUL | | |
| mode | tinyint(1) | NO | | 0 | |
| sort | tinyint(1) | YES | | 0 | |
| threshold | tinyint(1) | YES | | 0 | |
| theme | varchar(255) | NO | | | |
| signature | varchar(255) | NO | | | |
| created | int(11) | NO | MUL | 0 | |
| access | int(11) | NO | MUL | 0 | |
| status | tinyint(4) | NO | MUL | 0 | |
| timezone | varchar(8) | YES | | NULL | |
| language | varchar(12) | NO | | | |
| picture | varchar(255) | NO | | | |
| init | varchar(64) | YES | | | |
| data | longtext | YES | | NULL | |
| login | int(11) | NO | | 0 | |
| timezone_name | varchar(50) | NO | | | |
| signature_format | smallint(6) | NO | | 0 | |
+------------------+------------------+------+-----+---------+----------------+
20 rows in set (0.00 sec)
mysql> DESCRIBE og_uid;
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| nid | int(11) | NO | PRI | 0 | |
| uid | int(11) | NO | PRI | 0 | |
| og_role | int(1) | NO | | 0 | |
| is_active | int(1) | YES | | 0 | |
| is_admin | int(1) | YES | | 0 | |
| created | int(11) | YES | | 0 | |
| changed | int(11) | YES | | 0 | |
+-----------+---------+------+-----+---------+-------+
7 rows in set (0.00 sec)
mysql>