Всем привет! Помогите решить задачу: необходимо осуществить поиск по таблице артистов, а так же если пользователь подписан на артиста
(который попал в поисковый запрос), то нужно добавить поле subscribed с значением true, если подписан, иначе false
У меня есть 2 таблицы:
1. таблица артистов
select * from artists limit 5;
+----------------------------------+
| name |
+----------------------------------+
| Dillon Francis & Skrillex |
| King Skrilla |
| RL Grime, What So Not & Skrillex |
| Skrillex |
| Skrillex & Diplo |
+----------------------------------+
13 rows in set (0.000 sec)
2. таблица подписок пользователей на артистов.
select * from subscriptions limit 5;
+-------+----------------------+-------------+
| id | user_name | artist_name |
+-------+----------------------+-------------+
| 47977 | user1 | ##### |
| 47978 | user2 | (hed) p.e. |
| 47979 | user1 | 2 Unlimited |
| 47980 | user2 | 22-20s |
| 47981 | user3 | 25/17 |
+-------+----------------------+-------------+
Для поиска артиста использую where + like
select * from artists where name like '%skrill%';
Но вот как проверить подписан ли пользователь на артистов, которые попали в выборку по like %XXX%? Насколько я понимаю нужно копать в сторону join.
Я добавил джоин и фильтр по пользователю, но теперь из-за него, поиск по артистам поломался и выдаёт результаты только если пользователь подписан.
select * from artists where name like '%skrill%';
+----------------------------------+
| name |
+----------------------------------+
| Dillon Francis & Skrillex |
| King Skrilla |
| RL Grime, What So Not & Skrillex |
| Skrillex |
| Skrillex & Diplo |
| Skrillex & GTA |
| Skrillex & Kendrick Lamar |
| Skrillex & MUST DIE! |
| Skrillex & Poo Bear |
| Skrillex & Rick Ross |
| Skrillex & The Doors |
| Wiwek & Skrillex |
| Yogi & Skrillex |
+----------------------------------+
13 rows in set (0.000 sec)
select * from artists LEFT JOIN subscriptions d ON name=artist_name where artist_name like '%skrill%' and user_name='objque@me';
+----------------------------------+-------+-----------+----------------------------------+
| name | id | user_name | artist_name |
+----------------------------------+-------+-----------+----------------------------------+
| Dillon Francis & Skrillex | 55268 | objque@me | Dillon Francis & Skrillex |
| RL Grime, What So Not & Skrillex | 55781 | objque@me | RL Grime, What So Not & Skrillex |
| Skrillex & GTA | 55857 | objque@me | Skrillex & GTA |
| Skrillex & Kendrick Lamar | 55858 | objque@me | Skrillex & Kendrick Lamar |
| Skrillex & MUST DIE! | 55859 | objque@me | Skrillex & MUST DIE! |
| Skrillex & Rick Ross | 55860 | objque@me | Skrillex & Rick Ross |
| Skrillex | 55861 | objque@me | Skrillex |
| Wiwek & Skrillex | 56023 | objque@me | Wiwek & Skrillex |
| Yogi & Skrillex | 56030 | objque@me | Yogi & Skrillex |
+----------------------------------+-------+-----------+----------------------------------+
9 rows in set (0.000 sec)
Беда в том, что всего по поиску выдаётся 13 строк, а если делать join по artist_name=name, то остаётся 9 строк.