За последние 24 часа нас посетили 37135 программистов и 7906 роботов. Сейчас ищут 1768 программистов ...

Как исключить вывод материала c несколькими тегами

Тема в разделе "PHP для новичков", создана пользователем illimited, 28 янв 2023.

  1. illimited

    illimited Активный пользователь

    С нами с:
    27 авг 2021
    Сообщения:
    4
    Симпатии:
    0
    Не могу решить задачку – надо исключить вывод материала с несколькими тегами. `#__contentitem_tag_map`.`tag_id` != '29' но есть второй тег в этом материале tag_id` = '2' который все равно выводит его.

    Как исключить все материалы у которого есть tag_id` “29” ?

    WHERE `#__content`.`state` = '1' AND `#__contentitem_tag_map`.`tag_id` != '29' AND `#__content`.`catid` = '18'

    Код (Text):
    1.  
    2. $query = "SELECT * , `#__content`.`alias` AS `content_alias` , `#__content`.`title` AS `content_title` , `#__categories`.`alias` AS `category_alias` , `#__content`.`introtext` AS `content_introtext` , `#__content`.`id` AS `content_id`
    3.       FROM #__contentitem_tag_map
    4.       JOIN `#__content`
    5.       ON `#__contentitem_tag_map`.`content_item_id` = `#__content`.`id`
    6.       JOIN `#__categories`
    7.       ON `#__content`.`catid` = `#__categories`.`id`
    8.      
    9.       WHERE   `#__content`.`state` = '1' AND `#__contentitem_tag_map`.`tag_id` <> '29' AND  `#__content`.`catid` = '18'
    10.      
    11.      ORDER BY `#__content`.`id` DESC LIMIT 20";
     
    #1 illimited, 28 янв 2023
    Последнее редактирование: 28 янв 2023
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    Код (Text):
    1. ... Having (count(tags.id) <2)
    всё материалы у которых менее 2 тегов
     
  3. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    хочу глянуть, как на ляме записей having пошуршит )
     
    miketomlin нравится это.
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    Чтот первое в голову пришло, предложи свой ввриант

    Ну сделай план запроса и посмотри, настолько ли всё страшно
     
  5. Aleksandr.B

    Aleksandr.B Активный пользователь

    С нами с:
    2 фев 2023
    Сообщения:
    159
    Симпатии:
    41
    Адрес:
    Барнаул
    Возможно с подзапросом "WHERE `#__таблица`.`id` NOT IN (подзапрос)" или "WHERE `#__таблица`.`id` NOT EXIST (подзапрос)"