#mysql
#mysql
Вопрос:
Я пытаюсь избежать некоторых данных, которые уже есть в двух таблицах… что означает… Я использовал инструкцию select для получения объявления, которое хранится в базе данных MySQL с использованием идентификатора участника, и я использую таблицы СОЕДИНЕНИЙ… здесь нет никаких проблем… все рекламные объявления отлично отображаются, которые относятся к пакету участника…
Теперь проблема в том… что участник нажимает на рекламу… он хранится в таблице, которая называется «просмотр», с датой клика, идентификатором ad_id и идентификатором участника. И снова тот же участник не сможет нажать на это объявление до следующего дня… Мне нужно избегать показа этих рекламных данных с помощью операторов select с условием…
кто-нибудь может мне помочь, пожалуйста? Я вставляю свой запрос ниже
SELECT `advertisements`.`Ads_ID`,`advertisements`.`AdsName`,`advertisements`.`code`,`advertisements`.`Ad_Value`,`advertisements`.`images`,`advertisements`.`date` FROM `advertisements` JOIN `package_ads` ON `package_ads`.`Ads_ID`=`advertisements`.`Ads_ID` JOIN `packages` ON `packages`.`Package_ID`=`package_ads`.`Package_ID` JOIN `member_package` ON `member_package`.`Package_ID`=`packages`.`Package_ID` JOIN `members2`ON `members2`.`Mem_ID`=`member_package`.`Mem_ID` JOIN `views`ON `views`.`Mem_ID`=`members2`.`Mem_ID` WHERE `member_package`.`Mem_ID`="M100" AND `views`.`clickeddate`!="2021-12-04" AND `views`.`Ads_ID`!=`advertisements`.`Ads_ID`
Комментарии:
1. Ваш вопрос неясен .. обновите свой вопрос, добавьте надлежащий образец данных и ожидаемый результат в виде текстового текста
Ответ №1:
Всякий раз, когда вы хотите избежать отображения строки на основе ее существования в другой таблице, вы можете сделать это одним из двух способов
- Использование не существует или не в состоянии
- или используйте левое соединение и добавьте значение NULL для условия соединения.
Приведенный ниже запрос даст вам желаемый результат. Он удаляет из запроса выбора объявления, которые уже были посещены конкретным участником в определенную дату.
SELECT advertisements.Ads_ID, advertisements.AdsName, advertisements.code, advertisements.Ad_Value, advertisements.images, advertisements.date FROM advertisements JOIN package_ads ON package_ads.Ads_ID=advertisements.Ads_ID JOIN packages ON packages.Package_ID=package_ads.Package_ID JOIN member_package ON member_package.Package_ID=packages.Package_ID JOIN members2 ON members2.Mem_ID=member_package.Mem_ID LEFT JOIN views ON (views.Mem_ID=members2.Mem_ID and date(views.clickeddate) = current_date and views.Ads_ID=advertisements.Ads_ID) WHERE member_package.Mem_ID="M100" AND views.Ads_ID IS NULL