Имате ли представа защо IN() не работи

Дискусията в 'Web Development' стартирана от Илиян, Дек 19, 2017.

  1. Илиян

    Илиян Active Member

    Рег.:
    Март 8, 2017
    Съобщения:
    156
    Харесвания:
    66
    Точки:
    28
    Пол:
    Мъж
    Здравейте, опитвам се да направя една супер проста проверка в mysql и не иска да сработи, а преди съм сигурен че съм правил подобни неща и не е имало проблеми.

    Да речем, че категорията има cat_users със съдържание 1,7 - искам да проверя дали потребителя 7 присъства. Опитвам с: SELECT * FROM category WHERE cat_users IN(7) и ми връща празен резултат. Опитах и обратното - WHERE 7 IN(cat_users) и пак не става. Интересното е, че ако опитам с 1, което е първата цифра, тогава работи, но със 7 не иска.

    Имате ли представа къде бъркам, защото гледам разни документации и навсякъде го обясняват по същия начин. Да не би да има значение каква е колоната в таблицата - в момента е varchar?
     
  2. xainov

    xainov Well-Known Member

    Рег.:
    Февру 7, 2013
    Съобщения:
    1,229
    Харесвания:
    122
    Точки:
    63
    Пол:
    Мъж
  3. hristonev

    hristonev Active Member

    Рег.:
    Авг 5, 2016
    Съобщения:
    513
    Харесвания:
    210
    Точки:
    43
    Пол:
    Мъж
    IN се ползва с обратен смисъл. Демек в твоя случай няма да работи. 2рия опит не работи, защото cat_user е стринг. На теб ти е нужна колекция/лист. Демек без релация няма да минеш. category -> cat_user <- user.

    ПП сетих се JSON тип колона. Може да ти свърши работа.
     
  4. AMitrev

    AMitrev Well-Known Member

    Рег.:
    Авг 6, 2012
    Съобщения:
    1,601
    Харесвания:
    272
    Точки:
    83
    Пол:
    Мъж
    Място:
    София
  5. Petar K

    Petar K New Member

    Рег.:
    Ян 3, 2018
    Съобщения:
    8
    Харесвания:
    0
    Точки:
    1
    Ако cat_users съдържа само 1 категория:
    SELECT * FROM category WHERE cat_users = '7'

    Ако cat_users съдържа до 2 категория:
    SELECT * FROM category WHERE cat_users = '7' OR cat_users LIKE '7,%' OR cat_users LIKE '%,7'

    Ако cat_users съдържа само 1+ категория:
    SELECT * FROM category WHERE cat_users = '7' OR cat_users LIKE '7,%' OR cat_users LIKE '%,7' OR cat_users LIKE '%,7,%'

    Втория и третия вариант ще вървят бавно ако таблицата има много записи.
     
  6. Sky

    Sky Well-Known Member

    Рег.:
    Юли 29, 2012
    Съобщения:
    8,825
    Харесвания:
    651
    Точки:
    113
    Пол:
    Мъж
    Място:
    Стара Загора
    Долу до бутона Докладвай има дата на поста.
     
  7. Petar K

    Petar K New Member

    Рег.:
    Ян 3, 2018
    Съобщения:
    8
    Харесвания:
    0
    Точки:
    1

Сподели страницата

  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies.
    Dismiss Notice