За последние 24 часа нас посетили 16395 программистов и 1556 роботов. Сейчас ищут 1612 программистов ...

MySQL - разбиение строки

Тема в разделе "MySQL", создана пользователем p@R@dox 55RU, 25 мар 2016.

  1. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Всем бодрого!
    Есть задача:
    В таблице базы данных в одном из полей(VARCHAR) хранятся ключевые слова, разделенные запятыми (латиница и кириллица). Количество слов в каждой записи может варьироваться. Необходимо составить запрос, возвращающий только уникальные значения ключевых слов.

    Сейчас ищу интересные варианты в поисковиках. Может кто тут еще что интересного предложит, с использованием чего нить необычного.
    Спасибо! ((:)
     
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    ага, как если бы ты что-то сам предложил
     
  3. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    пока только встретил - SUBSTRING_INDEX. Думаю, может через представление сделать... (:)
     
  4. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    Ну думай. Если придумаешь, ты будешь реально гений.

    Советую очевидное:
    - создать таблицу "словарь" с уникальным индексом по полю
    - создать таблицу-связку для огранизации связи между исходной таблицей и словарем как M:M
    - один раз прогнать все записи исходной таблицы через процедуру с explode и insert ignore в целевую таблицу
    После чего у нас будет нормальная (в реляционном смысле) схема для запросов. а текстовое поле использовать только для вывода, а никак не для поиска.
     
  5. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    artoodetoo, пасиб. Я и твой вариант попробую конешь.
    Про уникальность тоже много думал, просто что задача немного расплывчато стоит... и поэтому хочу все перепробовать ((:)
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Только отдельная таблица.
     
  7. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    igordata, да, у меня в целом 3 таблицы получились ))):
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Я хотел сказать, что нет альтернативы.
     
  9. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    единственная альтернатива - это встроенная процедура. Но там получается тоже, что и в php перебор ))):
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Нет. Это не спасёт от фулскана таблицы. Единственное спасение это индексы. Нет индекса - беда.
     
  11. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Индексы расставил и уникальные тоже указал. Просто интересно, как не используя php-операции все сделать в MySQL. Как мне показалось - так это через курсоры. Но там делов еще больше в раза 2-3 ))):
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Чего-то ты перегрелся. Просто таблица, просто по одному слову на строчку. Вот и всё.
     
  13. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    да - нее... Всё нормально ((:) Оставил в связке php+mysql... Будет когда нить настроение - попробую через курсоры переделать- интересно ((:)
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    какие курсоры? О чем ты? Почему ты не можешь сделать нормальную "нормальную" базу?
     
  15. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    igordata, могу и сделал... Я же писал выше... Говорю же, просто интересно всё сделать только на mysql без php ((:)
    что бы не гонять данные туда-сюда, чисто из за одной функции php - explode. И использовать mysql курсоры (;
     
  16. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Что такое курсоры?
     
  17. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    как я понял, это подобие массивов... Мне понравилось.. ((:)