1 / 1 / 1
Регистрация: 11.05.2012
Сообщений: 59
|
|
1 | |
Запрос к двум таблицам18.02.2024, 22:56. Показов 603. Ответов 7
Метки нет (Все метки)
*С мускулем обычно справлялся запросом к одной таблице или двумя запросами. А сейчас решил оптимизировать один момент.* Есть первая таблица: ид пользователя и его статус (online/offline) и таблица с историей отправки сообщений (Если в таблице есть ид пользователя и номер заказа, то ему повторно отправлять не надо). То есть я беру все заказы (номера) и список пользователей "онлайн" и чекаю историю отправки по второй таблице (была или нет. То есть есть там запись по этому пользователю + заказу или нет), что бы понять, кому надо отправить сообщение. Как мне запрос написать? *мне, получается, надо написать запрос, который берет текущий номер заказа и берет всех тех, кто онлайн, но не был в таблице отправленных сообщений по комбинации ид пользователя и номер заказа. Надеюсь понятно задал вопрос. Спасибопожалуйста.
0
|
18.02.2024, 22:56 | |
Ответы с готовыми решениями:
7
Мудреный запрос по двум таблицам Запрос сразу к двум таблицам Запрос по двум таблицам и составление ссылки Запрос к двум таблицам (посчитать строки таблицы по условию) |
395 / 231 / 86
Регистрация: 28.04.2022
Сообщений: 1,167
|
||||||
19.02.2024, 01:59 | 2 | |||||
licoric, Если нужен точный ответ - давайте сюда структуру таблиц, примеры данных + пример результата.
Если достаточно будет того, что я понял из сумбурных объяснений выше, то вот:
0
|
1 / 1 / 1
Регистрация: 11.05.2012
Сообщений: 59
|
|
20.02.2024, 15:15 [ТС] | 3 |
Таблица с историей отправленных заказов:
historySendOrders: - historySendOrdersId (номер отправленного заказа) - historySendOrdersUser (ид пользователя, которому отправили заказ) Таблица пользователей онлайн: Users: - UserId (ид пользователя, пересекается с ид пользователя из таблицы истории отправок) - UserStatus (online или offline) Мне надо брать текущий онлайн (UserId) и отправлять им сообщение, если ему еще не отправляли.
0
|
395 / 231 / 86
Регистрация: 28.04.2022
Сообщений: 1,167
|
|
20.02.2024, 15:45 | 4 |
Пользователь Вася делал три заказа: месяц назад, неделю назад и сегодня утром. Первые два заказа отправлены и пользователем получены. Тот, что сделан сегодня утром, готов к отправке. Надо об этом известить пользователя. Как понять, какой из этих трёх заказов взять из таблицы historySendOrders, чтобы отправить Васе сообщение?
P.S. И по неймингу. У вас идентификаторы (ID) пользователей и заказов меняются в процессе работы? Если нет, что скорее всего так, то зачем вы их называете разными именами в разных таблицах? UserID и historySendOrdersUser? И т.п.
0
|
1 / 1 / 1
Регистрация: 11.05.2012
Сообщений: 59
|
|
20.02.2024, 16:46 [ТС] | 5 |
Нужно взять тот заказ (и пользователя), которых нет в таблице историй отправки.
Я работаю с таблицей текущих (актуальных) заказов. У меня есть ид заказа и список текущего "онлайна". Я проверяю есть ли запись в таблице истории по комбинации пользователя и конкретного номера заказа или нет. Если нет - отправляю уведомление и добавляю запись в таблицу истории. Я не работаю со старыми заказами - они, при необходимости, будут отменяться заказчиком и создаваться вновь (как новый заказ). *Я не могу всю логику рассказать (NDA). Но то, что я написал более чем подходит как описание моей проблемы. Да. Тут согласен полностью. Но такова ситуация конкретно в этом проекте.
0
|
395 / 231 / 86
Регистрация: 28.04.2022
Сообщений: 1,167
|
|
21.02.2024, 00:27 | 6 |
В таком случае задача не имеет решения при тех исходных данных, который вы привели. Мы можем взять только пользователей, которых нет в таблице историй отправки. А идентификаторы заказов мы откуда возьмём? Нужна таблица заказов в таком случае, в которой будут все заказы, как в таблице users - все пользователи.
Если нужно взять только пользователей, которых нет в таблице истории, то по идее мой первый запрос должен работать. Надо только имена таблиц/полей поменять.
1
|
1 / 1 / 1
Регистрация: 11.05.2012
Сообщений: 59
|
|
21.02.2024, 10:23 [ТС] | 7 |
0
|
3400 / 1319 / 470
Регистрация: 31.05.2012
Сообщений: 4,668
|
|
21.02.2024, 11:22 | 8 |
так если нет таблицы заказов, то и по старинке хоть сотней запросов не получится) мало того - в той таблице заказов нужны как минимум номер заказа и ид юзера. тогда нет проблем - одним простеньким запросом )
0
|
21.02.2024, 11:22 | |
21.02.2024, 11:22 | |
Помогаю со студенческими работами здесь
8
Запрос для выборки по двум таблицам базы данных Как запрос к двум таблицам разделить на два запроса? Групировка по двум таблицам Выборка по двум таблицам Поиск по двум таблицам Выборка по двум таблицам Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |