Запрос к БД

oOmp

Client
Регистрация
22.01.2018
Сообщения
197
Благодарностей
86
Баллы
28
Помогите составить запрос к бд.
Посмотрел тонну видосов про джоины, но везде в основном рассматривают соединение двух таблиц, а если и рассматриваются более двух, то логика строится на том, что id из одной таблицы равен id из другой.

photo_2019-10-25_09-21-42.jpg
Из "task_for_sub" мне нужно взять "channel_link" и "id", status должен быть "ready", "last_used" - UNIX_TIMESTAMP()-last_used>=600
Из "profiles" взять "channel" и "id", "status" должен быть "ready", но при этом айдишники из "task_for_sub" и "profiles" не должны находиться вместе в "sub_cntrl"

SELECT profiles.id, task_for_sub.id, profiles.channel, task_for_sub.channel_link
FROM task_for_sub LEFT JOIN profiles LEFT JOIN sub_cntrl ON profiles.id = sub_cntrl.channel_id ON task_for_sub.id = sub_cntrl.channel_link_id
WHERE profiles.id<>channel_id AND profiles.status='ready' AND task_for_sub.id<>channel_link_id AND task_for_sub.status='ready' AND UNIX_TIMESTAMP()-task_for_sub.last_used>=600
GROUP BY profiles.id, profiles.channel, task_for_sub.id, task_for_sub.channel_link
ORDER BY task_for_sub.last_used;

SELECT profiles.id, task_for_sub.id, profiles.channel, task_for_sub.channel_link
FROM profiles JOIN sub_cntrl ON profiles.id = sub_cntrl.channel_id JOIN task_for_sub ON task_for_sub.id = sub_cntrl.channel_link_id
WHERE task_for_sub.id<>channel_link_id;

SELECT profiles.id, profiles.channel, task_for_sub.id, task_for_sub.channel_link
FROM PROFILES
INNER JOIN sub_cntrl ON profiles.id = sub_cntrl.channel_id
INNER JOIN task_for_sub ON task_for_sub.id = sub_cntrl.channel_link_id
WHERE sub_cntrl.channel_id <> sub_cntrl.channel_link_id;

SELECT profiles.id, profiles.channel, task_for_sub.id, task_for_sub.channel_link
FROM profiles, task_for_sub
INNER JOIN sub_cntrl ON profiles.id <> sub_cntrl.channel_id AND task_for_sub.id <> sub_cntrl.channel_link_id;

SELECT profiles.id, profiles.channel, task_for_sub.id, task_for_sub.channel_link
FROM profiles
LEFT JOIN sub_cntrl ON profiles.id = sub_cntrl.channel_id
RIGHT JOIN task_for_sub ON task_for_sub.id = sub_cntrl.channel_link_id
WHERE sub_cntrl.channel_id <> sub_cntrl.channel_link_id;
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)