1. SQL / Говнокод #6678

    −113

    1. 1
    SELECT `index`,`title`,`date` FROM news WHERE `groups` LIKE '".$group.",%' or `groups` LIKE '%,".$group.",%'  ORDER BY index desc

    Организация связей таблиц новостей и групп. Поле groups содержит в себе инфу вида "3,43,34,54,56,".

    Запостил: kakon, 15 Мая 2011

    Комментарии (11) RSS

    • Лет 10 назад сам такое делал на Т-SQL, пытался вспомнить зачем - не смог... Склероз :)
      Ответить
    • А! Вспомнил! Был рубрикатор, накликал чекбоксы, склеил id в строку и передал в сохраненку... и не надо генерировать SQL запрос. A тут похоже с точностью да на оборот!
      Ответить
      • лубрикатор
        этож пхп
        а копипаста из phpmyadmin за кабельтов смердит
        Ответить
    • внимание, режим кэпа:

      тут даже не запрос говно (ибо приходится выкручиваться), а структура таблиц. groups нужно хранить либо в таблице групп (если соотношение один-к-одному), тогда получается древовидная структура, либо в отдельной таблице связи ключ_одной_таблицы-ключ_другой (многие-ко-многим).

      Такое вот поле-список я когда-то тоже использовал, когда не соображал нихрена в проектировании.
      Ответить
      • Вы абсолютно правы. Там связь многие ко многим и нужна отдельная таблица.
        Забавно было сделано и обратное получение - групп по этому полю =)
        У значения $groups = "3,43,34,54,56," обрезался последний символ и делалось вот так
        SELECT * FROM groups WHERE `id` IN (".$groups.")
        Ответить
      • Я тоже так делал, пока не перестал так делать.
        Ответить
        • Прекрасная формулировка.
          Я серьёзно.
          Ответить
        • значит, накушался сопутствующих костылей вроде сабжа сполна
          Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий