У меня есть две таблицы mysql:
mysql> desc subscriptions;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(6) | NO | PRI | NULL | auto_increment |
| id_user | int(6) | NO | MUL | NULL | |
| id_package | int(4) | NO | | NULL | |
| expiry | date | YES | | NULL | |
| ip | varchar(100) | NO | | NULL | |
| amount | double | NO | | NULL | |
| processed | tinyint(4) | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
mysql> desc packages;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(6) | NO | PRI | NULL | auto_increment |
| id_panel | tinyint(4) | NO | | NULL | |
| name | varchar(100) | NO | | NULL | |
| price | double | NO | | NULL | |
| period | varchar(50) | NO | | NULL | |
| days | int(11) | NO | | NULL | |
| visible | tinyint(4) | NO | | NULL | |
| payment | tinyint(4) | NO | | 1 | |
+----------+--------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
Я использую следующий запрос для извлечения всех пакетов и относительной даты истечения срока действия ПОЛЬЗОВАТЕЛЯ (для конкретного пакета).
SELECT packages.id, packages.name, packages.price, packages.period, packages.days, MAX(subscriptions.expiry) as expiry
FROM packages LEFT JOIN subscriptions
ON subscriptions.id_package = packages.id AND subscriptions.processed = 1 AND subscriptions.id_user = 1
WHERE packages.visible = 1
GROUP BY subscriptions.id_user
ORDER BY packages.id_panel
Моя проблема в том, что если нет подписки на конкретный пакет, запрос не показывает пакет.
Я ДОЛЖЕН показать всю страницу и .... ЕСЛИ у пользователя есть подписка, проверьте дату истечения срока действия МАКСА (потому что я отслеживаю всех подписчиков, сделанных пользователем).
Как я могу показать все пакеты и относительные даты истечения срока действия пользователя? (и при отсутствии подписки на пакет покажите NULL)