За последние 24 часа нас посетили 17764 программиста и 1703 робота. Сейчас ищут 940 программистов ...

Помогите сделать "правильную" выборку из базы

Тема в разделе "PHP и базы данных", создана пользователем AntonMs, 18 дек 2015.

  1. AntonMs

    AntonMs Новичок

    С нами с:
    26 фев 2015
    Сообщения:
    46
    Симпатии:
    0
    Есть столбец в базе вот такого типа "Красный;Зеленый;Голубой", и запросом делаю выборку "WHERE `category_RUS` LIKE '%Красный%' ", соответственно возвращает все строки где есть "Красный", но как сделать выборку по красному и зеленому одновременно? Если через LIKE нельзя то помогите пожалуйста составить выборку с помощью REGEXP.

    Добавлено спустя 8 минут 21 секунду:
    Разобрался REGEXP ' Красный|Голубой '
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    еще можно просто два LIKE делать, через AND
     
  3. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    вроде как можно же написать
    Код (PHP):
    1. WHERE `category_RUS` LIKE '%Красный%' AND `category_RUS` LIKE '%Зеленый%' 
    кстати как вариант можно использовать FULLTEXT
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    ага, ага! ветер в спину.

    Это говно на форуме обсуждалось при мне раз *цать. Если ты работаешь с реляционной базой данных, используй отношения!

    "Правильно" это реализуется через отношение многие-ко-многим. Потребуется три таблицы:
    - Что-то имеющее категории (ты лять поленился написать даже что это)
    - Категории
    - Таблица-связка (something_id, category_id)

    А в строке через запятую или пох-через-что ты можешь хранить, да. Но только для вывода, когда тебе НЕ надо накладывать фильтр выборки по категории. А для поиска или фильтра нужны нормальные отношения.
     
  5. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Кому нужна эта дурацкая нормализация, всякие FIND_IN_SET и прочее говно ?
     
  6. AntonMs

    AntonMs Новичок

    С нами с:
    26 фев 2015
    Сообщения:
    46
    Симпатии:
    0
    Спасибо всем, я про AND вообще забыл.