Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 11.05.2012
Сообщений: 59
1

Запрос к двум таблицам

18.02.2024, 22:56. Показов 603. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу понять, простить за вопрос. С запросами к двум таблицам никогда не сталкивался из-за отсутствия необходимости.
*С мускулем обычно справлялся запросом к одной таблице или двумя запросами. А сейчас решил оптимизировать один момент.*

Есть первая таблица: ид пользователя и его статус (online/offline) и таблица с историей отправки сообщений (Если в таблице есть ид пользователя и номер заказа, то ему повторно отправлять не надо).

То есть я беру все заказы (номера) и список пользователей "онлайн" и чекаю историю отправки по второй таблице (была или нет. То есть есть там запись по этому пользователю + заказу или нет), что бы понять, кому надо отправить сообщение.
Как мне запрос написать?

*мне, получается, надо написать запрос, который берет текущий номер заказа и берет всех тех, кто онлайн, но не был в таблице отправленных сообщений по комбинации ид пользователя и номер заказа.
Надеюсь понятно задал вопрос.
Спасибопожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2024, 22:56
Ответы с готовыми решениями:

Мудреный запрос по двум таблицам
Есть таблицы, 1 и 2 общее поле ID в первой наименования оборудования, во второй значения...

Запрос сразу к двум таблицам
Итак, есть 2 таблицы с такими полями table1 - id, name...... table2 - id, date, user-id ...........

Запрос по двум таблицам и составление ссылки
ребят, помогите с запросом к двум таблицам на mysql есть две таблицы news и sovet, необходимо...

Запрос к двум таблицам (посчитать строки таблицы по условию)
Привет всем... Помогите пожалуйста сделать запрос. Сначала исходные данные: Таблица №1 (назовем её...

7
395 / 231 / 86
Регистрация: 28.04.2022
Сообщений: 1,167
19.02.2024, 01:59 2
licoric, Если нужен точный ответ - давайте сюда структуру таблиц, примеры данных + пример результата.

Если достаточно будет того, что я понял из сумбурных объяснений выше, то вот:

MySQL
1
2
3
4
5
6
SELECT u.ID, u.EMail
   FROM users u
     LEFT JOIN orders_history oh ON oh.UserID = u.ID
WHERE oh.OrderNumber IS NULL (-- или 2-й вариант oh.OrderNumber = '')
      AND u.Status = 'online'
      AND oh.UserID IS NULL;
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
Цитата Сообщение от licoric Посмотреть сообщение
Таблица с историей отправленных заказов:
Пользователь Вася делал три заказа: месяц назад, неделю назад и сегодня утром. Первые два заказа отправлены и пользователем получены. Тот, что сделан сегодня утром, готов к отправке. Надо об этом известить пользователя. Как понять, какой из этих трёх заказов взять из таблицы historySendOrders, чтобы отправить Васе сообщение?

P.S. И по неймингу. У вас идентификаторы (ID) пользователей и заказов меняются в процессе работы? Если нет, что скорее всего так, то зачем вы их называете разными именами в разных таблицах? UserID и historySendOrdersUser? И т.п.
0
1 / 1 / 1
Регистрация: 11.05.2012
Сообщений: 59
20.02.2024, 16:46  [ТС] 5
Цитата Сообщение от Gluck99 Посмотреть сообщение
Пользователь Вася делал три заказа: месяц назад, неделю назад и сегодня утром. Первые два заказа отправлены и пользователем получены. Тот, что сделан сегодня утром, готов к отправке. Надо об этом известить пользователя. Как понять, какой из этих трёх заказов взять из таблицы historySendOrders, чтобы отправить Васе сообщение?
Нужно взять тот заказ (и пользователя), которых нет в таблице историй отправки.
Я работаю с таблицей текущих (актуальных) заказов. У меня есть ид заказа и список текущего "онлайна". Я проверяю есть ли запись в таблице истории по комбинации пользователя и конкретного номера заказа или нет. Если нет - отправляю уведомление и добавляю запись в таблицу истории. Я не работаю со старыми заказами - они, при необходимости, будут отменяться заказчиком и создаваться вновь (как новый заказ).
*Я не могу всю логику рассказать (NDA). Но то, что я написал более чем подходит как описание моей проблемы.

Цитата Сообщение от Gluck99 Посмотреть сообщение
P.S. И по неймингу. У вас идентификаторы (ID) пользователей и заказов меняются в процессе работы? Если нет, что скорее всего так, то зачем вы их называете разными именами в разных таблицах? UserID и historySendOrdersUser? И т.п.
Да. Тут согласен полностью. Но такова ситуация конкретно в этом проекте.
0
395 / 231 / 86
Регистрация: 28.04.2022
Сообщений: 1,167
21.02.2024, 00:27 6
Цитата Сообщение от licoric Посмотреть сообщение
Нужно взять тот заказ (и пользователя), которых нет в таблице историй отправки.
В таком случае задача не имеет решения при тех исходных данных, который вы привели. Мы можем взять только пользователей, которых нет в таблице историй отправки. А идентификаторы заказов мы откуда возьмём? Нужна таблица заказов в таком случае, в которой будут все заказы, как в таблице 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
Цитата Сообщение от licoric Посмотреть сообщение
Будем обходится по старинке - двумя запросами
так если нет таблицы заказов, то и по старинке хоть сотней запросов не получится) мало того - в той таблице заказов нужны как минимум номер заказа и ид юзера. тогда нет проблем - одним простеньким запросом )
0
21.02.2024, 11:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2024, 11:22
Помогаю со студенческими работами здесь

Запрос для выборки по двум таблицам базы данных
Добрый день! Имеется одна база данных с таблицами table_1 и table_2 В table_1 имеются столбцы:...

Как запрос к двум таблицам разделить на два запроса?
Добрый вечер! Имеется вот такой запрос к двум таблицам: $query = mysqli_query($db,...

Групировка по двум таблицам
Добрый день. Подскажите как составить верный запрос. Есть таблица users где много инфы о...

Выборка по двум таблицам
Есть две таблицы :1) Состояние заявки (ID_заявки, состояние_заявки) ...

Поиск по двум таблицам
Как произвести поиск по двум таблицам, которые не связанны между собой. Формулировка запроса:...

Выборка по двум таблицам
Помогите сделать выборку по двум таблицам, необходимо отобразить новости по количеству...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru