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

    @d-stream
    Готовые решения - не подаю, но...
    Ну в ряде случаев курсор может быть полезно заменить на while, а while на что-нибудь типа insert from select или update "пачкой"

    когда совсем беда с объемами и есть предпосылки - то можно bulk insert и\или openrowset

    притом 10 инсертов по 1 строке помедленнее одного инсерта 10 строк, а bulk в разы быстрее... (недавно играл на буке - нечто типа прайса - почти миллион строк ~5-7 сек). То есть в особо тяжелой ситуации возможно даже окажется приемлемым цепочка sql->csv->bulk
    Ответ написан
  • Как сделать выборку из ms sql server 16?

    @d-stream
    Готовые решения - не подаю, но...
    Если "в следующий раз" - это например завтра, то видимо где-то надо хранить последнюю считанную позицию и уже исходя из ее значения - запрашивать. Если же это "подряд" - то лучше считать все (если это конечно не миллионы строк) и уже потом крутится например в цикле.
    Ответ написан
  • Как показать число заказов каждого покупателя из определенной страны?

    @d-stream
    Готовые решения - не подаю, но...
    select
    customer, count(*)
    from orders
    inner join customers <...>
    where country = <>
    group by customers

    либо убрать where и группировать по стране и клиенту
    Ответ написан
  • Как сделать подсветку и выделение кода в представлениях ms sql Server 2014?

    @d-stream
    Готовые решения - не подаю, но...
    Можно попробовать плагин ApexSQL - в общем-то форматирование можно достаточно гибко настроить.
    Ответ написан
    Комментировать
  • Mysqldump: ERROR: Option 'debug' used, but is disabled?

    @d-stream
    Готовые решения - не подаю, но...
    Там в my.conf не надо случаем разрешить debug ?
    Ответ написан
  • Как связать между собой 2 записи одной таблицы?

    @d-stream
    Готовые решения - не подаю, но...
    А почему смущает (client1, client2) и (client2,client1) ?

    К примеру если речь идет о доверенных лицах - то Вася может быть доверенным лицом Пети, а Петя может быть, а может и не быть доверенным у Васи.
    Соответственно дальнейшие запросы "кому доверяет Вася" и "у кого в доверенных Вася" - отлично разруливаются, а "кто с кем имеет любые отношения" - разруливается с distinct
    Ответ написан
    Комментировать
  • Каким образом автоматизировать отправку отчета?

    @d-stream
    Готовые решения - не подаю, но...
    Как вариант - "штатными средствами": www.cyberforum.ru/oracle/thread727605.html
    Ответ написан
    Комментировать
  • Как правильно выполнить условие в условии?

    @d-stream
    Готовые решения - не подаю, но...
    Собственно прямо по словесному описанию:
    where
    table.date <= наша дата
    or
    table.id = наш_id
    or
    ("наш_test1" = table.test1 AND "наш_test2" = table.test2)
    Ответ написан
    4 комментария
  • Баг с авторизацией на сайте. В чем проблема?

    @d-stream
    Готовые решения - не подаю, но...
    Исключив откровенный дебилизм разработчиков сайта, можно предположить их частичный дебилизм в виде ограничения длины принимаемого пароля.

    Подобное было в свое время у ICQ - пароль был не более 7 символов, но можно было вводить и больше, все равно от введенного бралось только 7 первых...

    p/s/ сами пароли в базе не хранят. по крайней мере нормальные разработчики.
    Ответ написан
  • STR_TO_DATE в MSSQL 2008?

    @d-stream
    Готовые решения - не подаю, но...
    В MSSQL есть CAST и CONVERT

    CONVERT - построже

    хвост запроса мог бы выглядеть так:

    AND (cast(( periodYear+'-'+periodMonth+'-01'),'%Y-%m-%d') as datetime2) BETWEEN '2016-01-01' and '2016-04-01')

    то бишь CAST( некая фигня AS некий тип) [ CAST('01-04-2017' as datetime2)]

    либо CONVERT(datetime2, '31-12-2017', 104) (104 - это формат DD-MM-YYYY)
    Ответ написан
  • Как лучше спроектировать таблицу?

    @d-stream
    Готовые решения - не подаю, но...
    Достаточно быстро окажется, что надо как-то отслеживать поступление товаров, ремонт, списание и т.п.

    В общем лучше сразу ориентироваться на документы поступления (откуда и считается кол-во всего), документы выдачи (сколько сейчас в прокате/аренде), документы возврата, документы выбытия и т.п.
    Соответственно "набежит" по как минимум паре таблиц на каждую такую сущность (данные документа и строки документа).
    Соответственно текущее состояние будет вычисляемым как сумма приходов минус суммы расходов, выдач, списаний), но в том числе будет доступна информация о движениях каждого элемента учета.
    Ответ написан
    Комментировать
  • Что обозначает символ; в TSQL?

    @d-stream
    Готовые решения - не подаю, но...
    А в каких именно туториалах? MSDN так не делает: https://msdn.microsoft.com/ru-ru/library/ms175972.aspx
    Ответ написан
  • Как использовать Cross join t-sql?

    @d-stream
    Готовые решения - не подаю, но...
    select
    *
    from (select N'Один' as column1, N'Два' as column2) as table1
    cross join (select N'Три' as col1, N'Четыре' as col2) as table2

    ну или по вкусу:

    select
    table1.column1,
    table2.col1,
    table1.column2,
    table2.col2
    from (select column1 = N'Один' , column2 = N'Два') as table1
    cross join (select col1 = N'Три', col2 = N'Четыре' ) as table2
    Ответ написан
  • Как правильно формировать запрос mysql?

    @d-stream
    Готовые решения - не подаю, но...
    Еще есть третий вариант в виде совсем короткого

    select * from table

    Из вариантов с именованием - как-то посимпатичнее через "AS"
    Ответ написан
    Комментировать
  • Какое проектирование БД более верное?

    @d-stream
    Готовые решения - не подаю, но...
    Кстати стоит иметь в виду, что в реальной жизни зачастую "скидка на скидку" неприменимо.
    Посему лучше заблаговременно подойти к "правилам скидок".

    Как один из вариантов:
    1. таблица групп(категорий) скидок rules_groups (id, descr, [ordering])
    2. таблица "правил применения скидок" rules(id, group_id, descr, ordering, percent [условия])

    Подразумевается что из каждой группы может быть применено одно правило (первое по порядку).
    тогда соответственно (упрощенно)

    select top 1 percent from rules where group_id=xx and (кучка условий на соответствие правилу) ORDER BY ordering

    притом колонок условий для правил может быть множество и оно легко расширяемо. Навскидку от общих типа категорий, товарных групп, цветов, остатков/запасов/оборота, ABC классификации и т.п., заканчивая сроками истечения годности, количеством и даже данными контрагента, его группы и категории.

    По вкусу можно на уровне групп или правил предусмотреть признак мультипликативная (умножение на коэффициент) это скидка или аддитивная (вычитание суммы) и "за единицу" или "за партию".
    Ну и с учетом танцев с финокруглениями на тему НДС - неплохо иметь признак "С НДС"/"Без НДС" (но это подразумевает ньюансы хранения цен.

    Еще элементом тюнинга будут флаги или коэффиценты на предмет применять ли правило при снижении отпускной цены ниже себестоимости"
    Ответ написан
    Комментировать
  • Как оптимизировать запрос?

    @d-stream
    Готовые решения - не подаю, но...
    Можно попробовать вот так:
    declare @filter table(x int, y int, primary key(x,y))
    insert into @filter (x,y) values (192,18),(191,17).....

    select * from dbo.boards_map inner join @filter as f on f.x=dbo.boards_map.x and f.y=dbo.boards_map.y
    Ответ написан
    Комментировать
  • Как подсчитать время в полях Time?

    @d-stream
    Готовые решения - не подаю, но...
    чем плох классический datediff ? можно даже сразу вычисляемое поле сделать.
    Ответ написан
  • Лучше 1 int поле status или 2 boolean?

    @d-stream
    Готовые решения - не подаю, но...
    Как вариант: int как референс на таблицу статусов с вариантами их названий (полно, кратко) флагами - это позволит в будущем при необходимости менее кроваво расширить эти статусы и т.п. и в определенных случаях "регулировать" доступность промежуточных статусов.
    Ответ написан
    Комментировать
  • Процедура или функция?

    @d-stream
    Готовые решения - не подаю, но...
    Совсем упрощенно:

    Функция - когда надо получить какой-нибудь результат. Например очистка номера телефона от паразитных символов (скобки, дефисы и т.п.)

    Процедура - когда надо выполнить какие-либо действия. Как образчик абстрактный документ со строками, разные действия со строками документа (добавление, удаление, изменение) и пересчет документа.

    MySQL не самый показательный в этом плане, в других вариантах - функции и процедуры используются активно.
    Ответ написан
    Комментировать
  • Какую версию SQL Server можно использовать для работы с VS 2015?

    @d-stream
    Готовые решения - не подаю, но...
    Собственно формальный ответ - "никакую". Для работы самой студии SQL как таковой не требуется.
    А для разработки чего-то своего - в общем-то любую версию. C точки зрения движения на острие прогресса - видимо самую новую.
    Ответ написан
    Комментировать