Ответы пользователя по тегу SQL
  • Как сделать поиск по отдельным словам разбросанным по всему тексту?

    @nrv
    Ну, для MS SQL я напишу такое, функция разбиения строки по символу разделителю пишется в строк 10, кто-то у нас на работе написал, код глядел, ничего сложного. Дольше строим sql запрос в коде (@sql varchar(max)), присваиваем в цикле and like % + select value from array where id = @счетчик_в_цикле) + %. Запускаем exec @sql. Для mysql - наверное тоже можно, сам не работал с ней, но класс БД тот же, возможности в синтаксисе должны быть.

    А дальше оптимизированный not like оптимизирован))))

    Нормальный поиск однозначно не на sql делается. Какого-то крокодила из костылей можно сделать. К сожалению, не могу сказать как делать нормальный поиск, но я бы поискал какую-то информации, какие-то истории "как мы сделали крутой/нормальный поиск.

    Существует понятие полнотекстовый поиск, он вроде есть в Mysql и он решает красиво то что я в начале написал, но не решает проблему формы (падежей склонений и т. п.) слов.
    Ответ написан
    Комментировать
  • Как случайно не удалить базу данных?

    @nrv
    Не знаю как удалить базу данных (не было задачи такой ниакогда). Таблицу drop table, полная очистка записей truncate table. Возможно, базы примерно так же как и таблицы создаются и дропаются.

    Вообще допустить серьёзную ошибку с большой потерей данных можно если руками делать много работы - чистите базу, удаляете всякие some_table_dev, some_table2, some_table_backup можно что-то не туда копипастнуть и удалить таблицу. Или автоматизация, какой-то скрипт который что-то дропает или транкейтит.

    Если вы только select - ы пишите, ничего удалить вы не можете, мораль такая)) Чтобы удалить базу, нужно чтобы запустился код, который удаляет базу (может вы думаете, что не ту базу, и в этом опасность и кроется). Если вы не знаете как удалять базу, вы её не сможете удалить (из sql), если только что-то попало из инета не запускаете.
    Ответ написан
    Комментировать
  • Как составить такой sql запрос с двух страниц?

    @nrv
    1) Личное ощущения: не джойните, пожалуйста таблице в where. Если вы их джойните, пишете нормальный джойн ( типа t1 join t2 on t1.col = t2.col). Практика показывает, что те кто сопоставляет таблицы в where, не понимают, что они делают.
    2) Инфы недостаточно. Вы уверены что джойнить нужно по P.field = F.id? Нужно нормальное описание, что из себя таблицы представляют.
    3) Несколько условий - это что? И по первому чтобы вышло (запись(и) 'Medium' + 'Size') и по второму (запись(и) 'Purebred' + 'Type') одновременно? Тогда ((P.value = 'Medium' AND F.name = 'Size')
    or (P.value = 'Purebred' AND F.name = 'Type'))
    Ответ написан
    Комментировать