We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 1035
    • 81 Posts
    Есть такие таблицы ::

    1.site_keywords (id,keyword) --- таблица с тэгами
    2.site_content (id, ... , ... ) --- таблица с контентом
    3.keywords_xhref (content_id,keyword_id) --- таблица связей контента и тэгов (две предыдущие таблицы)

    Надо получить контент у которого есть такой-то тэг, допустим ...?tag=monia
    то есть для этого тэга "monia" нужно вытянуть весь контент К КОТОРОМУ ОН ПРИВЯЗАН

    ...............КАК? huh huh huh

    Чуть позже смогу выложить свой запрос - который работает - но возвращает пустой result-set...

    UPD:
    Раньше таких проблем не возникало smiley

    UPD2:
    select * from site_content where id in (select content_id from keywords_xhref where keyword_id=(select id from site_keywords where keyword="monia"))

    Попробую так... хоть мне и не нравиться использовать вложенные SELECT’ы...

    Может есть вариант лучше?
      Чем я занят на данный момент, читайте в этой теме: [EVO] Ресурс-контроллер?
      • 785
      • 2,113 Posts
      Quote from: Alextekkk at Apr 04, 2011, 12:36 AM

      Может есть вариант лучше?
      Конечно, использовать LEFT JOIN. Посмотрите, как в самом MODx делают разные запросы.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 1035
        • 81 Posts
        Quote from: AKots at Apr 04, 2011, 02:22 AM

        Quote from: Alextekkk at Apr 04, 2011, 12:36 AM

        Может есть вариант лучше?
        Конечно, использовать LEFT JOIN. Посмотрите, как в самом MODx делают разные запросы.

        Пасиб, буду пробовать smiley
          Чем я занят на данный момент, читайте в этой теме: [EVO] Ресурс-контроллер?
          • 22668
          • 718 Posts
          Интересно узнать чем плох такой вариант:
          SELECT blabla
          FROM site_keywords, site_content, keywords_xhref
          WHERE blabla
            • 1035
            • 81 Posts

            .........
            Тут проверки входных GET параметров $p и $tag и их обработка
            .........
            А тут собственно сам запрос:
            
            $site_content=$modx->getfulltablename('site_content');  //Получаем правильные
            $keyword_xref=$modx->getfulltablename('keyword_xref');  //имена
            $site_keywords=$modx->getfulltablename('site_keywords');//таблиц
            
            //и собираем сам запрос
            $sql="SELECT ";
            $sql.=$site_content.".id, ";	
            $sql.=$site_content.".pagetitle, ";	
            $sql.=$site_content.".longtitle, ";	
            $sql.=$site_content.".description, ";	
            $sql.=$site_content.".introtext, ";	
            $sql.=$site_content.".content, ";	
            $sql.=$site_content.".parent, ";
            $sql.=$site_content.".publishedon, ";
            $sql.=$keyword_xref.".content_id, ";
            $sql.=$keyword_xref.".keyword_id, ";
            $sql.=$site_keywords.".id, ";
            $sql.=$site_keywords.".keyword ";
            $sql.="FROM ".$site_content.", ".$keyword_xref.", ".$site_keywords." ";
            $sql.="WHERE ";
            $sql.=$keyword_xref.".keyword_id=".$site_keywords.".id AND ";
            $sql.=$site_keywords.".keyword=\"".$tag."\" AND ";
            $sql.=$keyword_xref.".content_id=".$site_content.".id ";
            $sql.="ORDER BY ".$keyword_xref.".keyword_id DESC ";
            $sql.="LIMIT ".$start.",".$num."";


            Работает наконец-то smiley

            Paprikas, ваш вариант кстати grin thanks!
              Чем я занят на данный момент, читайте в этой теме: [EVO] Ресурс-контроллер?
              • 785
              • 2,113 Posts
              Quote from: Paprikas at Apr 04, 2011, 12:23 PM

              Интересно узнать чем плох такой вариант
              Это один из вариантов JOIN, в котором опущено данное ключевое слово – http://www.mysql.ru/docs/man/JOIN.html
              Затрудняюсь сказать, как MySQL обрабатывает разные варианты и что оптимизируется лучше, но сам предпочитаю явно указывать JOIN.
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 1035
                • 81 Posts
                Quote from: AKots at Apr 04, 2011, 10:27 PM

                Quote from: Paprikas at Apr 04, 2011, 12:23 PM

                Интересно узнать чем плох такой вариант
                Это один из вариантов JOIN, в котором опущено данное ключевое слово – http://www.mysql.ru/docs/man/JOIN.html
                Затрудняюсь сказать, как MySQL обрабатывает разные варианты и что оптимизируется лучше, но сам предпочитаю явно указывать JOIN.

                Я вчера поузнавал про оптимизацию запросов с JOIN’ами(1) и без них(2) (перечисляя таблицы через запятую) - разницы никакой (если верить хабралюду)

                Как я понял, MySQL при обработке запроса сам проставляет join’ы во 2м случае
                  Чем я занят на данный момент, читайте в этой теме: [EVO] Ресурс-контроллер?
                  • 22668
                  • 718 Posts
                  Я такие запросы видел в SMF и еще их генерирует мне конструктор запросов Razor sql.
                  Понятия не имею какой путь верный, но меня все устраивает в моем случае.