Это единый баз данных тред. Старый смыло.СЕЛЕКТИМ мусор из помоек, срёмся, какая субд хуже, решаем простые задачки на -T-SQL на собеседованиях, поясняем за правильную табуляцию в запросах,креэйтим колоночные индексы на таблички, в которые идёт инсерт и реализуем прочие хорошие практики разработки БД.В треде приветствуются все: от студаков с обоссанными лабами до любителей анализа данных и машинного обучения.Постим свои эс-ку-эли-сиквели-транзакты, хвастаемся понятным и без комментариев читаемым кодом с вложенными запросами,решаем прикладные задачи Тети Вали из бухгалтерии "А сделайте мне программку" на уровне архитекторов. Убеждаем залётных, что в тырпрайзе софт не нужен, а автоматизировать можно всё и на процедурах-триггерах-Икселях.
Поясните за sqlite. Норм для новичка?
>>862809Не норм, а отличная штука, особенно если у тебя крутая многоплатформенная тырпрайз система с огромными объёмами кеша и попытками в офлайн работу. Особенно хороша в связке с многозвенной архитектурой сервера и T-SQL.>>862801 (OP)Триггеры - говно и не удовлетворяют реляционной модели, убивают прозрачность и превращают функциональный ЯП в в мультипарадигменный. Короче не нужны.Я ТАК СКОЗАЛ!
Вообще что-то нечитаемое на картинке, хотя я изучал субд как строить эти отношения в нормальных формах. Понятно, что запрос. Но выбери объекты как объекты из значения как значения? Похоже на абстрактное заклинание-мантра. Обычный программист вообще прехнётся от такого.
>>862819То есть, юмора ты там не углядел? Печально.
использую IDE Datagrip, но не очень доволен удобством(хотя удобнее чем pgadmin3)есть ли что-нибудь удобнее чем DataGrip?
>>862822для постгри канешн
>>862822А что в pgadmin неудобного? Ты же постгрес, я так понимаю, юзаешь?
>>862825он сам по себе через жопу работает. иногда вылетает.
>>862832Ну, судя по тому, что я нагуглил про DataGrip, круче, вроде как, я ничего не видел.Проблема в том, что он платный, а пгадмин - бесплатный.
Посоны, как на джаве сделать бэкап из mysql одной таблицы и конвертнуть его в JSON?
>>862834ну 8 баксов в месяц не проблема, если используешь его в работе.но все равно, эта ебанина триггеры не показывет(рутины показывает) и нехватеет функционала psql консольного.
>>862835http://stackoverflow.com/questions/14691112/import-a-dump-file-to-mysql-jdbcа дальше как получиться.
Привет, подскажите какие есть варианты для хранения свойств товара в реляционной базе? Погуглив я нашел следующие варианты:1. EAV2. Одна общая таблица для всех товаров, значение свойств NULL если оно не определено для данного товара. Наверное свойства должны быть более менее одинаковыми, и категорий 2-3.3. По таблице на каждую категорию товаров. Для скольких категорий такой способ вообще рационален? 10-20 категорий при условии что они все известны на этапе проектирования?Какие есть еще способы, решения?И прокатит ли такой вариант, одна таблица Product для общих свойств всех товаров, такие как цена. А индивидуальные свойства категорий товаров хранить с помощью EAV? Что скажите?
>>863895ПланВидовХарактеристикили можно сделать по-простому. Сделать таблицу с 3 колонками: Ссылка На Товар (ид товара); Наименование Характеристики (строка); Значение Характеристики (тоже строка, с сериализованным значением)
>>863899спасибо, это изобретение 1с или где-то еще встречается?
В буржевики на странице про EAV свободна секция "Physical representation of EAV data", можно запилить свою репрезентэйшен со ссылкой на свой гитхаб профиль.
>>863899По сути это EAV? Те же пары атрибут-значение, только название атрибута будет иногда повторяться, т.к. находятся в одной таблице?
>>863979Ну так и вынес бы название атрибута в отдельную таблицу, чтобы не повторялось.Да и значения тоже, так меньше памяти займёт.
>>862801 (OP)Что скажешь насчет даталога (и в частности Датомик)?
В английских статьях о ДБ часто упоминается термин sub-schema, это название определенной модели, или можно понимать(перевести) дословно под-схема?
>>863907Да, изобретение 1С. А ещё там рядом с атомарными аттрибутами некоторой сущности может идти составной аттрибут (называется табличная часть). Вот для решения таких задач она и может использоваться, трюк называется "Дополнительные реквизиты и сведения".
Как делать инкрементальный бэкап в mysql только одной таблицы?
>>863895Способы 2 и 3 подойдут только для сделанного на коленке магазина селфи-палок. Особенно уныло то, что тебе придется при каждом новом свойстве добавлять новые колонки в рсубд, удалять ненужные (или класть на них хуй и создавать ночной кошмар для себя и других макак), а также дописывать в логику эти новые колонки и убирать старые. Очевидный EAV очевиден. Для годных фреймворков уже есть готовые библиотеки, реализующие EAV для произвольных объектов. Если будешь проектировать сам - не забывай, что value могут быть не только числом, строкой или "да"/"нет", а еще и опцией (одиночной или множественной), при проектировании это лучше учесть сразу, и в целом все сделать максимально абстрагированно, запрос должен сводиться к СписокТоваров = ПолучитьТовары(Штаны, 20_штук, В_Порядке_Возрастания_Цены, Параметры("Цвет" => ["Зеленый", "Синий"], "Размеры" => [40,42,44])
была задача построить дополнительное граф-ориентированное хранилище для прожекта. архитект, вместо очевидного решения выбрать ГОБД, построил самописный кал на редисе. видит ли кто-нибудь невероятное преимущество этого мува?
>>866647Только в случае "ну блять у нас все на редисе тип".
>>866767аргумент был почти: "я два года юзаю редис и крч прям в восторге от него"мне казалось, есть что-то еще и я не понимаю сути
Бамп, он же вопрос.Есть необходимость освоить postgres. Вот накатил я ее на свой нотебук. Как я понял, у меня нет никакого конфигфайла вообще? Мне его надо создать ручками и только потом запускать сервак, делать юзера, делать бд а потом уже подрубать ее к своим прости, Господи веб-приложухам?
>>869921Написал хотя бы, что за ОС. Вообще ставил, что на винде, что на линуксе - все конфиги создавались автоматически.
Привет. Вопрос проектирования: допустим, есть какая-то сущность и справочник к ней. Например, машина и её фирма-производитель.Есть два стула подхода:1) Иметь две таблицы, машина и фирма, и хранить в таблице машина отдельным столбиком айдишник фирмы.2) Иметь три таблицы, машина, фирма и таблица-связка МашинаФирма. Тогда связь между машиной и фирмой хранится в третей таблице (ид машины-ид фирмы).Вроде как хорошей практикой считается подход №2. Кто-нибудь может пояснить в чём его профиты? И как быть с неудобством добавления новой машины и тем, чтобы вытащить инфу о какой-нибудь машины, надо заджойнить аж 3 таблицы.
>>870055подход 2 - это связь многие-ко-многим. сомневаюсь, что тебе понадобится одну машину связать с несколькими фирмами
Анончики, есть таблица пикрелейтед. В ней миллион записей. Бд PostgreSQL.Дали мне заполнить уровни иерархии в колонке Level.Ну так как я ньюфаг и вообще и умею писать только CRUD, то скажите в какую сторону копать, что изучать?Пока что в голову пришло это на пхп вытащить все записи из бд все перебрать и залить опять, но чую, что это все будет делаться несколько часов.Сильно ли эта задача сложная?
>>870127рекурсивный запрос чтили?
>>870068Many to many это понятно. Но такой подход используется даже в отсутствие такой связи. Поэтому я и попросил пояснить плюсы и минусы каждого подхода. Например, при подходе #1, если мы захотим ввести новый справочник, нам надо будет добавить новую колонку в таблицу, это хуже, чем добавить две таблицы и две связи при подходе #2?
>>870172использовать нечто при отсутствии на то необходимости никогда не даст никаких плюсов. в случае запиливания м2м связей это: а) необходимость дополнительного соединения таблицы; б) необходимость проверки/учета случая, когда связей оказалось две или более, хотя предполагалась всего одна
>>870159я хз, только на пыхе такое могу сделать
Продублирую>>869982>>869990Сап. Не могу нагуглить, как правильно сделать на postgresql ф-ию, которая возвращала бы записи из таблицы "лайки" (user_id, to_user_id, value) для первых 10 юзеров. Не спрашивайте нахуя, просто надо.Эта хуйня ниже возвращает строки в виде "(1,8,1)" , а мне нужны нормальные колонки, как при обычном select-е.http://pastebin.com/taRBHJ20
>>870211Может надо курсор возвращать?
>>870214Если я сделаюRETURNS SETOF refcursorи RETURN NEXT c; (вместо rec, как было)то на выходе получу такую ебалу:<unnamed portal 14><unnamed portal 14>..
>>864526>Для годных фреймворков уже есть готовые библиотеки, реализующие EAV для произвольных объектов. Какие, например? В php для yii, symfony такие либы есть?
Сап. Есть запрос с подзапросом, в котором 4 столбца - цена, имя продукта, год и месяц(из одного и того же столбца одной таблицы)) В запросе мы получаем в каждом месяце каждого года самый продаваемый товар. НО! выводится только кол-во продаж, без наименования товара. Если в select прописать x.NAME то sql посылает нахуй с ошибкой (Столбец "x.NAME" недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.) Если же добавить в group by тогда в выводе выводятся все товары, проданные за всё время, без сортировки по кол-ву самых проданных. Как можно вывести к данной таблице имя товара?Сам код - use NorthwindSELECT MAX(x.Quantity) AS Quantity, [YEAR], [MONTH] FROM (SELECT SUM(Quantity) AS Quantity, Products.ProductName AS NAME, YEAR(OrderDate) AS [YEAR], MONTH(OrderDate) AS [MONTH] FROM Productsjoin [Order Details] ON Products.ProductID = [Order Details].ProductIDjoin Orders ON [Order Details].OrderID = Orders.OrderID GROUP BY YEAR(OrderDate), MONTH(OrderDate), Products.ProductName)xGROUP BY [YEAR], [MONTH] ORDER BY [YEAR], [MONTH]
>>870215Я вообще больше по Ораклу, но "SETOF refcursor" - это разве не набор курсоров? А тебе тут надо вернуть лишь один курсор. Вдобавок не проще ли сделать "select * from mytable group by user_id order by user_id limit 10" и вернуть курсор на этот запрос?
>>870262Может внешний запрос должен не юзать GROUP BY, а условие HAVING x.quantity = MAX(x.quantity) ?
>>870262убрать ProductName из подзапросаубрать внешнюю группировку (которая, нахуя-то, дублирует группировку подзапроса)сделать джойн на продукты основному запросу>>870265>>870214а зачем курсоры? я что-то не понимаю, или:select *from likes lwhere l.user_id in (select top 10 user_id from user) ?
>>870271Не уловил суть. Просто заменить GROUP BY на HAVING?
>>870273Без внешней группировки запрос не работает, так же жалуется на то, что он не содержится ни в статистической функции, ни в предложении GROUP BY.
>>870273Если в подзапросе не будет продуктнейма, как мне сделать джойн на основном запросе? что к чему связывать тогда?
>>870273Извиняюсь за флуд. Если убрать продуктнейм то в продажах выводятся совсем большие числа, не знаю откуда. Таких в принципе нет в таблице.
>>870294Можно попробовать в подзапросе добавить колонку max(quantity) over (partition by year, month), а во внешнем запросе проверять x.quantity = max(x.quantity).
>>869954линь, конечно же.сейчас бы на винде поразрабатывать веб
>>870298Тоже совсем рандомные числа получаются, таких даже в таблице нет.
>>870305Нет скрипта создания таблиц и их заполнения? Лень самому ковыряться.
>>870273> а зачем курсоры? я что-то не понимаю, или:> select > from likes l> where l.user_id in (select top 10 user_id from user) ?Вообще да, так лучше, только limit 10, top нет в постгресе.>>870211Вообще ф-ия, оказалось, работает. Я ее вызывал через "select func()", поэтому такая хуйня была:> Эта хуйня ниже возвращает строки в виде "(1,8,1)" , а мне нужны нормальные колонки, как при обычном select-е.А надо через select from func()Но ф-ия работает чуть дольше, чем простой запрос выше, так что нахуй ее, да. Я думал, что с подзапросом будет всяко дольше (у меня на самом деле будет число не 10, а намного больше), а курсоры должны быть дохуя быстрые, т.к. это нативная фича.
>>870302Выполни запрос show config_file. У меня показывает:"/var/lib/pgsql/9.5/data/postgresql.conf"
>>870308Так таблица уже создана. Мне просто нужен запрос для вывода. И по сути есть запрос, но в него нужно добавить столбец с наименованием продукта.
>>870311Скрипт нужен, чтобы у себя сделать таблицы и написать запрос, это всяко проще, чем теоретизировать.
>>870315могу саму бд скинуть.
>>870315http://rgho.st/82MsDMqtS
>>870191Т.е. подход #2 будет даже неправильным, а препод пиздит?
>>870541гм, я не знаю, что говорил препод, но в вышеописанном тобой случае при наличии, в теории, большого количества данных (да и без такового случая) - да. случаи всякие бывают, но при росте продукта подобные переусложнения приводят к проблемам, которые еще попробуй решить без костылей и последствий
Задача довольно простая, поэтому кто сможет сделать эту бд заплачу 300рЗадача: вы собираетесь купить себе телефон, всего существует две торговые сети (допустим связной и евросеть), у каждой из этих сетей есть по 5 филиалов (соответственно со своими адресами и телефонами) и мы выбираем из 5 фирм (например apple Samsung HTC Nokia Motorola) у фирмы есть несколько моделей (у каждой модели свой несколько цветов: белый и черный)По запросу хотим иметь представление где (вам в каком магазине) можно купить телефон интересующей нас модели (соответственно его основные парматеры цвет, цена)
Почта для связи desan5@mail.ru Telegram @Vovan_Yragan
>>870570>>870576
>>870578хотел тебе расписать в красках, как это решить,но раз ты такой, то обойдешься
>>870127Правильно сказал тебе Анон, это рекурсивный запрос
>>870580Двачую, у нас тут безвозмездная помощь, мы в добрых чувствах только, любовью к бд едины.А он нам свои фантики предлагал.
>>870262Ну же, пожалуйста. Помогите аноны
>>871008проверь ибо хзhttp://pastebin.com/mBmPRbbD
>>871064Спасибо за старание, однако это не то что надо было. Нужно получить наименование самого продаваемого товара за каждый месяц каждого года. Например на скриншлоте видно, что в 1996 году 7 месяца самый продаваемый - "Chang" Вот только его и надо вывести за период 1996 года 7 месяца, за 8й месяц 96го года другой товар, и так со всей таблицей( записей там вроде до 98го)
>>871075аааа, в месяце должна была быть только одна запись. я не так понял условие. ну, доберусь до ssms, ченьть еще насочиняю
>>871100Условие - вывести самый продаваемый товар в каждом месяце каждого года. У меня оно по сути выполнено, только запрос выдает мне таблицу с тремя столбцами - Год, месяц, кол-во продаж. Данные верны, т.е как в 96ом году 7 месяце продали товар "Chang" 105 штук, так он и выводит - 1996 года 7 месяца 105 продано. А чего продано - не выводит. Ввожу "Name" в SELECT основного запроса - выдает ошибку.
>>871108там же http://pastebin.com/mBmPRbbD НО я хуй знает, почему запрос выдаёт несколько максимум 2 записей на один год/месяц. но уже поздно, завтра под кофе, может быть, придумаю получше)
>>871161Ох, спасибо больше, правда! Работает конечно странно, да, иногда дублирует продукты, иногда просто выводит по несколько самых продаваемых за 1(!) месяц.
В постгресе создал unique constraint на колонку.Он работает как индекс? То есть он будет использоваться при быстрого order by по этой колонке? Или только проверяет уникальность?
>>871161Мне тут вот такое дали, только почему то здесь столбцы дублируются with cte as(SELECT SUM(Quantity) AS Quantity, YEAR(OrderDate) AS [YEAR], MONTH(OrderDate) AS [MONTH], Products.ProductName AS NAME FROM ProductsJOIN [ORDER Details] ON Products.ProductID = [ORDER Details].ProductIDJOIN Orders ON [ORDER Details].OrderID = Orders.OrderID GROUP BY YEAR(OrderDate), MONTH(OrderDate), Products.ProductName)select * from cte join(SELECT MAX(Quantity) AS Quantity, [YEAR], [MONTH] FROM cteGROUP BY [YEAR], [MONTH])x on cte.quantity=x.quantity and cte.year=x.year and cte.month=x.month
>>871362ну так выбор идет с двух источников. самый простой выход - заменить select на select cte.
>>871378Вариант 1 (немного переработанный ответ @msi):with cte as(SELECT SUM(Quantity) AS Quantity, YEAR(OrderDate) AS [YEAR], MONTH(OrderDate) AS [MONTH], Products.ProductName AS NAME FROM ProductsJOIN [ORDER Details] ON Products.ProductID = [ORDER Details].ProductIDJOIN Orders ON [ORDER Details].OrderID = Orders.OrderID GROUP BY YEAR(OrderDate), MONTH(OrderDate), Products.ProductName)SELECT * FROM cte WHERE Quantity=( SELECT TOP 1 Quantity FROM cte c WHERE c.YEAR=cte.YEAR AND c.MONTH=cte.MONTH ORDER BY Quantity desc)Выдаст несколько записей, если какие-то товары продавались одинаково.Вариант 2 - с использованием ранжирования:;WITH cte AS (SELECT ROW_NUMBER() OVER (PARTITION BY YEAR(orderdate), MONTH(orderdate) ORDER BY SUM(quantity) desc ) ord, SUM(Quantity) AS Quantity, YEAR(OrderDate) AS [YEAR], MONTH(OrderDate) AS [MONTH], Products.ProductName AS NAME FROM ProductsJOIN [ORDER Details] ON Products.ProductID = [ORDER Details].ProductIDJOIN Orders ON [ORDER Details].OrderID = Orders.OrderIDGROUP BY YEAR(OrderDate), MONTH(OrderDate), Products.ProductName)SELECT quantity, year, MONTH, NAME FROM cte WHERE ord=1 ORDER BY year, monthВсегда выдаст одну запись за месяц.Вот, кинули два варианта, так что уже не надо. Спасибо за то что помогал.
>>871379Сразу добавлю, что второй вариант сейчас считается труъ, ибо работает гораздо быстрее.К cte, все-таки, стоит прибегать только в самых крайних случаях, когда без них совсем никуда, ибо, а самом деле, тот же вложенный запрос получается. Постгерс, конечно, материализует такие вот запросы, чтобы потом обращаться уже к кешу, но, если ваша субд поддерживает оконные функции, то грех ими не пользоваться. Так что я за 2.
ПОдскажите норм бесплатный или продающийся на торрентах GUI для postgreSQL. pgAdmin3 ващпе расстроил после MSSQL MS. Пробовал Valentina studio, вроде ничё, автокомплит, подсветка, но чё то не открывает sql-файлы и drag'ndrop не работает на sql файлах (только копирование ASCII содержимого). Пробовал heidi SQL. Чуть хуже valentina, ибо нет автокомплита, но лучше слона.
>>872366Data Grip от idea.но он тоже специфичный.консоль например не завезли(psql) как тригеры на таблице посмотреть хуй знает.
>>872366Думаю, нужно просто привыкнуть к пгадмину, на самом деле, он удобный. Подсказок, правда, нету, но, мне кажется, это только мотивирует хорошо разбираться в структуре даннных.
Анончики, вырисовывается перспектива устройства на должность стажера-разработчика oracle siebel (будут обучать). Поясните за нее. Мне сказали, что помимо проектирования интерфейса, всяких там джоинов, запросов, там нужно будет кодить на js, а я в нем вообще не шарю. Сильно ли это скажется? Сложно ли тогда будет учиться?
О, такой тред. Как раз хотел спросить.Вот есть у меня джве mysql таблицы. В одной колонка с именами и в другой колонка с именами, плюс ещё одна колонка в первой и дохрена других колонок во второй. И нужно привести вторую таблицу в соответствии с первой: выкинуть те имена, которых нет в первой, добавить из первой тех, кого нет во второй, ну и проверить, чтобы второй столбец из первой таблицы соответствовал второму столбцу из второй. Это всё можно сделать несколькими запросами, я в курсе. Но, может, по фен-шую всё более грамотно решается одним запросом?Для примера, первая таблица: Имя-Должность, а вторая Имя-Должность-Зарплата-НДС-Ипотека-Кредит-Кладбище. Допустим, в первой мы добавили Иванова, удалили Петрова, а Сидорова повысили с гендиректора до дворника. Нажимаем кнопку "обновить вторую таблицу" и инфа в ней становится актуальна инфе в первой.
>>873952Выучить убогий язычок гуру SQLа не должно составить труда.
>>874012в MS SQL есть MERGE для таких целей, надейся, что некоторое дерьмо есть в My~
>>874012У тебя тут проблема не в том, что это одним запросом проблематично сделать, а в том, что схема неправильно спроектирована. Если уж тебе и нужна зачем-то вообще первая таблица, то на второй таблице две первых колонки должны быть с FOREIGN KEY на колонки в первой.
>>874012Сделай функции, которые приводят в соответствие же. И вызывай их по нажатию на кнопку.1. Те записи, которые уже есть, апдейтим, если были изменения2. Те записи, что пропали в первой, удаляем3. Новые записи добавляем.Что тут трудного-то?Если мускл умеет в триггеры, то повесь триггер на первую таблицу, который будет все это делать за тебя.
>>863895Нахуя хранить товары в реляционной базе? Храни в монге.
Есть таблица CREATE TABLE Posts ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, Pathlvl1 INT DEFAULT 0, Pathlvl2 INT DEFAULT 0, Pathlvl3 INT DEFAULT 0, Pathlvl4 INT DEFAULT 0)ENGINE = INNODB ;MysqlНадо чтобы быстро выполнялись запросы"SELECT Pathlvl1,Pathlvl2,Pathlvl3,Pathlvl4 FROM Posts WHERE id = ? SELECT COUNT() from Posts WHERE Pathlvl1 = ?SELECT COUNT() from Posts WHERE Pathlvl1 = ? and Pathlvl2 = ? Какие индексы посоветуете сделать?
>>875279>>874989>>874078В общем, сделал как предполагал, в несколько приёмов. Удалить лишнее, добавить недостающее, обновить, что осталось.
>>875449https://en.wikipedia.org/wiki/Nested_set_model
>>862801 (OP)О, круто, это я удачно зашёл. Так вот, есть следующая задачка (субд PostGreSQL + расширение PostGis): таблица с координатами полигонов. Нужно для вновь добавляемого в таблицу полигона проверить, пересекается ли он хотя бы с одним из тех, что уже в таблице есть? Как это сделать?
>>875554А, ладно, отбой. Сам сделал. Вас хуй дождёшься.
>>875554Бля ты бы хоть описал как там у тебя полигоны задаются. Таблица полигонов, таблица координат узлов, таблица связей? Или как? Вообще, перебираешь все отрезки существующих и добавляемых полигонов, подставляешь в формулу пересечения отрезков координаты отрезков, получаешь результат, либо пересекаются либо нет.
>>875569сам должен был догадаться, совсем охуел
>>872366EMS PostgreSQL Manager
1) Реально ли восстановить базу по ctl-файлам без создания структуры таблиц с прописыванием длины и типов полей? 2) Есть ли какой-нибудь охуительный инструмент для "реставрации" бд из разных кусков говна уровня: зашел в мастер - указал пак файлов - ждешь готовый велосипед с квадратными колесами?3) Как быстро генерить таблицы с одинаковым типом полей и длиной?4) Как более-менее распарсить данные уровня: 345345САШАNULL?Суть в следующем. Есть много файлов нижеописанной структуры с данными на сотни тысяч строк. Поднял MySql server, прикрутил phpmyadmin и workbench.Есть одна проблема: дохуя таблиц и дохуя столбцов, типы полей которых не прописаны. Если бы была одна таблица, я бы даже не заморачивался: распарсил csv и в полуручном режиме загнал. Но там блять целая база. Я нихуя раньше с таким не сталкивался, поэтому прошу твоего совета, анон, как побыстрее загнать все это дело в мою базу.`LOAD DATAINFILE *INTO TABLE load_delimited_dataFIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'( data1,data2)BEGINDATA11111,AAAAAAAAAA22222,"A,B,C,D,"`
\u003e\u003e882989
Сап анон.Нужны TeraData девелоперы.И тестеры со знаием DWH/SQL.
>>887525Я бы поработал у вас по удаленке.Но днем я на основной работе.Mssql девелопер на olap пректе
есть такая говнотаблицаsomething [ id, ..., date ]надо удалить все записи кроме последних 5 по дате.вот эта вещь похожа на правду?DELETE FROM something WHERE id NOT IN (SELECT id FROM something ORDER BY date LIMIT 5)
>>893078DELETE FROM something WHERE id NOT IN (SELECT id FROM something ORDER BY date DESC LIMIT 5)самофикс
>>893078дам тебе подсказку: перед тем, как дропать записи на продакшене, добавь в таблицу колонну is_deleted, апдейтом поставь 1 записям, которые надо стереть и после того, как проверишь, что удалятся именно нужные записи, дропаешь те, у которых is_deleted = 1.
>>893108На будущее запомню.До продакшена еще не дорос, но все же спасибо.
>>862801 (OP)Немного работы кодогенератора ИТТ
>>862801 (OP)Посоветуйте легкий удобынй эдитор, чтобы наглядно и быстро поселектить чегонибудь. Оракловский громоздкий, датагрип для моих целей тем более излишество.
>>893618dbconnector
>>893618или linqpad
Анон, вот есть у меня файл .sql, где у меня написана муть "createdb govno, create table hui..."Как мне исполнить этот файло, например, в sqlite3?
Сап, помогите с постресом!1.Мне нужно вывести название производителя, который чаще всего встречается в данной таблице.2. Есть таблица товаров видаНаименование|тип товара|склад|стоимостьНужно вывести все склады, в которых не встречается заданный тип товаров. Хэлп плез!
Здравствуйте, любители баз данных.Расскажите, кем вы работаете, сколько зарабатываете и все такое прочее. Интересует ДС, конечно. Можно ли сделать разработку БД своей специальностью и при этом жить красиво?
>>895253иди нахуй>>895267серьезные фирмы не экономят на ДБА, но бОльшая часть работодателей пытается впихнуть обязанности администрирования бд на сеньоров (а иногда даже на рядовых макакей)зорплаты можно поинвестигейтить. например, в бывшей шараге запросы на оплат у дба высокого уровня явно превышали аналогичный у девов (дотнет, джява, не говоря про фтонтовиков и ебалу типа пхп). но реальных предложений не видел, конеш
>>895278А на что может рассчитывать мальчик, чуть больше года пишущий запросики в оракл и всякие хранимые хуевины на PL/SQL.Я свою жопку уже пристроил в новое место, но вот думаю, не дешево ли пристроил.Ну тут еще работа показалась очень интересной в плане опыта и развития скиллов, на текущей я с какого-то момента перестал в интересном для себя направлении развиваться.
>>895308я тоже, имея пару-тройку лет опыта, постоянно спрашиваю себя, не дешево ли я себя пристроил? и, думаю, это нормально в ситуации, когда з/п является тайной пострашнее, чем документы про инопланетян
>>895370>з/п является тайной пострашнее, чем документы про инопланетянВ смысле? Ты в какой-то секретной конторе или что?
>>895373ну тип об этом не принято говорить как бы. и не каждый тебе ответит, какой у него размер зопэ. тем более тебе никто не ответит, какой средний размер по твоей позиции в шараге/отрасли. максимум, расскажут, что !N валютанейм - это для тебя много! или "нам это подходит"
>>895378потому что каждый работодатель вкручивает паяльники сотруднику который об этом говорит, и заставляет подписывать всякие НДА.по очевидным причинам которые обсасываеться в "мы вам перезвоним" - тредах
>>893472как вы этом говне разбираетесь потом?никак
>>895430По закону ЗП под nda не попадает никаким боком. Как и условия работы.Под nda может попадать только то, что составляет коммерческую тайну - особенности техпроцесса например, код внутренних инструментов, планы развития.Также могут выкинуть на мороз за разглашение чужой ЗП, но только в том случае, если ты узнал ее по своим должностным обязанностям, т.е. ты бухгалтер и имеешь доступ к отчету по ЗП.В любом другом случае на требования не разглашать ЗП можно смело класть - если ты узнал чужую ЗП не пользуясь доступом к внутренней документации и базам данных, можно смело разглашать.А свою ЗП имеешь право хоть на каждом углу озвучивать.
Какие привилегии по дефолту даются пользователю в MS SQL, созданному через create user from login loginname, если он не занесет ни в одну роль?
>>896664вродь только publicно было бы правильней попробовать, не
Что такое делегирование и олицетворение простым языком? Ms SQL server Миможабапрогер
А где вы хуярите код на sql? какая IDE?
>>896891oracle sql developer
>>896958Привет!Тут все какие-то неправильные SQLи обсуждают, рад, что встретил тебя.Расскажи, кем ты работаешь, как давно ты в этом, как вообще жизнь сложилась? Насколько оцениваешь свои навыки, видишь ли перспективы для роста?
>>895633А если я знаю, где в базе хранится размер начисленной зп и посмотрел селектом, сколько зарабатывает мое начальство, а после пригорел и рассказал друзьям, это считается нарушением законодательства?
зашел в тред за вопросом, но подумал что он слишком прост и сам загуглил, в итоге поделюсь с вами энивей.В общем вот такая тема есть:Можно прям в селекте например делать умножение.Например у меня сейчас в системе появилася коэффициент плавающий, и вместо того что бы дрочить и значения в моей таблице перемножать на этот коэфициент, я могу 10 из 10 сделать вот так:where max_huita * coeff >= value
>>897033Улыбнулся, держи в курсе.
>>897033> пик>>896969везет, у нас позаботились об таких вещах и зашифровали подобные значения какой-то хуитой, доступ к которым имеют особо привелигированные члены с собственной DLLкой в карманено зато открытыми остались размеры желаемой зорплаты для кандидатов. так вот я там охуел увидеть, что многие DBA на сеньорские позиции просили не менее 4-4.5К (404 если что). с другой стороны, а разве это много, если ты действительно Senior DBA, а не mysql онли?
Чому у вас даже шапки нет? Где все действо происходит в visual management studio или можно хоть в консоли, разницы нет?
>>896967Я не дба. Просто неиспользование планов выполнения, оконных функций, когда надо, и просто неоптимальные (в понятии можно сделать лучше) запросы оборачиваются их переписыванием на ревью. У нас дба смотрят все pr и без их апрува ничего не мержится, где есть взаимодействие с бд. Поэтому и приходится.
Хлопцы, а поясните за оконные и аналитические функции. Это добро хуёво гуглится,а там гед гуглится нихуя не понятно.
>>897337оконные функции позволяют тебе использовать один экспрешн в нескольких местах запроса, дабы обойти дублирование кодада и вообще, это просто красивоаналитические функции удобны и прекрасны при построении сложной или не очень статистики. где, например, нужно учитывать предыдущие или последующие результаты, транспонировать матрицу. их (функций) немало знаю про mssql, мош у тебя конкретный вопрос по этому поводу?
>>897408опсъ, я оконные функции спутал с CTE. окно позволяет сранжировать/сгруппировать некоторые данные в пределах вычисления одного столбца. где, например, нужно сгруппировать и отсортировать часть промежуточного результата и посчитать количество его-то. в общем случае тебе бы пришлось создавать подзапрос. в частном случае у тебя бы ничего не получилосьоконные функции считаются после выполнения основной части запроса, но до пагинации с сортировкой
>>897231А можно быть чистым разработчиком баз данных и не писать на других языках?
>>897416можно
>>897457А что по зарплате и востребованности?
>>897463востребованность меньше, офк, чем всяких других девелоперов ибо потому, что не каждая фирма выделяет средства/ресурсы на DBA отдел, а частенько спихивают в обязанности бэкэндщиков администрирование баз данныхпо зарплате не знаю, но она есть
>>897465Тогда мне стоит параллельно что-то еще осваивать, чтобы в будущем не обосраться? Часто вижу вакансии Разработчик Java+Oracle, Delphi+Oracle.
>>897468ну смотря, какую цель ты преследуешь. если устроиться, лишь бы взяли, то да.но в любом случае, стОит что-то осваивать параллельно и не загнивать на одной технологии, какова бы она не была
>>897487Устроиться на большие деньги. 200к через 3-4 года опыта. Хочу.Чем заниматься меня вообще не сильно парит, просто базы данных это то, что мне первым пришлось освоить, и они мне интересны.
Как сохранить результат выборки в качестве новой таблицы MySQL Workbench
>>897503результатом выборки является таблица>>897492тада учи все и будешь супер-крутым
>>897503Попробуйcreate table zaloopa asselect ...
>>897505А гугл говорит, что у вас надо делать так...CREATE TABLE bar (UNIQUE (n)) SELECT n FROM foo;Простите, я больше не буду давать ответы по чужим базам данных.
>>897504Я имею в виду, как сохранить этот результат в схему. Чтобы она там была сохранена в качестве таблицы и я мог производить с ней дальнейшие манипуляции
Хочу вкатиться в базы, умею только в Аксесе делать простенькие базы. С чего начать углубляться?
В какой книжке красиво написано про принципы построения реляционных баз данных? Ну там нормальность всякая и прочие заковыристые термины. Работаю с ораклом, если что, нужно подтянуть теорию.
>>897558Том Кайт, «Oracle для профессионалов».
>>897649>Том Кайт, «Oracle для профессионалов»Нихуя себе, я уже профессионал.Спасибо тебе большое, почитаю!
Здравствуйте.Я не хочу, чтобы этот тред тонул.Если не будете обсуждать базы данных, скачу этот тред к обсуждению своей личности.
>>898027> алоэ, там зэкач, не постят по базочки> постите про базочки сами> я???
>>898027И сразу главное: хуи сосешь?
Поставил я PostgreSQL, а там вообще нет pg_timezone_names, как его добавить?
>>897409Вот про последнюю часть подробнее. Когда какой кусок SQL-запроса выполняется? Может быть GROUP BY ORDER BY PARTITION BY и ORDER BY в одном запросе? И есть какой-нибудь адекватный источник, описывающий механику запроса?
>>862801 (OP)Может кто с аксесом помочь? Проблемка возникла.Есть одна база данных ресторана. В одной таблице(заказы) есть поля блюдо, клиент, сотрудник, сумма заказа. Блюдо сделано подстановкой из таблицы "меню". Возможно ли вообще сделать так, чтобы один клиент выбирал несколько блюд, и потом сосчитать стоимость всего заказа с одного клиента?
>>898229Если чё могу скрины таблиц запилить
>>898229>один клиент выбирал несколько блюдЕщё одна таблица, связь "один ко многим", т.е. в первой колонке "id", во второй "id клиента", в третьей "id выбранного им".Запросы с группировками - в справочное руководство по Аксессу либо к книге "Изучаем SQL", там с примерами.
>>898215> Когда какой кусок SQL-запроса выполняетсягде-то была картинка с наглядной иллюстрацией очередности стейтментов, но проёп куда-то. в обчем сначала все, что до SELECT ... . потом в рамках SELECT все оконные функции (с учетом тех результатов, которые уже скомпонованы), далее ORDER BY, далее SKIP OFFSET / LIMIT или чо там еще есть в СУБДах> GROUP BY ORDER BY PARTITION BY и ORDER BY в одном запросеможет, причем вся прелесть оконных функций в том, что агрегатные функции можно использовать без группировки по соответствующим колонкам> адекватный источникну если MSDN тебе не подходит, то вот почитайhttps://professorweb.ru/my/sql-server/2012/level1/https://professorweb.ru/my/sql-server/window-functions/level1/или этот циклhttps://habrahabr.ru/post/255361/https://habrahabr.ru/post/255523/https://habrahabr.ru/post/255825/
Что такое SQL*Plus и зачем это нужно?
>>898456На самом деле я бы мог делать EXPLAIN примеров, но это не объясняет как писать подобные запросы, лал> ну если MSDN тебе не подходит, то вот почитайВторая ссылка то, что нужно. Получается будто оконные функции это супер продвинуто раз мало написано. Странно ведь. > или этот циклНаверное, не так выразился, но проблема с пониманием именно работы оконных функций. Конкретнее, чем отличается обычный GROUP BY field заменённый на OVER (PARTITION BY field)? Как устроен оптимизатор? Как влияет на эффективность ORDER BY в запросе, в окне? Вот подбоное. Как выполняется проекция и фильтрация знаю.> SELECT все оконные функции (с учетом тех результатов, которые уже скомпонованы), далее ORDER BY, далее SKIP OFFSET / LIMIT или чо там еще есть в СУБДахНу вот есть два ORdER BY. Движок БД выполнит обе сортировки по очереди или одну по состваному ключу? Какому ключу приоритет? Какой сортировке приоритет?
>>899888> или этот циклпо-моему во второй статье упор на аггрегатные функции, в т.ч. их работа в рамках оконных выражений> есть два ORdER BYну-ну, обзавелся бы примером ужеесли ты имеешь ввиду два - один в общем выражении, второй в оконной функции, то, конечно, они будут выполнены оба независимоесли это ORDER BY <field_1>, <field_2>, то, в зависимости от наличия индексов на этих полях. если есть составной и поля указаны в том порядке, что указаны в индексе, то эффективность такой сортировки будет максимальной
Что за дела, макакены?
>>900585так BINARY(N) же. или TEXT (или все остальное)
>>900679Моё увожение.
>>899938> по-моему во второй статье упор на аггрегатные функции, в т.ч. их работа в рамках оконных выраженийНет. Агрегатные функции рассматриваются в третьей части. Содержимое этой части уже знаю. Поэтому хотелось бы вот такую табличку как на пикрил. Проблема в том, что нет чёткого понимая работы оконных функций. Вот например открыл для себя ROWS и RANGE, которые как раз объясняют понятие оконности!> ну-ну, обзавелся бы примером ужеПример ужасно банален. Пусть у нас есть табличку users, в которую сохраняется вся информация об активности пользователя на сайте на заданную дату.[code]CREATE TABLE logs ( id INTEGER PRIMARY KEY, user INTEGER, date DATE, url STRING);[/code]Не думает сейчас о производительности или вроде того. Хочу сосчитать сколько пользователей из тех, что зашли первого декабря, заходило в каждый последующий день до тридцать первого декабя(возврат пользователей). Кажется, что такая задача решится следующим запросом[code]SELECT u.date, COUNT(DISTINCT u.user) OVER (PARTITION BY u.date)FROM users uJOIN ( SELECT DISTINCT user FROM users WHERE date = '2016-12-01' ) tbl ON u.user = tbl.userWHERE u.date BETWEEN '2016-12-01' AND '2016-12-31'ORDER BY u.date;[/code]Обо что спотыкаюсь я.1. `u.date` должен быть как в проекции так и в определении окна. Почему?2. Вот здесь можно перенести ORDER BY в окно?3. Что в это контексте может считаьт COUNTНебольшой оффтоп: здесь есть язык какой-нибудь разметки? Что-то вроде Markdown?
Ребзя поясните за базы данных. Вот есть Mysql, Postgresql,Sqlite. Наверное, есть ещё что-то? Почему все суют мне в морду сраный MySQL?
>>900973Развести бы срач здесь всея двачей с резолючей мол использовать только sqlite или вотэва.
>>900971> `u.date` должен быть как в проекции так и в определении окна. Почему?кто тебе сказал? я не знаю, например> Вот здесь можно перенести ORDER BY в окно?можно, но результат не изменится> Что в это контексте может считаьт COUNTтак как ты возвращаешь только [date] и count(), то на каждую _идентичную_ строку [date] у тебя будет посчитано количество уникальных пользователей. грубо говоря, если только select date from... вернул бы тебе:2016-12-012016-12-012016-12-022016-12-022016-12-03,то, добавляя count over, ты получаешь, к примеру:2016-12-01 52016-12-01 52016-12-02 102016-12-02 102016-12-03 4> здесь есть язык какой-нибудь разметкикаким-то сторонним скриптом вроде как нормально все форматируется. в с++ тред загляни, там шапка у них в табличках и отступах. как так делать, я хз> Кажется, что такая задача решится следующим запросоммне кажется очевидно, наверное, что ты эту задачу таким запросом не решишь. по фану щас посижу над запросом, может чего вымучаю
>>900993http://pastebin.com/mGkHnHqtзапрос в два подзапроса (да не обоссут меня местные дба-господа)если я все правильно понял
>>901001Можно ли в этом запросе избавить от лишних подзапросов, используя Window Function и GROUP BY?
>>901062ну я не вижу предпосылок к этому. может и естьа главное, что ты группировать собрался?
>>897033 Снова на связи.Надеюсь в этот раз на вашу помощь.У меня есть например таблица с платежами, упростим её до 4 столбцов, всё остальное шелуха.id_платежа, id_юзера, сумма, дата.Как мне заселектить с этой таблицы юзеров, который насовершали платежей НА СУММУ НЕ БОЛЬШЕ Х да еще и в период С Дата_1 по Дата_2?Самостоятельно смог пока только заселектить только платежи, которые меньше Х совершенные в период с такой-то по такой-то, но это нихера не то в итоге, что нужно.Как в общем мне выдрать только пользователей, которые в сумме насовершали платежей от 0 до 500, за этот период?Ну и потом далее по другим категориям от 501 до 1000 например.
>>901200всем спасибо, уже сам справился, то чувство когда википедия полезнее оказалась чем оверфлоу, аве википедия!https://ru.wikipedia.org/wiki/Having_(SQL)
>>901217можэ лучше пару статеек почитаешь по sql? или ты упорствуешь?
>>901229Я периодически пытаюсь, даже за sql-ex садился, просто сложности с мускулем возникают не чаще раза в месяц, и то скорее потому что нужно вывалить какие-то голые селекты, а остальное время я тупо пишу трешак вида$this->db->select('*');$this->db->from('mnogo_hueti');$this->db->where('type !=', $huita);$this->db->where('id <', $id);В общем что я пытался донести: на работе много дрочева на рутину, которая не способствует обучению особо, далее если я и сажу учить, то через 2 недели уже забываю считай. Ну и как-то так, спасибо за совет энивей.
>>901238берешь перед сном или в пути читаешь без задней мысли. даже если не поймешь, то в нужный момент вспомнишь, что что-то эдакое да прочитал когда-то
Здравствуйте. Кем престижнее быть, DBD или DBA? Ну и по деньгам и перспективам, конечно.
>>901320
>>901217Поддвачну. Википедия оказывается лучше в данном случае из-за концентрации информации, а в статейках и книжка аворы растекаются мыслью, что теряешь концентрацию. Вот рили. Не видел ни одной книжки по кавайному SQL да и не по кавайному тоже
Поясните за ОРМ, hibernate выглядит удобным, мне вот проект выдали с ним, ща блин разбираться что за зверь. Раньше просто DAO использовал.
>>901708срань, позволяющая работать с базочкой и таблицами как с ООП-объектами, не подмешивая языковые запросы в код, а в некоторых экзотических случаях вообще не завися от конкретной СУБД или ее особенностей
>>901320DBDA
Не могу найти нигде в продаже Томаса Кайта для профессионалов, поэтому обращаюсь к вам. Может завалялся у кого-нибудь в ДС и продадите мне либо подарите? Очень хочу бумажную версию.Или же посоветуйте хороший аналог, который реально купить.
Что за дела? Накатил такую же базу данных и у меня получается только такой ответ. Откуда еще два 2 значения?
>>902172Нужно было DISCINT дописать.
>>902172
Oracle PL/SQLКаковы преимущества использования %type по сравнению с обычным объявлением переменной? Если я знаю, что в переменной будет храниться только значение из одной таблицы, я всегда должен задавать тайп? А технически для базы это чем-то отличается или смысл в том, что для объявления копируется тип данных их таблицы?Если у меня есть табличный тип, я могу каким-то образом сделать select * into из всей таблицы? Или же только циклом заполнять каждое отдельное значение?
>>902375Если изменится тип у колонки, не нужно будет переписывать объявление же.Чтобы сделать >select * into из всей таблицыобъяви переменную tablename%rowtype.
>>902512И не подумал, действительно очень удобно!Роутайп я знаю. У меня вопрос был как в табличную переменную, состоящую из роутайпов, записать одним запросом всю таблицу. Ну вот у меня есть type t_type is table of t_table%rowtype, я создаю такую переменную. Как в нее добавить сразу все строки из таблицы? Или никак кроме loop по всем строкам нельзя? Наверно, нельзя(
Здравствуйте. Мне нужно научиться оптимизировать запросы в СУБД Oracle. Знать всевозможные join'ы, уметь читать план запроса. С чего начать?
А правда, что все резервные слова в sql должны писаться капсом? Непривычно пиздец, я год маленькими писал...Сделал автореплейс маленьких на большие в PL/sql девелопере, буду потихоньку привыкать.
>>902660неправда
>>902660>>902672вот писать все с квадратными скобками - это непривычно пиздец. а капс такое, дело вкуса
Какой язык программирования учить, когда освоил базы данных? Я сначала хотел делфи, а кореш-программист-фрилансер-300к/сек сказал, что это говно язык.
>>902753C++
>>902758Почему его, а не джаву, например?
>>902763ну учи джаву хотя это говно
Такая тема. Подключаюсь к БД на постгре, и не могу ничего записать в базу. Испльзую Entity, и когда вызываю SaveChanges();, оно срет эксепшн: ---System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()</StackTrace><ExceptionString>Npgsql.NpgsqlException:нулевое значение в колонке "PK_Kol" нарушает ограничение NOT NULLSeverity: ОШИБКАCode: 23502---Хотя очевидно, что там не НУЛЛ. Короче, как все это дело соединить, Студию, Entity и PostgreSQL? Я в этом не очень, просто лабу делаю.
>>902770Точнее энтити, или кто там, похоже не передает первичный ключ, хз почему.
>>902777сейчас бы установить спиритический сеанс и понять что не так
Здравствуйте, выше в треде прочитал про EAVРешил в следующем проекте попробовать его реализовать для тренировки/понимания. И вот до чего я пока дошел, значит есть одна таблица в которой только 1 столбец: idи он типа уник. И собственно всё.Во второй таблице свалка гигантская, и если скажем элемент с id = 1 - это как бы юзер, то там лежат такие вот элементы:id---element_id----name--------value1--------1--------username-----петя2--------1--------password-----хуетя3--------1--------balance-------1234--------1--------avatar--------petya.pngСобственно как разруливаются подводные камни с разными типами данных? Под каждый тип использующийся в твоей системе хуячить отдельную таблицу, в которой будет value числовое например, текстовое, дробное и так далее и потом все эти таблицы джойнить? И как превентить ошибки уровня: у меня в базе оказалось что у юзера с id 1 два элемента name с разными валуе лежат, вот что делать в таких ситуациях?
>>902821Создал проект, через нугет подключилEntityFrameworkNpgsql Npgsql.EntityFrameworkПоставил dotConnect Express for PostgreSQL, подключился к базе. App.config взял отсюда http://rob.conery.io/2014/02/05/using-entity-framework-6-with-postgresql как и все выше, пофиксил connectionStrings. Ну и дальше код такой же, как по ссылке, вписал свою табличку и поля. И вот когда идет var pet = new Pet { ID = 1, Name = "Stevie" }; db.Pets.Add(pet); db.SaveChanges();SaveChanges отсылает какую-то хуйню, там нет первичного ключа, вот такое:INSERT INTO "public"."Street"("Name") VALUES (E'Test eba') RETURNING "PK_Pet"Если вставлять через запрос напрямую, в пгАдмине, все работает.
>>902848> как разруливаются подводные камни с разными типами данныхможно да, использовать отдельные столбцы, но если мы говорим только об уровне БД, то тяжко представить, как потом использовать значения результата запроса. в ооп приложении это все достаточо круто делаетсятакже можно использовать строковую колонку, а потом кастировать в нужный тип. но тоже так себе подход> как превентить ошибки уровняуникальный составной индекс (userid, name)
>>902930у тебя конфигурация дбконтекста предусматривает подстановку значения в ID? или ты не используешь entitytypeconfiguration<>?
>>902536Можно. Гугли bulk collect into
>>902848>Посоны я прочитал про очки, надел их и теперь ничего не вижу. Что делать?Снять их. EAV это костыль для динамического количества столбцов. Ты пытаешься построить своё приложение вокруг этого костыля. Это просто глупость. В твоём случае (с пользователем) это просто не нужно.>как разруливаются подводные камни с разными типами данных?Никак. Отдельная таблица на каждый тип - это ещё один костыль для костыля.Как же тогда хранить сущности с различными и разнотиповыми полями? Использовать БД преднозначенные для этого: та же монга или solr|elasticsearch если нужен ещё и полнотекстовый поиск|фасеты.Но ваши NoSQL базки не могут в транзакции/джойны. Что делать?Использовать костыль EAV.
>>862801 (OP)> решаем простые задачки на -T-SQL на собеседованияхЯ почитал sql.ru. Сейчас на собеседованиях на t-sql надо судоку решать.
>>902958Не использую, да.
>>903281pogodee, у тебя таблица Street тут какое отношение к этому имеет?
>>903292Не не, это я обосрался с экспериментами, вот так вот для Pet: INSERT INTO "public"."Pet"("Name") VALUES (E'Test eba') RETURNING "PK_Pet"
>>862801 (OP)MDX-бомжара вкатывается и селектит говно на ось 0 и помои на ось 1 из помойки
Здравствуйте. Смогу ли я из разработки на (PL/)sql перекатиться в администрирование баз данных?И стоит ли вообще?Мне почему-то кажется, что это будет интереснее для меня. Больше ответственность, больше сфера деятельности. Я почитал Томаса Кайта и мне стало очень интересно. Хочется досконально изучить структуру бд.Что вы мне скажете на это? И как вообще в карьерном плане это будет? Кому платят больше, кого больше ценят?
Ребята, как замутить разницу в зп текущего и предыдущего сотрудника? Я так понимаю, это должно делаться через аналитческую функцию типа SUM(), только мне нужна разница.
>>903992sum какое отношение имеет к разнице?в mssql 2012 и далее есть аналитические функции lead() и lag()более общее решение в лоб - замутить выборку, сджойнить ее на саму себя со смещением в 1 строку и считать разницу столбцов которые is not nullскорее всего можно применить оконные функции, но пока непонятно, исходя из задания, как
Подскажите, где я обосрался.
Опять обосрался, вот верная.
>>904444where color = 'y', по ходу, надо вынести во внешний запрос. хотя я хз, што там у тебя по заданию
>>904466По заданию нужно вывести производителя самого дешевого цветного принтера. Если вынести во внешний, не выводится вообще ничего.
>>904481а зачем тебе подзапрос, если ты делаешь джоин на таблицу принтеров?
>>904481Тебе нужно where не по price а по model.Что-то типаWhere model in (select model from printer order by price asc limit 1)Ну или с подзапросом.
На каких задачах Монго будет быстрее Постгре?
>>905132чатики какие-нибудь
Опять застрял, хз что можно применить. Алсо, где можно еще теорию с задачами позубрить, sql-ex'а явно недостаточно.
>>905422у тебя тут много подзапросов и они не очень полезные, мягко говоря. тебе нужно, по всей видимости, заюзать функцию ранжированиякак ты проходишь эти тесты? у меня что ни ответ, то сходится на тестовой БД, но валится на проверочной. причем я даже в малейшем отношении хз, что именно не так с запросом
>>905467>причем я даже в малейшем отношении хз, что именно не так с запросомЯ обычно начинаю в пейнте рисовать результат каждой строчки. Конечно лучше в уме такое делать, но пока не получается.
>>905782ну а как это мне поможет? я стянул дамп основной базы данных и добавил, по мере своей догадки и фантазии еще данных. это похоже на попытку угадать, чем был обдолбан автор.еще в факе там написано что спустя некоторое (какое-то) время появляется подсказка к заданию. вкладка была открыта около часов двух, активность я на ней проявлял порядка 20-30 минут в сумме. сколько ж дожидаться нужно лол?)
https://dbhub.ioЧе думаете?
Смотрите какая хуйня. Пикрелейтед 4 таблицы из которых я хочу получить данные в результате запроса. Запрос нихуя не работает, хотя и ошибок не выдает. А еще раньше он работал, а вчера внезапно перестал. ЧЯДНТ?Запрос: http://pastebin.com/p0TQu1Mf
>>906494Насколько я понял, все херится, когда я джойню lifetime. Но почему?
>>906503У тебя в первой таблице айдишники не пересекаются с последней.
>>905880>сколько ж дожидаться нужно лолХз где ты это прочитал, гл подсказка появляется, когда ты близок к правильному ответу.
>>907864в разделе faq нописано
>>862801 (OP)Доброго всем дня. Посоветуйте какую-либо литературу по БД и Microsoft SQL, начиная с нуля. Желательно на русском, но если есть более годные аналоги на английском, посоветуйте их. Спасибо
Добрый день.Подскажите пожалуйста, в какую сторону смотреть чтобы решить такую проблему. Смотрим картинку и видим Первый и Третий столбец.Они не связаны друг с другом. Т.е видно что выбран 201601 в первом, но при этом в третьем столбце вылезли дни 201602.Как установить соответствие между полями?чтобы 201601 -> выбирал все дни января.
>>908313устанавливать соответствие между месяцами первого и третьего столбцов
>>900973Всем кто советует mysql бей в щщи с вертушки. Мускуль это сетевой табличный движок для порносайтов. Серьезные базы это ORACLE, MS-SQL, PostgreSQL. Я бы учил постгрес потому что оракл отовсюду выкидывают (дораха!) а мс используется гораздо реже.
вечер в хату пацаны и пацанки (если есть такие здесь).есть вариант вкатиться в IT с нуля.от меня требуется изучить ORACLE JavaScript Extension Toolkit (JET). ВОПРОС: эта хуита будет востребована в будущем? или ну его нахуй?вопрос задал здесь, а не в JS треде, потому что решил, что Вам всем это ближе. там они наверное больше по сайтам угарают. а эта шляпа про энтерпрайз (я так понимаю вот это вот всё)
PostgresSQL как лучше начать учить? Документация слишком огромная, есть ли в более сжатом виде все?
>>908592Что значит учить postgres?
>>908643шоб писать такие бд, чтобы шишка дымилась просто
Подскажите, как можно получить такой результат?
>>909449UNION + GROUP BY, если мне память не изменяет. Полгода, как завязал с базами.
>>909490Если я так сделаю, то просто вставятся Бисмарк и Теннесси в первую таблицу, причем Теннесси будет две строчки с значениями 2, 1. А нужно, чтобы значение Num_ships именно сложилось.
>>909493Ты просто жопой читаешь и нихуя не понимаешь, что делаешь.select `class`, sum(Num_ships) from (select from t1 union select from t2) t group by `class`;
>>909494Пик отвалился.
>>909495>>909494Бля, я ещё union all забыл. Ну разберешься, короче.
>>909496Понял, спасибо.
>>862801 (OP)Посоны, нужна помощь. Есть база данных postgres. Есть простой скрипт для вставки данныхWITH t1 AS (...)INSERT INTO entryphone SELECT FROM t1--ON CONFLICT ON CONSTRAINT pk_addr_dt_cd DO UPDATE SET code = ephone;Работает без закомментированной части, а если раскомментить, то выдаёт ошибку:>ОШИБКА: столбец "ephone" не существует> Подсказка: Столбец "ephone" есть в таблице "SELECT*", но на него нельзя ссылаться из этой части запроса.Но мне нужно, чтобы вставка осуществлялась с проверкой ограничения и в случае нарушения уникальности колонка ephone обновлялась. Как пофиксить?
>>910422Блядь, забыл про разметку макабы. Поправляю.WITH t1 AS (...)INSERT INTO entryphone SELECT id, addr, ephone FROM t1--ON CONFLICT ON CONSTRAINT pk_addr_dt_cd DO UPDATE SET code = ephone;Работает без закомментированной части, а если раскомментить, то выдаёт ошибку:>ОШИБКА: столбец "ephone" не существует> Подсказка: Столбец "ephone" есть в таблице "SELECT", но на него нельзя ссылаться из этой части запроса.Но мне нужно, чтобы вставка осуществлялась с проверкой ограничения и в случае нарушения уникальности колонка ephone обновлялась. Как пофиксить?
>>862801 (OP)Такие вопросцы:Где phpMyAdmin хранит комментарии к ячейкам таблицы?Участвуют ли они в запросах?Есть ли разница в производительности запросов с ними / без?Какой движок (MyIsam, InnoDb, другой?) подойдет лучше для ситуации:2 таблицы, очень активная выборка из обеих (иногда даже ВСЁ берется), примерно 100000 записей в год в каждую (таблицы обнуляются каждый год! То есть максимум, который в них хранится = приблизительно 100000 записей).Не будут ли тормозить запросы в конце года?Я читал про статические таблицы, насколько понял, привел структуру полей в соответствие требованиям статической таблицы: поля типов char, int, decimal, date, timestamp (Если это важно для предыдущих вопросов).Нормализация 3NF (Если это важно для предыдущих вопросов).
>>913658Извиняюсь за сажу.
Заебала, эта задача. Помогите плиз. Одной из характеристик корабля является половина куба калибра его главных орудий (mw). С точностью до 2 десятичных знаков определите среднее значение mw для кораблей каждой страны, у которой есть корабли в базе данных.Не проходит на проверочный базе.
>>862801 (OP)весь срач - от незнания, почитай документацию к конкретной субд, и вопросы отпадут как и какие ключи создавать
>>914425где ты берешь эти задачи?
>>914521sql-ex
Посоветуйте что-нибудь годного по mongo db. Видосики, книги и етц.
>>914857> годногоИз годного могу посоветовать только удалить монгу нахуй.
>>914874И что ты посоветуешь поставить?))00
>>914883riak
>>914857Внезапно официальная документация. И блог разработчиков.
>>862801 (OP)Аноны, поясните положняк за джойны + что можно почитать по SQLю нубу?
>>915400>положняк за джойныwikipedia.org>что можно почитать по SQLю нубу?sql-ex.ru
>>914425
Принес вам тестовое.Общие требования: PHP (5.4 - 7.0), MySQL, Опыт работы с фреймворком Yii, JQuery.Будет плюсом: Javascript prototype, es6, npm.ТЗ1) на SQLДаны 3 таблицыusers (id, name, email)products (id, name, price)orders (id, id_user, id_product, create_at(Timestamp))Юзер (users) купил 4 товара (products) и в таблицу orders попали 4 записи. Напиать 1 sql запрос:Вывести сумму всех заказов пользователя за каждый день, если известен только email покупателя.
>>915644это только часть тестового или зачем там требования к бекенду?
Добрый день. 1. Читаю всяких Кайтов, Дейтов и мне очень интересно. Прям хотелось бы все эти базы данных изучить изнутри и понимать, как там и что. Реляционная модель, вся хуйня. 2. Заканчиваю магистратуру хорошего технического вуза, встает вопрос об аспирантуре, потому что отсрочки от армии у меня нет. Есть ли в каких-нибудь московских вузах аспирантура, специализированная на базах данных? Гуглить я, конечно, буду, но здорово, если есть что-то известное и у всех на слуху. А еще идеально, если там не очень много нужно учиться и в смогу это делать без отрыва от своей основной работы.
Взываю к светилам. Это пиздец, доебал меня этот lock timeout уже.Суть: таблица T каждые пять минут по крону php скрипт ищет строки с NULL в определенной колонке. Затем в foreach делаем UPDATE SET WHERE id=определенному idрядом другой крон агрегирует из этой таблицы посредством INSERT INTO T_AGR SELECT ... FROM T WHERE id в определенном диапазонеДиапазон второго крона включает id первого кронаСама система постоянно делает INSERT INTO T новых записейКак это всё может выдавать lock timeout, с учетом того что по раздельности все это прекрасно работает?
>>921781> Затем в foreach делаем UPDATE SET WHERE id=определенному idПиздец какой. Открой для себя batch-операции. > рядом другой крон агрегирует из этой таблицы посредством INSERT INTO T_AGR SELECT ... FROM T WHERE id в определенном диапазонеОткроей для себя view.> Диапазон второго крона включает id первого крона> Сама система постоянно делает INSERT INTO T новых записей> Как это всё может выдавать lock timeoutДействительно.
>>921787>Действительно.Раз для тебя всё очевидно, тогда распиши мне пожалуйста какие блокировки за какими тут идут, потому как я не понимаю! Update - X,insert into select - X,insert - XГде тут происходит взаимоблокировка?
Не подскажите, какой из вариантов написания запроса более правильный точки зрения фен-шуя?Всё вместе:$request_copi_from_1c = "UPDATE `$name_table` SET `Оплата больничных листов` = ( SELECT `Оплата больничных листов` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Оплата больничных листов за счет работодателя` = ( SELECT `Оплата больничных листов за счет работодателя` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Оплата по среднему заработку` = ( SELECT `Оплата по среднему заработку` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Оплата отпуска по календарным дням` = ( SELECT `Оплата отпуска по календарным дням` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Отпуск дополнительный` = ( SELECT `Отпуск дополнительный` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Пособие по уходу за ребёнком до 1.5 лет` = ( SELECT `Пособие по уходу за ребёнком до 1.5 лет` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Дни неоплачиваемые согласно табелю` = ( SELECT `Дни неоплачиваемые согласно табелю` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Месячная премия` = ( SELECT `Месячная премия` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Компенсация отпуска при увольнении по календарным дням` = ( SELECT `Компенсация отпуска при увольнении по календарным дням` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Аренда автомобиля` = ( SELECT `Аренда автомобиля` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Всего удержано` = ( SELECT `Всего удержано` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Удержание по исп. листу процентом` = ( SELECT `Удержание по исп. листу процентом` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Удержание по исп. листу процентом до предела` = ( SELECT `Удержание по исп. листу процентом до предела` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Удержание по исп. листу фикс. суммой` = ( SELECT `Удержание по исп. листу фикс. суммой` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `НДФЛ` = ( SELECT `НДФЛ` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Всего выплачено` = ( SELECT `Всего выплачено` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Перечислено в банк (аванс)` = ( SELECT `Перечислено в банк (аванс)` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Через кассу (аванс)` = ( SELECT `Через кассу (аванс)` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Перечислено в банк (под расчет)` = ( SELECT `Перечислено в банк (под расчет)` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Через кассу (под расчет)` = ( SELECT `Через кассу (под расчет)` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ), `Конечное сальдо` = ( SELECT `Конечное сальдо` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ) ";Или каждый запрос лучше сделать отдельно для каждого столбца, типа$request_copi_from_1c = "UPDATE `$name_table` SET `Компенсация отпуска при увольнении по календарным дням` = ( SELECT `Компенсация отпуска при увольнении по календарным дням` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id )";для каждого столбца.У меня сейчас работает оба варианта (в дублирующихся функциях, лол), нужно оставить один вариант, а второй прибить.
>>925441Если второй, то заверни в транзакцию. Вообще мне кажется ты делаешь что-то не то.
>>925485Этот поезд в огне, но по прежнему едет в Бобруйск!А в транзакции я не умею. В планах освоить PDO, но сильно позже. Надо сначала хотя бы расчленить общий код на отдельные функции и немного оптимизировать их.
>>862801 (OP)анонимчики, посоветуйте годных книг по sql для студента-говноеда-идиота, пожалуйста.
>>925805Семен Семеныч, SQL для студентов. Издание для говноедов-идиотов.
>>925486У тебя там куча идентичных селектов. Это полное говнище. Делай один раз такой селект, не как значение для SET, а как таблицу для FROM.
Если у меня postgre вместо h2, это значит я сел на бутылку?
Аноны, нужна помощь.Каким-то образом в MS SQL Server 14 случилось так, что не селектится одна из таблиц. Вообще не селектится. В чём может быть причина? До этого было всё отлично, структуру не трогал, лишь мержил в неё обновленные цифры, но после этого всё заебись было.
Мужики, что это за хуйня? SQLная процедура? Помогите разобраться с синтаксисом. Обычные SELECTы я нормально пишу, но эта хуйня меня ввела ступор.
>>926307Я кажется начинаю прозревать. По ходу это SASовская процедура, поэтому с SQLным синтаксисом нихуя и не сходилось. Знатоки подтвердите/опровергните плз.
>>926307из sql-поддерживаемого там только if и set
>>926312Т.е. по простому говоря это нихуя не SQL процедура? Кстати в SQL все же можно писать PROC вместо PROCEDURE все-таки.
>>926315ну и output некоторые реализации поддерживают. но смысл в том, что это да, не синтаксис sql
Аноны, есть web прожект с Postgre, нужно будет хранить кучу изображений. Стоит ли заморачиваться и складировать их в БД(не советуют так делать, но мало ли), или же всё таки лучше в файловой системе их харнить?
>>926338тебе ж нормальным языком не советуют этого делать, какие еще вопросы? тем более, что данных будет много
ЕОТЕсть одна таблица. (user_id INT, category_id INT, amt INT)Строка соответствует действию пользоватеся user_id, тип действия category_id , цисловая характеристика amt. Пользователь может совершить несколько действий - user_id могут повторяться.Мне дан список из категорий с1, с2, с3...Требуется создать сводную таблицу по всем пользователям с полями:user_id, min_c1, avg_c1, min_c2, avg_c2,.....Если бы нужно было сделать только для с1, я бы сделалSELECT user_id, min(ant), avg(amt) FROM Table WHERE category_id=c1 GROUP BY user_idДля пары категорий можно было бы сделать как выше и объединить JOINом. Но как делать, если категорий штук 20? Хуярить 20 JOINов? Может что по-лучше подскажите?
>>926527PIVOT + dynamic SQLkek
>>926527>>926528Не совсем понял, зачем там динамик скл.Двачую PIVOT, но это тока в том Случае, если субд афтора в нее умеет.А, если нет, то можно нахуярить кучуCASE WHEN category_id = 1 THEN ...В каждое поле, соответствующее требуемой категории.Предпочитаю не бзать динамик скл там? Гле можно без него обойтись, ибо дебажить это дело потом - то еще удовольствие.
>>926276>мёрджилThisВероятно, она у тебя залочеа мерджем. Выполни оцедуру sp_who2 и посмотри, какая сессия лочит сессию с селектом из таблички, все поймешь. Если ничего не лочит, думаю, пора дроп-креэйтить индексы на ней.
>>926527MIN(case category_id when 1 then amt end)
>>926688список категорий не детерминирован же. или, если автор имеет ввиду, что их 20 и он их все знает наизусть, - тогда оке. в случае хоть какой-нибудь динамики ты же не сможешь правильно написать PIVOT (... FOR ColumnName IN ([Value1], [Value2]))... я ведь прав, чи не?
>>926696Спасибо. Ничего не лочит. Походу серьезно что-то с индексами.А в чем причина может заключаться? Я уже раз 100 мержил новые цифры - проблем не было
>>926939>>926696Всё ещё веселее теперь. Пришел с утра - селект ещё идет. В общем, селектится бесконечно вообще, походу. Впервые вижу такую хуйню.
>>926943В чем угодно, мы же не знаем твою архитектуру. Статистика могла изи засраться.
>>926915Если список не детерминирован, тогда не могу представиь, какой профит от того, чтобы выводить их просто в селект горизонтально. Или такое нужно для ssrs(или аналоге), в котором, все равно, есть такой элемент, как матрица, который сам разворачивает все, что душе угодно, или эти данные будут уложены в таблицу для последующего использования, но, в таком случае, какой смысл в неопределенном количестве полей таблицы? В общем, >>926527, какая цель запроса? Что дальше с этими данными будет происходить?
>>927051список заранее определен, можно считать, что описанная мной таблица будет сформирована всего один раз.(на деле может два или три) Самый прикол, что я пару раз делал pivot в экселе и в питоне, но так до конца и не въехал как это все работает.Думаю делать через MIN(case category_id when 1 then amt end) как этот >>926697 анон посоветовал, т.к. данный способ мне гораздо понятнее.
>>927070Что ты как не посан. Изучи новое на простом примере, все поймешь и будешь знать полезную фичу, на самом деле, ничего сложного. Пайвот круче, чем куча кейсов.
>>927081SELECT user_id,1,2,3FROM Table1PIVOT(AVG(amt)FOR category_idIN (1,2,3))Че-то я даже на простом примере туплю. Вот что тут не так?
>>927085Ок, я понял что не так.
Что такое индексирование в SQL и как оно может ускорить выполнение запросов? Может кто объяснит на пальцах или даст ссыль, где годно объясняют.
>>927977индексирование не является частью языка SQL и для реляционных хранилищ справедливо ровно настолько, насколько и для всего остальногоиндекс - структура данных, ставящая перед собой задачу ускорения поиска элемента/ов.собственно, на этом все. связь между быстрым поиском и увеличением производительности запроса, я думаю, найдешь
>>862801 (OP)Делаю БД (MSSQL) и клиентский интерфейс к ней (c#). Как правильно реализовать механизм добавления новых записей в таблицы? Хотелось бы не передавать голый SQL-код в базу, а запускать для этого хранимые процедуры. В идеале - иметь в клиентском приложении какой-нибудь метод по типу ExecDMLProcedure который будет принимать на вход имя процедуры и набор параметров. Ну и запускать на сервере процедуру с этими параметрами соответственно. Так вот собственно уточняю вопрос - как сделать так чтобы не писать для каждой хранимой процедуры еще и свой метод, а сделать процесс передачи набора параметров универсальным - например передавать один параметр в виде структуры, с которой уже БД сама будет разбираться и выдергивать из нее нужные параметры для INSERT-а в хранимой процедуре.
>>928161Ты в курсе про такое чудо мысли как ORM?>хранимые процедурыЗа это вообще по ебалу бьют давно.
>>928169Нет не в курсе, только начал осваивать БД.Почему процедуры плохо?И чего конкретно смотреть под c# в этом направлении?
>>928169> SPнепонятная твое агро по поводу хранимых процедур и иже с ним. такие вещи используются тогда, когда нужно их использовать. в частности, можно упомянуть квази хай лоад (насколько он может быть хай с реляционными базочками), можно упомянуть просто статистику или некоторые высоконагружаемые сервер запросы.тем более, непонятно, кому там бьют ебало и за что. конечно, если твой опыт ограничивается проектами уровня SELECT * FROM Table, то мне нечего возвразить.>>928178Entify Framework, nHibernate - мастадонты ОРМной инженерии, творят чудеса, если возможности приложения позволяютDapper, ServiceStack - наиболее распространенные в моей практике лол легковесные штуки, не дающие особо многовообще, тысячи их. ищи @ осваивай, если есть время (но нахуя)
>>928196Какая зп, если не секрет? И лвл.
>>928178Процедуры - это круто. В том же постгресе можно писать их js (!) движок v8 показывает чудеса https://github.com/plv8/plv8
>>928169Двачую. хранимые процедуры -- это полный зашквар и клеймо в любом не легаси говне, в любом хоть минимально приличном проекте
>>928461>Процедуры - это круто. В том же постгресе можномы вам перезвоним.no hire
>>928426если ты хочешь обхуесосить мой ответ, то зачем тебе возраст/зп?
>>928579>>928580Почему процедуры зашквар?
>>928683потому, что на его _минимально приличном проекте_ его не используют, очевидно же
>>928722Да ладно. Тон его выебист, но у него есть мнение, которое, быть может, полезно знать. Вдруг это мнение приведет меня к тому, что я начну гуглить какие-то ключевые слова и найду для себя что-то новое? >>928591Думаю, ему правда интересно, потому что ты производишь впечатление подкованного. Мне тоже интересно.
>>928579Если ты не умеешь их писать, то это не значит что они плохи. Плохи люди, которые не знают TSQL или вообще базы данных мышкой программируют. Накидают селектов так, что оптимизатор запросов с его планами выполнения идет лесом и каждый раз новый план создает. И не говоря про то, что по сети от этих ваших фреймворковских "клиентских приложений" голый SQL-код летает. Зато АБСТРАКЦИЯ.
>>928781Я видел как у ебанутиков веб-проекте вызывались хранимки: форматирование адресов, валидация, некоторые расчеты, набор случайных чисел... Т.е. за всем этим оно ходило по сети в оракл. Причем это были функции не читающие данных. Как быстро оно работало - можешь представить. И не надо кукарекать мол "можно! просто так не надо делать!". Это само получается - они реализовали функционал, а потом поняли, что он им нужен еще и тут и либо дублировать (а потом поддерживать два объема кода) - либо обращение в базу на каждый чих. Половина кода там, половина кода тут, еще часть продублирована (иначе совсем вообще тормозит) и они постоянно вынуждены были поддерживать две версии. И не самые тупые программисты были кстати. Всегда это заканчивается трешем. Просто не нужно этого делать изначально и всё. Хранимки - зло.
>>928781Организационно код ("бизнес-логика"/"код"/) должны быть только в одном месте. Они не могут быть размазаны (иначе они будут и там и сям и немного здесь и тут вот два этапа одно и то же). И это место - основной код, но никак не БД.Концептуально нарушается базовый принцип "модель" - это "данные". Нарушение этого принципа даже в рамках основного кода заканчивается еще плохо, нарушение до степени что возникает "хранимка" - совсем пиздец.Если ты начнешь в процедуры, то сразу начнешь создавать результаты, которые не мапятся на твою объектную модель, это обязательно (поверь) кончится read-only сущностями, которые изменить и вернуть в базу нельзя никак в принципе (нет обратной проекции и всё). Вообще, даже руками, не говоря уже про ORM.Всё обязательно заканчивается дублированием. Если не дублировать, то начинается цирк вроде вызова хранимок для задач, которые вообще никак не связаны с данными и получается совсем уже конченый проект. У оптимизатора меньше возможностей оптимизировать их.Дальше всё равно начинается склейка SQL запроса кодом (но теперь уже в хранимках! это тебе не уродство ручной клейки запросов питоном! это лучше, это хранимочка!).---Они не переносимы. Во-первых синтаксически. Во-вторых они всегда так или иначе используют еще и всё остальное. Т.е. начинают использоваться замысловатые возможности, которых нигде больше нет. И тогда проект становится 100% непереносим никак вообще.Они неудобны в написании - (степень уёбищности языка на усмотрение вендора). Другие языки вроде языкнейм - теряют все "преимущества" (т.е. обещанные "преимущества" хранимок, т.е. которых нет) PL*/SQL и выглядят в итоге всё равно так же как "клиентский" код. В дополнение они могут иметь ряд своих проблем.Их трудно нормально версионировать и отлаживать.Они отдельный элемент деплоймента.Они отдельный элемент управления правами.
>>928803>Если ты не умеешь их писатьСлышь ты, июнь-тестировщик. У тебя в dynamic sql security definer хранимке возникла sql injection, всю твою базу распидарасило и тебя уже выкинули на мороз. Домой не приходи, я тут пока мамку твою ебу. Попиши хранимок пока.
>>928817>Они отдельный элемент деплоймента.>Они отдельный элемент управления правами.Они отдельный элемент борьбы директора по продажам против директора по развитию и прочих ссучёных сук.Об этом бы лучше подумал, а то «питон», «питон»...
>>928823Спасибо, я в отличии от тебя, мудака, проверю че мне там на вход пихают. Видимо от инъекций в свой ОРМ-овский говнокод ты уже успел пострадать.
>>928834>инъекций в свой ОРМ-овский говнокодахахахах, недожуниор спалился
>>928834>ORM>injection))а вообще хуй знает зачем тебе хранимкиУ них только один кейс - если у тебя много разных десктоп клиентов, и нет унифицирующего ебиного api-сервиса, ну так вроде не 20 век, трехзвенка везде, и любой бекенд язык выразительней любого sql расширения. К тому же не все data-orintied, а process-orintied на хранимках особо не попишешь, вот и выходит что все равно приходится писать логику на стороне api-сервиса. А мешать код на бекенде с хранимками - говноедство, так как раздуваешь систему, теряешь реюз и композабельность. Бизнес требования по своей природе декларативны, нахуя их описывать язычком с выразительностью уровня шелл-скрита? Пока пацаны пытаются сделать процедурную парашу хоть немного юзабельней, запиливая датамаперы типа LINQ, говноеды даже где не надо обязательно хотят все засрать своими процiдурками. Вот чому вы такие пидары, a?
>>928921>десктоп клиентов>подключаться напрямую к БДдевяностые-нулевые годы
>>928921>язычком с выразительностью уровня шелл-скритаты что там же можно JS пускать прям в БД и писать на ЖС, делая из него SQL запросы в базу будучи в хранимке в самой же базе, на ЖС. т.е. они пришли к тому же от чего пытались уйти.
Вы тут спорите о выразительности и идеальном архитектурном решении, но на практике все упирается в эффективность. Иногда возникает необходимость делать тонны разных запросов, обрабатывать их и в результате получать определенное значение. Такое дерьмо выгоднее делать на стороне сервера. >>928931> они пришли к тому же от чего пытались уйтиНикто от этого не пытался уйти. Если в твоем крудошепстве нет необходимости в хранимках - это не значит, что для остального мира они не нужны.
>>928988Так это и делается на стороне сервера. Только причём тут хранимки?
>>928990У тебя бд, бэкенд и всё всё всё на одном сервере?
>>928993насколько должно быть здоровое приложение, дабы разбивать кодэ и источники данных по отдельным машинам? не самое легковесное приложение все-равно вертелось рядом с скл-сервером и позволяло запустить несколько тестовых инстансов
>>929136Ну где-то уровня YellowPages.
>>929136Представь, что у тебя это все запущено на одной машине. Представь, что ты выгружаешь из бд большой объем данных, потом эти данные запихиваешь в переменные в своем проекте. Тебе на все это дерьмо нужно гораздо больше памяти, чем на сценарий, когда все это происходит в рамках субд.
я думал тут нихуя не решают чужие проблемы
Как применить тяжелый патч к базе на проекте, чтобы его пользователи во время обновления не сосали жопу, а продолжали работать? Допустим, там есть много update и altertable.Если сделать дамп и патчить его, а потом - хоба - и быстро подменить таблицы со старых на новые, то надо как-то дельту же еще применить (изменения во время патча). Через sql-логи?Вообщем, какие тут лучшие практики?
>>929316Чувак, даже какие-нибудь ВК или ОД приостанавливают работу на несколько минут ради апдейта. Все те 5 пользователей твоего стартапа переживут эти несчастные 10 минут.
>>929316Ставь будильник на 3 часа ночи.
>>929316>лучшие практикинакатывать в период наименьшей активности пользователей, очевидно>>929357хех, ну социалочки имеют сотни нод и могут делать апдейты серверов ван-бай-ван без потери производительности. опять таки не в самый пик наплыва школьников. хотя, может быть я что-то не знаю
>>928988>нет необходимости в хранимках - это не значит, что для остального мира ониэтот вот твой остальной мир это клоака в которой нормальные люди работать не хотят. с соответствующими задачами и развитием.
>>929422сиравно непонятно, как выкручиваться из ситуаций, когда скорость запроса рили нужна высокой, а не такой, какой ее делают ОРМ?
>>929425вся суть хранимко-днища. про кеширование не слышал, про nosql не слышал.
>>929452> хранимко-днищалол, я тут прям грудь рву за SP> nosql> кешированиекогда вопрос становится об ускорении лишь некоторой части DAL-вызовов, отдельный датасторадж будет выглядеть обузой, не?запрос из кеша будет сильно по времени приближен к запросу в основное хранилище если, например, строится динамическая статистика из-за своих промахов. плюс такой временный загон данных в кэш имеет шанс вытолкнуть востребованные данные (или нет)
>>929425а чем вызов хранимки сильно быстрее чем выполнение нормально написанного sql-запроса?
>>929683А скажи-ка ты мне малтщик. Когда текст твоего нормально написанного sql-запроса размножили нажатием Ctrl+C/V в десяти местах, кто за вами подтирать, будет!!!
>>929692>размножили нажатием Ctrl+C/V в десяти местахнипонялну и что за пидар это сделал и главное зачем?
>>929700Ну как... его гендиректор взял. Сказал, вот вам ещё одна макака. Ну, а мы и, не возражали. Всё равно у нас разделения по слоям не было и нет.
>>929703ну то есть чтоб избежать проблем из-за говнокода на бекенде вы решили наговнокодеть ещё и прямо в базе, нормас)
Анонята, у меня вопрос к знающим no-sql.Есть пет проектик в котором нужно хранить информацию о юзерах, в терминах реляционной бд - порядка 16 колонок. И очень часто прийдется делать выбирорки юзеров по критериям с для этих колонок(чаще всего по всем 16).Правильно ли я понимаю, что no-sql для этой балалайки не подходит? Есть компромисные решения?
Есть какие-нибудь обзорные статьи/лекции по разным субд? mongodb, postgresql, mysql и т.д. Какие для чего нужны? Какая производительность, плюсы минусы и т.д.
>>929683Для хранимки план запроса уже есть, а для обычного нет.
>>929880Так и храни в>реляционной бди не выёбывайся.
>>930120не хотеть схема рисовать.
Не знаю куда написать еще, так что напишу сюда.Помогите настроить ебучий роутер, я случайно сбросил на заводские настройки его и пиздец, пробовал делать все по инструкции билайновской, но там толком нихуя не написано, просто заполнить поля и всё.
>>930315ну так заполни поля и сьеби оццюда
>>930326сука программист блядь, да пошел ты на хуй!
>>930035долбоёб. за последнюю соломинку уже хватается чтоб оправдать свои хранимки ебучие. план это копейки вообще, ты замерить даже не сможешь
>>929507>отдельный датасторадж будет выглядеть обузой, не?не, дурачок, не
>>930373>>930374какой-то ты слишком агрессивный пидор
Посоны хелп! Есть строка с числами через запятую, как на оракле выявить простые числа среди них?
Есть хуйнюшка-добавляет, удаляет и изменяет, а так же ищет по БД.БД-Fox ProМне сказали что я ебаный некрофил и переделыватьЧе делать?
Аноны, посоветуйте мануалов по Oracle Datebase 11g express
Sup! Тыкаю палочкой в постгрес, хочу перекатить свою приложуху на нее. Короч, в чем прикол. Создал для теста базу, забил рандомной херней типа логинов "admin", "root", etc Теперь делаю из нее select, затем print("<",login, ">", password) и тут его пидорасит смотри пикчу. Это я базу неправильно настроил или что?
>>931560Аутист ебучий, ты про дебагер слышал что-нибудь?
>>931654sql дебагер? Серьезно?
>>931933Курьезно!Какой ещё print в sql-e? Понахуярил непойми что и оно не работает. Точнее, работает, но не так как аутист ожидал.
>>931470так вроде у оракла же есть документация фирменная онлайн? я как-то натыкался, показалось очень добротно написаной
>>931952>print в sql-e?В питухоне, а не не в sql-e.
>>932189Ну так дебаж, питухонер.
>>932196Еще вчера отдебажил, попиздеть охота.
>>932215Соси хуй, быдло.
Посоны, нужен ваш компетентный совет. Мне нужна субд, да не простая, а пиздатая. Короче, рассказываю суть.Мне нужно хранить строки в БД и иметь к ним быстрый доступ. Знаю, что обычно эта проблема решается индексами, но у меня количество строк в таблице ограничено, и поэтому я бы хотел вместо индексов использовать хэш-таблицу. Поскольку я нуб и в душе не ебу, какие бывают хэш-функции в субд, у меня несколько вопросов:1. Есть ли хэш-функции, которые принимают заранее заданное количество значений? Я смотрел в инетике, но там всякие md5 принимают строго фиксированный диапазон значений.2. Вытекает из первого: есть ли субд с широкой поддержкой хэширования? Ну чтобы не ебя мозги можно было просто задать размерность таблицы, а субд сама бы подбирала и генерировала хэш-функцию и можно было сразу работать. Ты в бд строку - она тебе индекс. Ну что-то в этом роде.3. На самом деле я хочу захуярить не одну, а несколько таблиц с фиксированной размерностью и хранить в них строки. Поэтому неплохо было бы, чтобы субд поддерживала секционирование.
>>932360а я вот не понял, чем тебе индексы не угодили, чесгря
>>932360Хуйни какой-то понапридумал. Пиши что сделать нужно, а не свои фантазии насчет решения.
Эксперты БД, нужна ваша оценка. В общем, надо создать БД для пациентов. Но основная задача это хранить рентгеновские снимки, мрт, еще что-то. Т.е есть чел, и к нему я добавляю снимок ноги, через три дня еще один снимок, через наделю еще. Вот, как лучше сделать, чтоб не обосраться? Я так полагаю, нужна будет еще локальная база?
>>932535>Вот, как лучше сделать, чтоб не обосраться?см ниже>Я так полагаю, нужна будет еще локальная база?Тут ты уже предварительную подливу выпустил
>>932535>В общем, надо создать БД для пациентов.Расскажи кто поставил задачу?В каждой поликлинике ёбаные кулибины говнокодят на фокспро нечто подобное
>>932789>фокспроОн еще жив?
>>932788Почему? Ну я не очень понял, но вроде если основная база недоступна, то все сохраняется в локальную>>932789Да это мой диплом. Там будет сама приложуха для некоторого анализа ОКТ и вот такая база.
>>862801 (OP)Поясните ньюфагу, как выбрать данные по каждому дню декабря для посгре?
>>932824>вроде если основная база недоступна, то все сохраняется в локальнуюХотел было помочь, но... Надеюсь, тебя отправят в армию.
>>932931Да ладно, я отмазался. Говори уже.
>>932931Хоть поясни, в чем я не прав. Это мне науч.рук предложил так сделать.
ОП-хуй, где шапка с литературой?
Имеется такое задание по Microsoft SQL Server. В общем, имеется база данных. Там есть таблица Сотрудники с полями (СотрудникID, ФИО, Должность), СотрудникID - первичный ключ. Также есть таблица ПриходСклад с полями (СкладID, ДатаПоставки, Приемщик), СкладID, ДатаПоставки - первичный ключ, Приемщик - вторичный ключ таблицы Сотрудники(СотрудникID).Задача - добавить в таблицу Сотрудники столбец Дата приема, установить значения в этом столбце для кладовщиков равными дате их первой поставке.В общем, первую часть (создание столбца) я сделал.ALTER TABLE СотрудникиADD [Дата приема] date NULLСо второй частью никак не получаетсяUPDATE СотрудникиSET [Дата приема] = (SELECT MIN(ПриходСклад.ДатаПоставки) FROM ПриходСклад)WHERE Сотрудники.СотрудникID IN (SELECT DISTINCT Приемщик FROM ПриходСклад)Дата приема устанавливается одинаковой для всех кладовщиков, что понятно. Как сделать, чтобы через SET устанавливались разные даты для каждого кладовщика?К слову, запросSELECT MIN(ПриходСклад.ДатаПоставки), Приемщик FROM ПриходСкладGROUP BY Приемщиквозвращает именно нужные даты, как их присвоить Дате приема?
>>933455update tset t.Column = kek.Valuefrom Table tleft join OtherTable kek on HueMoe itakdalee
>>933304> Это мне науч.рук предложил так сделать.Всё что нужно знать о науке в сраной
>>933479Спасибо.Сработал этот запросUPDATE СотрудникиSET Сотрудники.[Дата приема] = (SELECT MIN(ДатаПоставки) FROM ПриходСклад WHERE СотрудникID = Приемщик)
>>933578вложенные запросы - это зло
>>932840bump
>>933595Ссылку на хабр или пиздун.
>>932840>выбрать данные по каждому дню декабряКакие данные, мудило тупое? Откуда выбрать? Экстрасенсы все на съемках нового сезона для тнт блядь.
>>933697тебя ебет какие данные? лол. Анонимус настолько отупел, что не может представить абстрактные данные?Просто выбрать данные из нужной мне таблицы в колоку - 1 декабря 2 декабря..31 декабряСам нашел что-то типо этого.SELECT DATE(insert_time), SUM(value)FROM table1WHERE insert_time >= '2013-05-01' AND insert_time <= '2013-05-31'GROUP BY DATE(insert_time)
>>933739Это ты настолько отупел, что не можешь сформировать понятно задачу, ждешь помощи, а еще агришься на все подряд, тебя спрашивают, какие данные, потому что к ним нужно как минимум применить агрегатную функцию. Еще обычно принято писать так: Есть 2 поля: insert_date и amount в субд postgreSQL, каким запросом можно выбрать сумму amount для каждой даты (insert_date)?На стаковерфлоу тебя бы обоссали, а тут только по морде дали. Пиздец, еще кого-то тупым называет, иди, блять учи русский язык сначала, а потом основы sql.
>>933307Я же хуй, не знаю даже, что вкидывать. Если есть предложения, кидай, добавлю в перекат.
>>933739>абстрактные данныепосылаю тебя на абстрактный хуй>Сам нашел что-то типо этогоИ что, сложно было? Думаю, что нет. Потому ты и был нахуй послан.
>>933739>Сам нашел что-то типо этого.Что на уровне пятой задачки с sqlex, а может быть даже и ниже.
>>933952Как минимум ссылку на sql-ex.ru чтоб задачки решали и ссылку на статью в wiki про джойны, а то мне на собеседовании половина соискателей неправильно full outer join делают.http://sql-ex.ru/https://ru.wikipedia.org/wiki/Join_(SQL)
>>934655чо-нить про индексы интереснава расскажи лучше
>>934679Да что тут можно интересного рассказать? Довольно тривиальная штука же.Пару небольших заметок напишу.1. Иногда можно обойтись меньшим количеством индексов. Например есть таблица table(field1, field2) и нужно ускорить поиск для запросов типа "... where field1 = ..." и "... where field1 = ... AND field2 = ...". В этом случае достаточно одного индекса по обоим полям сразу (field1, field2), причем важен порядок полей в индексе, т.е. индекс (field2, field1) сработает только для поиска по двум полям сразу (либо для поиска по field2).2. Индексы не обязательны для применения. Так планировщик запросов может решить, что быстрее будет пробежаться по таблице полностью (full scan), чем обращаться в индекс. Это зависит от количества записей в таблице и набранной статистики. У меня был случай когда запрос выполнялся 12 секунд (большая таблица и слабое железо на тестовой машине) из-за того, что планировщик решил что так быстрее. Когда я заставил его использовать индекс (есть у postgres такая опция) запрос выполнился за 6 секунд. В таком случае может помочь vaccum analyze.
>>934655Расскажи про людей на собеседованиях.
>>934721это ты рассказал то, что я могу в любой статейке почитатькак формируется значение для индексированной записи? есть у меня, скажем, таблица Kek {Id, Date, OptionId, SomeBinaryData} и есть PK {Id, Date}.я могу забомбить запрос с WHERE Id = @lel AND Date = @azaza, тогда индекс будет использоваться на полную катушку.а могу так: WHERE Date = @azaza AND Id = @lel. запросовыполнятор может (ну, допустим, будет) использовать индекс. конечно, неэффективно, но что позволит ему быстро (быстрее) скакать по дереву с учетом ебанутости меня как запрашивающего?я ведь могу указать только вторую колонку.
>>934733Я ж не DBA какой-нибудь. Джойны - это один из вопросов на собеседовании на жавамакаку. Много кто рисуют пикрелейтед, а когда даешь задачу просто сджойнить всеми способами две таблицы - сливаются. Ну это джуны, в основном.Часто путают full outer join (снизу слева на пикче) с вариантом снизу справа.
>>934744>это ты рассказал то, что я могу в любой статейке почитатьЧувак, на дворе 2017 год - о всем можно прочитать. А уж в /pr не будет откровений и сакральных знаний передающихся из уст в уста.>PK {Id, Date}Странная штука - так делать. Ты PK с обычным индексом не перепутал?>конечно, неэффективноС чего ты решил что есть какая-то разница? От перестановки условий в where результат не изменится.>я ведь могу указать только вторую колонку.Тогда индекс не сработает. Я же писал, что важен порядок полей в индексе. В твоем случае с PK {Id, Date} он сработает либо для поиска по Id, либо для поиска по Id и Date одновременно.
>>934756>Странная штука - так делатьачо? я часто видел ID + дата либо ID + FK в качестве кластерного индекса>о всем можно прочитатьну не знаю, это вроде бы внутренности реализации. хотя я могу ошибаться>что есть какая-то разницаумные люди на хабре напесали. да и не только, источник я просто так не вспомню (MS SQL если чо. там же есть разница и она может быть существенной?)
>>934773>она может бытьА может и не быть. Сомневаюсь, что в MS до такого не додумались. В любом случае EXPLAIN в помощь.
Пагни, помогите нубу.Нужно выбрать значения из бд (Оракел), которые являются вычисляемыми. В расшифровке таблиц написано Storage - Calc. Те столбцы, у которых Storage - DB селектятся нормально.Помогите, пожалуйста. Погуглил, что-то ничего похожего на мое не нашел (плохо искал, видимо).Пикрелейтед.
>>934963бамп вопросу
Посоны, нашел на специалисте сертефицированные курсы по sql server администратору за 50к че как думаете годно? Хочу постепенно вкатиться в тему, сам как аналитик юзал нубский аксесс на уровне нубского конструктора и вот подумал а че бы блядь и нет? Стану sql макакой, тянки, успех, профит.
>>936648хочешь просто отдать денег, отдай мне
>>936670Плохие курсы?
>>936705ну как плохиея бы сказал, что любые платные курсы в 2017м году это те же бесплатные курсы, книги, статьи, видео, но только платно
>>936648На курсах тебя не научат ничему такому, чего ты не сможешь изучить сам.
-13 навыка за 4.8$, просто заебись.
Анон, возможно ли в постгрисе 9.5 сделать колонку с массивом внешних ключей? Заебали эти вспомогательные таблицы на 3 колонки.
>>934963Помогите с этой хуйней, пожалуйста.
Подскажите по теории БД!!!Немного запутался в определенияхвот у меня задачаЕсть мн-во A={a,b,c,d,e,f}мн-во отношений S={{a}->{b,c},........}нужно проверить, что {a,d} - ключ. через замыкания.Так вот, есть 2 стула свойства1 уникальность - это когда замыкание {a,d}+ = A2 неизбыточность - как я понял, это когда {a}+ !=А и {b}+ !=АЕсли замыкание {a}+ =A, то {a} - уникален, и ад - не ключЯ правильно все понял, или где-то проебался?
>>937050Хотел сначала тебе помочь, но заглянул под спойлер.Уёбывай.
Помогите пожалуйста! Поясните, как в базе данных сохранять содержимое статьи для типичного сайта? Статья включает в себя текст смешанный с изображениями, несложные элементы html-форматирования текста, такие как подчёркивание или выделение жирным и собственно теги для вставки картинок. Работаю с PHP+PDO+MySQL.
Дибитусты в треде есть?
>>937436Очевидно, в виде маркдауна
>>936648Тебе это не нужно. Ты просто напрасно потратишь деньги. Только практика, только хардкор.Бамп.
>>934963Я, конечно, не знаю что такое Оракел, но предположу что он не считает project названием таблицы. Что-то вроде такого в t-sql.
>>936710Если я правильно помню, у оракла платные курсы - необходимое условие для получения сертификата выше разраба.
>>937050>Колонка с массивом внешних ключейЧто ты несешь, вообще?
>>939312Он хочет хранить несколько связей в одном поле записи в виде массива ключей, как я понял
>>939887А зачем так делать? Чтобы сущности не плодить?
Студентота, инженерная специальность, предстоит курсач по базам данных(окологис-технологии). Знаний SQL нет совсем (только немного реляционная алгебра и создание БД библиотеки на информатике, ну и некоторые основы программирования). От преподов толку нет. Нихуя не понимаю как начать вкуривать основы, пытался гуглить, но все гайды заточены под ms sql или mysql, а там свои отличия как я понимаю, а у меня нет времени на разбор. Короче реквестирую учебник по SQL, заточенный именно под POSTGRE.
>>940533В армию пиздуй.
>>940533Внезапно скачай с их сайта
>>940533Нужно наверно сначала прочесть классику (Дейта "Введение в системы баз данных"), чтобы знать стандарт SQL, а уже потом конкретные реализации.
>>940533>Короче реквестирую учебник по SQL, заточенный именно под POSTGRE.Плохая идея. Ищи учебник без заточки.
БД-господа, выкинулсяли из университета и теперь сижу дома. Чтоб я пробзделся, батя мне задал такую задачу: перевести базу клиентов из экселя в аксес, попутно прикрутив интерфейсы и прочие свистоперделки, также, возможно, в будущем придется добавить поддержку работы с ней по локальной сети с нескольких компьютеров одновременно. Хватит ли для реализации этого проекта книг с оп-пика генерального треда /pr про SQL или же придется воспользоваться дополнительной литературой? Если да, то какой?
>>943951в аксесе программирование мышкой, зачем тебе какие-то книги?
>>943976Чтоб устройство понять баз данных, чтоб интерфейсы нормальные сделать. Бейсик тоже придется задействовать, по моим ощущениям. Я ж в этой области вообще ноль полнейший. А книга - друг лучше любой собаки.
>>943981для крудопроекта подойдет любое издание аксесс для чайников за 21 секундушобэ узнать про реляционную теорию стоит начать с Дейта
>>943982>крудопроекта?
>>943998C.R.U.D.
сап, анании. как лушче хранить деревья в бд? видел тему с ключами (типа AAAA у родителя, AAAB, ..., AAZZ у детей и т.д.), чтоб можно было доставать всех детей. кто что считает?
>>944013Понял, спасибо за ответы.
>>944017индексы ж вроде ж как реализуются в виде деревьев
>>944017С какой целью?
нахера в sql для псевдонимов есть команда ASS, если можно не писать её, а просто поставить двойные скобки?
>>945253* ASS
>>945253можно и квадратные скобки поставитьпо, я так понял, вся хуйня кроме as это синтаксический сахернапример, для подвыражений без ас не сработает, вроде бы как
Поясните дауну что сделать что бы я писал в одной таблице и это же самое появлялось в отдельных строках другой.
>>945433Триггер; хранимка, которая будет это всё делать.Чем пользуешься? Если access, то тут уже хрен знает.
>>940542SELECT Cписок служащих WHERE Не годен
Гайз, спасайте.Нужно выводить записи где датавремя находится в диапазоне первых 5 дней каждого месяца.Я хз как это сделать.
>>946228ах даMySql
>>946228SELECT *FROM TABLEWHERE DAY(date)<=5
>>946236вротмненоги, работаетВсё оказалось куда проще, Спасибо
>>944017https://neo4j.com/https://www.arangodb.com/
Подскажите книжку по Oracle для начинающий, чтобы всё подробно разжёвано было
>>949332*начинающих
>>863895JSONB в постгри
>>902568explain
>>902660Можешь писать так, как удобно тебе. Я пишу маленькими.
>>914874+
>>926131Нет, если используешь хибер
>>926360Почему нельзя?
>>949379никто не говорит, что нельзя
>>949379Потому что куски бинарного говна не нуждаются в индексировании, транзакционности и упорядоченном хранении.
Вопрос по mssql. Есть ли разница между запускаемым из maintains plan проверки целостности через checkdb и созданного руками джоба на проверку базы тем же checkdb
>>944017https://en.wikipedia.org/wiki/Nested_set_model для sql.
Сап, анон. Я нуб, который решил начать изучать SQL по Бьюли, и обосрался в самом начале. Суть вот в чем: В MySQL есть 2 таблицы (пикрилейтед). Они были связаны внешним ключом по person_id, но я его дропнул, потому что он не давал мне поставить авто-инкремент в первой таблице. В общем я его поставил, и теперь пытаюсь вернуть внешний ключ через ALTER TABLE. Но нихуя, он возвращает ошибку "error 1215 cannot add foreign key constraint"Может есть идеи в чем может быть проблема?
>>951629Начнём с того, что в таблице "person" этот ключ должен называться просто "id".Добавим к тому, что ты только что полностью разрушил свою БД, создавай её заново.
>>951699То есть названия столбцов для первичных ключей в разных таблицах не должны быть одинаковыми, я правильно понял?В чём все-таки моя ошибка? Как правильно привязать эти столбцы внешним ключом и не обосраться снова? Плюс, мне нужно чтобы столбец с айдишником в таблице "person" сам его генерировал при заполнении ее новыми данными (почему я и поставил авто-инкремент, а вообще планировал заполнить столбец значением "null", но не вышло, пришлось так изъебнуться).
>>951699который раз поражаюсь донности mysql
>>862801 (OP)Помогите составить запрос для экзамена!Имеются 3 таблицы - t1 t2 t2 которые имеют поляt1 - authort2- bookt3 - author, bookЗадания1. нужно убрать из таблицы t3 все книги, у которых два одинаковых автора2 вывести 10 самых популярных книг
>>953115ты хотя б пытался или сразу сюда пришел?
>>953123Сразу. Я просто этот предмет мимопрохожу, а задачу до завтра необходимо решить.
>>953129Ну и пошел нахуй тогда, братишка. Добра тебе.
>>953129Тогда самое время начать учить SQL. Флаг тебе в анус.
>>953129Пишу сразу в тред, не проверяя на реальной БДcreate table tmp_count_authors as (Select COUNT (t3.author) as author_count, t3.author, t3.book from t3 group by (t3.book, t3.author) );delete from t3 where ( (tmp_count_authors.author=t3.author) AND (tmp_count_authors.author_count>2) );drop table tmp_count_authors;sqlite
MSSQL. Нужна база данных продуктов и рецептов, чтобы по перечню продуктов искать рецепты, в которых есть все продукты из списка (одного-два может не хватать)Препод уже месяц отказывается принимать решение со стандартным "многие ко многим" и костылями типа "создать 100 полей для продуктов в каждом рецепте и разрешить NULL", говорит что есть какой-то более годный способ, а я думать не хочу.Какие соображения у треда на эту тему?
>>953636>а я думать не хочуА мы, блять, за тебя хотим.Вот, тебе туда же: >>953143
Суп, бдач. Попрошу совета. Я хочу уметь в базы данных, потому что часто вижу в вакансиях умение всяког на Сиквеле, Постгре и разного Мемкеша, Монго. Как я вижу - ёпте, база данных, в ней данные. Обычно ЯП сам делает туда запись. И сам же оттуда достаёт, что ему нужно, только путь укажи. Если надо ручками - залогинился, селектнул, удалил\добавил. Но я подозреваю что пикрелейтед. Ткните меня, где я обосрался и куда копать? Что почитать, как понять как под капотом работает или какие КУРСИКИ пройти?
>>953688Лол, хуево написал. Это он так утверждает.А у меня идей нет, чо там еще можно использовать.
>>953636Пускай есть три таблицы: Готовый Продукт (Код, Название, Питательная Ценность), Ингредиент (Код, Название) и Рецепт (Код, Готовый Продукт Код, Ингредиент Код, Количество Ингредиента, ИД_рецепта). Например:Готовый Продукт:{ГП1, "Морской Рулет", +5}Ингредиент:{И1, "Мясо хоркера"}, {И2, "Соль"}, {И3, "Сельдь"}Рецепт:{Р1, ГП1, И1, 1,"Рецепт1МорскогоРулета"}{Р2, ГП1, И2, 1,"Рецепт1МорскогоРулета"}{Р3, ГП1, И3, 2,"Рецепт2МорскогоРулета"}{Р4, ГП1, И2, 1,"Рецепт2МорскогоРулета"}В этом примере есть 2 рецепта Морского рулета: "Рецепт1МорскогоРулета" = 1мясо хоркера+1соль"Рецепт2МорскогоРулета" = 2сельдь+1сольВ таблицу Ингредиентов можно добавить какую-нибудь Соль пустоты и никаких рецептов менять не нужно
>>953707Это ж просто денормализация многие-ко-многим, нет? И чем это принципиально лучше?
>>953725>и костылями типа "создать 100 полей для продуктов в каждом рецепте и разрешить NULL"Вот такого нету, например. Можно ещё сделать составной ключ из тройки (Готовый Продукт Код, Ингредиент Код, ИД_рецепта) и убрать поле Код, но зачем?
>>953735Так их и в N:N нету. Утвержается, что есть некий способ в ущерб объему данных (то есть избыточность) относительно N:N увеличить скорость поиска рецепта по продуктам в разы. У меня идей нет никак.
>>862801 (OP)Итак, анон, есть reg-файл.Это вот дело служит паролем для базы данных.Насколько я понимаю, dword 83 это какой-то сдвиг фразы "Увррфмсз", потому что когда я ставлю значение 0, то захожу в базу по этой фразе. Как узнать, какая фраза выходит после этого сдвига? Он как-то по ASCII вперед на 83 символа сдвигается или как?[HKEY_CURRENT_USER\SOFTWARE\mtests]"t"=dword:00000083"validate"="Увррфмсз"
>>953636Ну самый очевидный способ это реализовать - запилить таблицы с ингредиентами, рецептами, рецепты_ингредиенты.Алгоритм поиска - искать id в таблице ингредиентов нужный, потом уже в таблице рецепты_ингредиенты искать рецепты по id ингредиентов.Ну и в техническом плане там на колонку с названиями ингредиентов повесить индекс, и ещё индекс на колонку с ингредиентами в рецепты_ингредиенты.
господа, посмотрите на мой высер...пилю бд тип для выдачи кредитов с предварительным анкетированием.меня интересует насколько правильно (и если не правильно поправьте пожалуйста) поставил связь, которая на пикрелейтед помечена знаком вопроса. Так же правильно ли я организовал хранение ответов в анкете пользователя(таблица в красном квадрате).ну и так в общем может есть какие замечания, я обязательно учту.
>>954388Не помешало бы на словах идею объяснить. Словесную формулировку базы, так сказать.
>>954388Ну вот идея, на которой ты построил опросную систему, немного непонятна. С банками и контрактами всё нормально.
>>954714значит связь с контрактами и кредитными продуктами там не лишняя(красный знак вопроса на схеме)?система с опросом(кредитный скоринг) такова:есть скоринговая карта(scoring_map), у этой карты есть вопросы(question), к каждому вопросу есть несколько вариантов ответа (case) (для каждого варианта свое количество балов),и вот мне надо будет хранить пройденную анкету пользователя(test_result), где будет храниться сумма набранных баллов. выбранные варианты ответов, решил хранить в таблице выделенную красным квадратом на схеме. правильно ли так делать как сделал это я? плюс если в вариантах ответа есть "добавить свой вариант" (которого нет в анкете), пользователь пишет конкретно свой вариант, но этот "вариант", который ввел пользователь, должен быть привязан к конкретно тому пользователю, который его вводил. надеюсь понятно объяснил
>>954730>>плюс если в вариантах ответа есть "добавить свой вариант" (которого нет в анкете), пользователь пишет конкретно свой вариант, но этот "вариант", который ввел пользователь, должен быть привязан к конкретно тому пользователю, который его вводилполе description в таблице case_has_test_result
>>954730Ну договор с банком на некоторых условиях происходит, что неплохо этой связью характеризуется.Scoring_map - это некоторый набор анкет? Я бы на твоём месте подумал о переиспользовании вопросов для разных анкет (N:N).
>>954735>>Scoring_map - это некоторый набор анкет?совершенно верно>>Я бы на твоём месте подумал о переиспользовании вопросов для разных анкет (N:N)т.е. мне еще между таблицами scoring_map и question запилить еще табличку с полями id_scoring_map и idquestion. так?
Последнее время приходится хуярить много запросов на MSSQL вида;WHERE cell1 not like '%хз%' AND cel2l not like '%хз%' AND cell3 not like '%хз%'или WHERE cell1 = 1 AND cell2 = 1 AND cell3 = 1Нельзя ли их как нибудь сократить типаWHERE cell1 = cell2 = cell3 = 1а то печатать заебался уже.
>>955042like запросы это всегда заебись. Скажи спасибо системным и бизнес аналитикам, кто не смог выявить четкие сущьности.
>>954738Да. Шансы на то, что у тебя для разных анкет будут пересекаться вопросы - около 100%.Вообще, если идти по пути повторного использования данных, то можно много чего найти. Но это уже если надо будет. Просто это наиболее вероятное, что может пригодиться.
>>955042По поводу второго случая в ms sql можно было бы написать 1 IN (col1,col2,col3).Попробуй поиграться, может в mysql тоже можно.
>>955098спасибо большое
>>955213Подумай ещё над схемой. Мне кажется, с анкетами тут всё не так просто, как кажется. Информацию про шаблон анкеты было бы неплохо с результатом анкетирования хранить. В этой схеме выходит, что нужно перелопатить таблиц кучу, чтобы id шаблона найти.
>>955243если честно больше ничего в голову не лезет.тут в принципе действительно было бы неплохо иметь возможность переиспользования вопросов из анкет. я это впринципе и сделал.а вообще просто по сути мне нужно хранить значение набранных баллов клиента, с целью выдать ему кредит или нет, и на какие вопросы как он отвечал.я сейчас сделал это так: в таблицу test_result добавил поле scoring_map_id, и связал таблицы scoring_map 1:N test_result. и получается, когда мы смотрим результаты анкетирования, мы можем посмотреть какие анкеты клиент проходил, и что он там отвечал.насколько это правильно? может подскажешь как бы ты это реализовал.
>>955265бля, не тот скрин.в что пока у меня в итоге получилось
>>955267
>>955268Ну сойдёт крч. Мы пытались.
>>955294не, если на схеме что-не верено подскажите. я исправлю
>>955307Ну не вижу я больше ничего такого.
>>951629начни с переезда на postgres
Сап, БДач, посоветуйте годные гайды по SQL запросам MS ACCESS, в гугле куча всего но что из них гуд - хз.
>>957829Братишка, с access всё очень сложно. В универах, например, его рассматривают на уровне схем максимум, потом идёт sql. Всё как в жизни.Скорее всего, придётся выбирать самому.
>>957832Ясно, просто нужно для олимпиад по технологиям
>>957835Это что за зверь такой?
>>957836Дают задания на Word,PP,Excel,Access сделать по образцу/текстовому описанию
>>957837В чём профит участия?
>>957838Дополнительные баллы за приз места в 11 классе при поступлении
>>957841Понятно. Удачи.
Сап, анон. Подскажи, плез, как в Oracle можно сделать нумерацию сотрудников по отделам (аналогично row_number() over (partition by) ), используя конструкцию with as?
>>957957Ты хочешь просто row_number() туда перенести или вообще от row_number() в запросе избавиться?
>>958212Избавиться.
>>958491Зачем понадобилась альтернатива?
>>958557Задание такое.
>>958583Самое лучшее, что нашёл:http://stackoverflow.com/questions/1453747/oracle-sqlget-all-integers-between-two-numbershttp://oraclenotes.ru/?p=71Может тут кто-нибудь, работавший с ораклом, будет мимо проходить и поможет. Но это всё, что есть на тему.
>>958589Про rownum я и так знал, но я хз, как сделать перебор по отделам, чтобы вывести персонал для каждого отдела отдельно. Но все равно спасибо.
>>958557row_number это нестандартное SQL-расширение
>>958593Не звучит, как сложная задача. Если дашь подробности, кто-нибудь поможет.
Аноны, помогите правильно спроектировать базу. Есть контора, которая осуществляет испытания. От клиентов принимаются заявки. В каждой заявке указаны виды испытаний (может быть несколько). Т.е. я предполагаю наличие сущности "Заявка" и наличие сущности "Виды испытаний", связь многие ко многим. По каждому виду испытаний есть несколько показателей, которые надо измерить. Опять предполагаю сущность "Показатели" и связь многие ко многим с "Виды испытаний". По каждому виду испытаний в заявке составляется протокол, где должны быть указаны фактическое и требуемое значение показателей. У меня трудности, как связать сущность "Протоколы" с имеющимися. Правильнее будет связать с "Заявками" как многие к 1? Или же с промежуточной таблицей "Заявки_Виды"? И как сюда привязать показатели? Создать промежуточную таблицу с атрибутами ID_протокола, ID_ВидаРабот, ID_Показателя?Спасибо
>Опять предполагаю сущность "Показатели" и связь многие ко многим с "Виды испытаний"Тут связь многие к 1 с "Виды испытаний"самофикс
На что влияют SET ECHO OFFSET VERIFY OFFя так понимаю это просто отключения лога в командной строке, но чем эхо отличается от верифай?
>>964081Братиш, ты уже понял, что никто за тебя базу не будет делать. Накалякай на access что-нибудь и приходи ещё раз.
>>964081>>964460Вот такой трэш получился. Выслушаю конструктивную критику.
>>964553Поздно уже, сегодня не смогу помочь. Ну и тот факт, что я с трудом понимаю, что же тут на самом деле-то происходит, тоже нифига не помогает.Это какая-то супер обобщённая модель aka laba1 или есть какие-то шаблоны, стандартные наборы? Например, стандартные протоколы, виды работ, показатели, нормы.
>>964565В общем, фактическое значение из таблицы "Показатели" убрать мне надо, так как есть в соседней таблице. Таблицы "Виды работ", "Показатели" - в качестве справочников.
>>964640Ну та часть, что ты словестно описал, выглядит правдоподобно.Пару вопросов:1) На каждый протокол только один инженер-испытатель?2) У тебя на каждый вид работ в заявке может быть несколько протоколов. Так было задумано?
>>9647221) Да2) На каждый вид работ - соответственно 1 протокол, я объединил таблицы "Заявки_ВидыРабот" и "Протоколы"
>>964945>>964565Теперь вроде всё норм, а чтобы не делать много протоколов по одному виду из одной заявки, добавлю ADD CONSTRAINT UQ_Заявки_Виды UNIQUE (ЗаявкаID, ВидРаботID).
Gомогите с Access, а то я тут горю просто.Как сделать запрос на промежуток данных. Конкретно дат.пишуWHERE [Дата] Between #1/1/2017# And #31/1/2017#Пишет задано значение для операции без оператора.Может ему как-то конкретно надо на дату указать, как это сделать ?
>>966974попробуй сделать запрос в конструкторе и посмотри как его автоматом пишэд сам аксесс
Бамп еще работает?
>>971973Неа, тонем.
>>972003Завтра запилю перекат, нужно запрос на оп-пик потупее придумать.
>>972172перекат https://2ch.hk/pr/res/973923.htmlперекат https://2ch.hk/pr/res/973923.htmlперекат https://2ch.hk/pr/res/973923.html
Ребят, я к вам из PHP-треда, только -только вкатываюсь в MySQL. Имею БД students, хочу создать в ней следующую таблицу: CREATE TABLE student ( name VARCHAR(30), surname VARCHAR(30), gender VARCHAR(30), group VARCHAR(5), mail VARCHAR(20), score SMALLINT UNSIGHNED, yearofbirth YEAR, placeofbirth VARCHAR(10), password VARCHAR(40)); и вылезает вот это:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual thatcorresponds to your MySQL server version for the right syntax to use near 'group VARCHAR(5), mail VARCHAR(20), score SMALLINT UNSIGHNED, yearofbirth' at line 5
>>978753Как быть?
>>978753UNSIGNED, например.
>>978962Спасибо, уже исправил
Перепишу из ньюфагтреда. Господа, есть один MS SQL сервер, база в нем, хранимка в базе.Хранимка выполняет роль поиска по этой базе.Представляет собой простой селект, объединяющий кучу таблиц через left join и сотней условий в where.Типа: SELECT * FROM (SELECT a, b, c FROM table1join table2join table3)Вся эта хуйня дико тормозит, хочу переделать.Есть какой-то нормальный способ делать поиск по БД? Без хранимки на 100 параметров, без объединения всех-всех таблиц?