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

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

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

  1. Илиян

    Илиян Member

    Рег.:
    Март 8, 2017
    Съобщения:
    94
    Харесвания:
    23
    Точки:
    8
    Пол:
    Мъж
    Здравейте, опитвам се да направя една супер проста проверка в 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,069
    Харесвания:
    58
    Точки:
    48
    Пол:
    Мъж
    пробвай със
    select * from category where cat_users='7'
    или
    select * from category where cat_users in ('7')
     
  3. hristonev

    hristonev Active Member

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

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

    AMitrev Well-Known Member

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

    Petar K New Member

    Рег.:
    Ян 3, 2018
    Съобщения:
    4
    Харесвания:
    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,534
    Харесвания:
    575
    Точки:
    113
    Пол:
    Мъж
    Място:
    Казанлък
    Долу до бутона Докладвай има дата на поста.
     
  7. Petar K

    Petar K New Member

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

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