Ребят, привет, что то сегодня у меня голова не работает. Решение

у меня есть но подозреваю что есть более оптимальное решение.


Есть две таблицы, offers и visited_offers.
Человек когда заходит на какой то офферс, мы это записываем.
Несколько раз заходит, несколько записей в visited_offers мы создадим.

Нужно сделать запрос в базу так чтобы нам вернуло все офферсы который наш человек видел, так сказать историю чтобы он свою видел.

Моё решение:

SELECT * FROM offers WHERE id IN (SELECT offer_id FROM visited_offers WHERE user_id = 123)

Но я думаю что можно как то более оптимальное. Можете ли найти решение по лучше ?

9 ответов

14 просмотров

Если не нужны данные из второй таблицы можно использовать where exists https://sqlize.online/sql/mysql57/19501ccec42927061064f9c61f2f10a9/

John-D Автор вопроса
Slava Rozhnev SQLtest.online https://phpize.online
Если не нужны данные из второй таблицы можно испол...

Будет ли это быстрее ? ведь он будет проходится по всем офферам и проверять в таблице visited_offers

а если join ?

John-D Автор вопроса
R1KO 🇺🇦
а если join ?

С джойна начинал но были некоторые проблемы, сейчас скину запрос

John-D Автор вопроса
R1KO 🇺🇦
а если join ?

дело в том что мне надо уникальные офферы вернуть а не 10 раз тот же оффер если 10 просмотров было, а груп бай я сделать не могу потому что он хочет чтобы всё что группирую всё было в селекте

John D
дело в том что мне надо уникальные офферы вернуть ...

дистинкт, но надо по производительности сравнивать

John-D Автор вопроса
R1KO 🇺🇦
дистинкт, но надо по производительности сравнивать

SELECT of_ FROM offers of_ INNER JOIN visited_offers vo_ ON ( vo_.offer_id = of_.id AND vo_.user_id = 123 ) WHERE vo_.user_id = 123 AND of_.STATUS = 'published' AND of_.replaced_with_offer_id IS NULL AND vo_.id IS NOT NULL ORDER BY vo_.visited_at DESC LIMIT 3

John D
SELECT of_ FROM offers of_ INNER JOIN visite...

зачем юзер ид и в ОН и в вере

John-D Автор вопроса
R1KO 🇺🇦
зачем юзер ид и в ОН и в вере

не важно на самом деле, можно удалить

Похожие вопросы

Обсуждают сегодня

Только сейчас дошли руки до Orange pi 5. Это нормально что на нем YOLOv5s выдает 1 кадр раз в 2-3 секунды на CPU? Это без оптимизаций и прочих настроек, просто голый запуск че...
Denis
10
Всем привет! подскажите пожалуйста как можно увеличить качество фото?
Evgeniy
19
Доброе утро. Подскажите, если если 4 корутины, внутри которых VideoCapture, то будут ли они работать асинхронно? Т.к. нагуглил, что Videocapture в моменте может быть открыт то...
Alexander👨‍💻
19
Кто работал с NPU на Рокчипе, можете подсказать, инициализирую модель (см. скрин 1), запускаю и на "init_runtime" выдает ошибку "undefined symbol: rknn_set_core_mask" (см. скр...
Denis
1
Я пожалуй ещё раз брошу клич: кто-нибудь хочет в рабство в ОЭЗ Алабугу на позицию инженера CV? Работы много, задачи сложные, ЗП высокая. Я передам контакт напрямую в HR.
Maxim 👀 Osminin #Slowpoke3D
13
Could you upvote please? https://www.kaggle.com/code/mehmetisik/sentiment-analysis-twitter-nlp-machine-learning https://www.kaggle.com/code/mehmetisik/user-based-collaborati...
MHT Mht
1
I have this grayscale image in opencv I want to change gray quadrilaterals to black like others It means i want to change gray color of specific color to black How can i do th...
@. .@
7
А вы в атоме работаете да?
Alexander x*❄️❅❆
11
всем драсте, занимаемся активно макетами печатной продукции каждый раз при закае нам шлют pdf или ai, любой вектор кароч чтоб внести заказ нужно каждый раз вручную создавать ...
Vlados
4
Добрый день. Созданию отношения таблиц для учёта кораблей, их движения между точками (портами) согласно расписания. Терзают сомнения в правильном ли направлении двигаюсь 😅 1...
Aleksey
1
Карта сайта