На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
  
> MySQL, хитрый запрос
    Есть запрос вида
    ExpandedWrap disabled
      SELECT t3.id FROM t1, t2, t3 WHERE t1.aaa=1 AND t1.bbb=2 AND t1.id_group=t2.id_group AND t2.type_result=3 AND t3.id IN (t2.possible_id)

    Поле possible_id строковое, возможные варианты значений:
    1,2,4
    3,5,33,42
    8,9,10,11,12
    3,35,40,41,43
    Проблема в том, что выбирается только одна запись, хотя хотелось бы все, с айдишниками перечисленными в поле possible_id.
    Как то можно победить сие?
    Сообщение отредактировано: Gonarh -
      ExpandedWrap disabled
        AND t3.id IN (t2.possible_id)
      замени на
      ExpandedWrap disabled
        AND FIND_IN_SET(t3.id, t2.possible_id)

      Но правильнее - набить лицо архитектору и, если ещё возможно, нормализовать таблицу t2.
      Сообщение отредактировано: Akina -
        Спасибо, уже сам нашел, лицо набью себе сам, по поводу нормализации, как лучше сделать, не вижу более простого пути.
        Сообщение отредактировано: Gonarh -
          Создать таблицу possible_ids с полями t2_id (ссылка на запись таблицы t2) и possible_id (один id из списка, и, вероятно, числового типа). А это поле possible_id из t2 удалить нафиг.

          Тогда в запрос добавится ещё одна таблица, а это условие трансформируется в
          ExpandedWrap disabled
            AND t2.id = possible_ids.t2_id AND t3.id = possible_ids.possible_id
          Сообщение отредактировано: Akina -
            Бля, я тормоз, спасибо.
              Цитата Akina @
              Создать таблицу possible_ids с полями t2_id


              Цитата Akina @
              А это поле possible_id из t2 удалить нафиг.

              Для разных БД, Временные таблицы - затратны, удаление см п. 1. Если
              Gonarh уточнит задачу то решения
              Цитата Gonarh @
              Бля, я тормоз, спасибо.

              Могут быть другими , кроме "могучего" первого слова в цитате. :lol:
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0827 ]   [ 16 queries used ]   [ Generated: 28.03.24, 09:35 GMT ]