За последние 24 часа нас посетили 18602 программиста и 1599 роботов. Сейчас ищут 978 программистов ...

Как построить запрос из базы?

Тема в разделе "PHP для новичков", создана пользователем LAlexS, 18 окт 2012.

  1. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    В таблице ex1 есть столбец vars, где значения записаны в формате "1,2,3"
    Есть таблица ex2 и столбец id (допустим я сделал выборку и получил $ex2[id])
    Надо сделать запрос SELECT * FROM ex1 WHERE (одно из значений vars) = $ex2[id]

    Как построить такой запрос? Я не понимаю с какой стороны подойти к решению
     
  2. FIZy_

    FIZy_ Активный пользователь

    С нами с:
    11 окт 2012
    Сообщения:
    11
    Симпатии:
    0
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    так не делают
     
  4. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    LAlexS, очень неудобное представление vars вы выбрали!!! SQL не предназначен для связей "с подстрокой". Но раз уж пошла такая пьянка, у меня было в практике подобное. Приходится использовать сравнение LIKE, причем в такой форме, в которой заведомо не будут использованы индексы, стало быть подходит только для маленьких таблиц.

    Добавлено спустя 3 минуты 45 секунд:
    FIZy_, ваша ссылка такая же непонятная в данном контексте, как и ваш никнейм )))
     
  5. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не надо так делать
     
  6. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    а кто спорит?
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вы ему говорите как сделать так как не надо делать =)

    перестаньте! =) он же воспользуется предложенным решением и ничего не будет менять!
     
  8. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    вредные советы на php.ru !
    честно, я думаю ему звидец полюбому.
    можно подумать кто-то поумнел после "перестаньте", "не надо так делать", "осторожно высокое напряжение".
     
  9. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Как я понял, надо будет мне менять код... фигово ((

    В любом случае, спасибо за участие! )
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    надо будет добавить таблицу с структурой типа
    id, значение
    и если у тебя сейчас через запятую в пятой строке идут 10, 15, 18 то будет три строки
    5, 10
    5, 15
    5, 18

    и выборка простейшая
     
  11. twinn

    twinn Активный пользователь

    С нами с:
    18 окт 2012
    Сообщения:
    5
    Симпатии:
    0
    Не фигово. А очень хорошо. Фигово, это когда думаешь, что твой код идеален. На самом деле всегда есть место рефакторингу, на том стоял и стоять будет клан программистов.

    А по сути - можно LIKE использовать. Вот так примерно:
    Код (Text):
    1. "SELECT * FROM ex1 WHERE vars LIKE '%". $vars .",%'"
    ну или как то рядом. Хотя парни дело говорят, нужно менять архитектуру.