И снова это неиндексированный баз данных тред!Тут мы решаем ультраважные вопросы о том, как правильно хранить динамические атрибуты сущностей: в полях или в строках,Рассказываем, как работаем аналитиками и мечтаем стать разработчиками,Строим АНАЛИТИЧЕСКИЕ отчеты в экселе, выгружая по миллиону строк, а потом фильтруя,Дружно не понимаем, ЗОЧЕМ ЖИ НУЖИН ОЛАП, ЕСЛИ И ТАК ВСЕ РАБОТАЕТ ЗАЕБИСЯ,Ищем ошибки в аббривиатурах MDX DMX XMLA,Доебываемся до эс - ку - элей наших же потенциальных конкурентов>Select id from tbl_table_with_id where id = (select max(id) from tbl_table_with_id)>ЧТО НЕ ТАК-ТО У МЕНЯ?Удивляемся, как за знания, приобретаемые за 4 месяца на sql-ex, могут платить по 100к, и бугуртим, что ниасилили и 100к не получаем.А так же:Постгре или постгрес?Май эс ку эль или мускуль?Эс ку эль или сиквел?В общем, это очередной баз данных тред, поехали!
Хороший тред, освятил.120к
>>1034303 (OP)Анон, я вот шарю SQL(джойны, груп бай все дела), использую MySQL, и думал этого достаточно для погромиста. Но вот читал ресурсы некоторые и там к знаниям этим еще приписывают всякие нормализации, оптимизации, индексы - я не ебу что это все значит. Что почитать, чтобы расширить кругозор?
>>1034339Скл.сру, там, в принципе, уже все давно разжевано:http://www.sql.ru/articles/mssql/03013101indexes.shtml
>>1034339Если ты вебер, а не разраб бд, то вполне достаточно, думаю.Разрабу бд, как раз, все что ты написал, тоже желательно изучить.
>>1034339Нормализации.Коротко - Википедия (того, что там написано, действительно хватит для общего кругозора и вопросов на собеседовании), длинно - К. Дж. Дейт "Введение в базы данных".Оптимизация, индексы - тут уже конкретно по интересующим тебя СУБД. Если Oracle, то это великолепный Том Кайт. Аналогов в других СУБД я не знаю. Кто-нибудь знает.
https://m.hh.ru/vacancy/20873637Топ вакансию вам принес. Даже интересно, сколько там платят, мне кажется заебись. Как жаль, что я не шарю ETL. А если бы и зашарил, нахуй я нужен без практического опыта работы. Похоже, мой потолок это всю жизнь писать sql-запросы.
>>1034784Да просто почитай про средства ETL для оракл, и все. Если ты хорошо шаришь в БД и структурном подходе, то ты быстро освоишь.
>>1034835Так и сделаю! Ща только Кайта дочитаю и буду ETL изучать специально!
Oracle 11gR2Несмотря на то, что в аналитических функциях указываются v1 и v2, значение аналитической функции считается по v2.Что за ебанутый косяк?От функции не зависит, с sum та же история. Поодиночке отрабатывает нормально.
>>1034908Для большего количества строк та же история.
>>1034908Попробуй не юзать цте, положи сначала в табличку свои рандомы, а потом уже посчитай, что хочешь.
>>1034940Да, спасибо. В общем-то это не самое важное в жизни.Просто тупенько как-то выходит. Я бы ещё понял, если бы в каждом столбце свой рандом высчитывался, а так совсем фигня получается.Кстати, если сделать прямую подстановку рандома в две агрегатные функции, он вернёт другое случайное значение, но одинаковое. А если функции разные, то и рандомы разные.
>>1034908Использование хинта materialize в конструкции with заставляет отрабатывать этот вопрос так, как мне нужно. Этот хинт сохраняет результат запроса в конструкции with как временную таблицу и оперирует с ее значениями, не вызывая dbms_random в самом запросе. Жаль, что не догадался до этого сразу, только сейчас осенило.Надеюсь, информация была кому-то полезной.
Кто круче, DBA или DBD (developer). Кому больше платят? Что перспективнее?
>>1035460Платят одинакого зачастую.Тут вопрос нн в том, что лучше, а в том, что интереснее.Ну и добавлю еще, что разраб, все-таки, тоже должен уметь в администрирование. Все вот это вот:Фаервол-рулзы для субд,Индексы,ДжобыЮзеры и группы, праваЭто, вроде как, дба-шная херь, но если ты, как разраб, это не умеешь, то и стоить будешь меньше.Есть куча контор, где вообще дба, как таковой, отсутствует. Знаю, потому что сам в такой работаю.
>>1035477Сам сколько в месяц в среднем зарабатываешь? Если не ДС, можешь не отвечать.Насчёт знаний это понятно, конечно, я чисто по специальности интересуюсь, в моем понимании dba следит за тем, чтобы все работало, а разработчик реализует функционал
>>1035051охуенный хинт, возьму на заметку, т.е. с ним и производительность должна подрасти, т.к. в CTE можно вынести тяжелый запрос?
>>1035051Спасибо, а почему все-таки dbms_random.value выдает одно и то же значение? И как узнал про этот хинт?
>>1035577Не знаю. Тонкости реализации оракла, не более. Не углублялся в вопрос. Как видишь, оракл считает, что где-то ему нужно посчитать новый рандом, а где-то воспользоваться уже просчитанным. Один хуй в реальной жизни никто не использует рандом, я тестил одну хуйнюшку и заметил случайно?Как узнал? Хз. Один из топ используемых на работе хинтов. Не помню, что было раньше, прочитал ли я о нем где-то или пришел на эту работу и стал активно юзать.>>1035575Аккуратнее!Хинт означает, что результат твоего запроса будет храниться в памяти. Если у тебя огромное количество записей, хранить его в памяти накладно. Только проебешь в производительности.Если тебе нужно сохранить результат какого-то охуевшего запроса с охуевшим количеством строк, проще создать для него обычную временную таблицу.
>>1035577Наверно, потому что это псевдорандом, во многих яп генератор рандомных чисел так сделан.
Сап, аноны. Пишет кун, который сейчас ходит по собеседованиям, пытаюсь примерно оценить перспективы дальнейшего развития как dbd и классифицировать проекты, предлагаемые на рынке. Пока вот такой список:1. Банки. Это в основном отчетность и etl, зарплаты норм в ДС и ДС2. Из плюсов норм зарплата, предметная область и возможность роста.2. Легаси-проекты, разработанные и поддерживаемые относительно крупными компаниями: системы биллинга, АБС и т.п. Возможно плюсом будет то, что заниматься придется все-таки разработкой, а не клепанием отчетиков. Из минусов - это легаси, возможно придется долго и нудно погружаться в предметку, ковыряться в говнокоде столетней давности.3. Шаражки - все плюсы и минусы мелких компаний, проектов мало, о новых не слышал.4. Мобильные операторы и торговые сети. Часто вижу вакансии разрабов у МТС, Мегафона, Магнита, Окей и т.д. Чем там придется заниматься? Есть предположение, что обслуживать то, что разрабатывают компании из п. 2 и отчетики как в п. 1. Подтвердите или опровергните.5. Аутсорсеры, например Люксофт, тоже в основном легаси, но возможно есть и интересные проекты.,Речь идет о секторе РСУБД, всевозможные nosql, key-value и прочие бд не рассматривались.Какие перспективы видите у разработчика RDBMS?
>>1035484Дс, 100к, с августа перекатываюсь на 120.
>>1035590Думал, что сначала выполняется запрос CTE, а потом результат его выполнения джойнится с другими таблицами. Дело в том, что у меня есть большая вьюха где в CTE находится рекурсивный запрос, который выводит даты начала каждого месяца начиная с текущего и до месяца двумя годами ранее, затем эта CTE джойнится в нескольких запросах, объединенных через union all.В моем случае будет выигрыш от помещения CTE в память, т.к. таблица по сути маленькая, как считаетt?
>>1035614Канеш, будет, особенно, если у тебя там рекурсия, а результат мелкий - однозначно выйграешь.
>>1035594Я не согласен по пункту 2. Мне доводилось заниматься поддержкой OLTP-системы. Не АБС, потому что дело было не в банке, но суть та же. Скажу, что у меня на отчетиках программирование более интеллектуальное, чем там. Обобщать на всё я, разумеется, не буду.По пункту 4, я думаю, да, везде есть своя аналитическая отчётность.Вспомнил про телеком. Ходил как-то на собеседование от одной днищной конторы-интегратора, которая мутит проект для топ3-оператора. Начальник, который меня собеседовал, закончил мой вуз, чуть ли не со старта сказал, что готов меня взять. А потом начал рассказывать, что проект нудный и хуевый, что карьерного и личностного роста я там не дождусь и все такое прочее. Хороший мужик.Как попадать в аутсорс-компании мне неведомо. По ораклу все вакансии, что я находил, были в российских компаниях.Какие перспективы тебе нужны? Психологические 100к везде можно зарабатывать, если чуть-чуть постараться. А дальше я не знаю.
>>1035614Ну да.>>1035613А вы тут, кстати, зарплаты в net или gross называете?
>>1035619Перспективы метнутся на 200к+ интересуют, подозреваю, что с такой узкой специализацией сделать это не просто. Ну и хотелось бы интересной работы, чтобы было место хотя бы немного изобретательству, пока сидел в треде, как-то пришло осознание, что sql в конкретных реализациях тоже весьма интересен сам по себе, хинты, планы запросов, оптимизация вот это все, а программирование на процедурном расширении по большей части в тот же sql упирается, только с циклами и if. Возможно стоит копать в сторону ETL и дальше развиваться как архитектор хранилищ данных, хз.
>>1035630Полагаю, что только в узкой специализации можно метнуться на 200к+. А мастер на все руки, не являющийся охуенным спецом хоть в чем-то, вряд ли кому-то нужен.Другой вопрос, насколько высок шанс поднимать такую зп, будучи разработчиком бд, по сравнению со всеми остальными специальностями. По моим наблюдениям больше 200к зарабатывают только на руководящих должностях, причем не начальники отделов, а повыше.Впрочем, опыта у меня немного и, возможно, я просто попадал не в те конторы. Посмотрим.Хочу до посинения дрочить и углубляться в БД.
>>1035620Да господи, только даун будет говорить про зп В Гросс, нахуя это нужно, вообще?Я лично говорю всегда только о чистяее.
>>1035726У тебя будет 120к чистыми? Респект...
>>1035641Плохая идея. Не будешь ты иметь там много денег.Помимо бд советую какой-нибудь бэк-енд базис иметь, если мс скл, то сисярп (асп нет), если оракл, то ява, если май скл, то пыха.Вот с такими знаниями ты наверняка будешь дорого стоить.
>>1035848Может быть я и двину в эту сторону.Но у меня нет цели быть великим программистом, я хочу быть лучшим специалистом по базам данных в России.
>>1035951Даже лучше ОПа, пишущего такие божественные запросы, как на ОП-пике?
>>1036017Опа надо обоссать за создание колонки, фуллскан таблицы с ее заполнением, созданием индекса, удалением строк с этой заполненной колонкой и удалением колонки вместо одного простого dml с удалением строк.
Ваш топ-ораклист на связи. Откликнулся недавно на одну вакансию, сейчас позвали. Не банк, но приличная контора, если без деанона.Заниматься придется в том числе etl. На месте уже уточню, что конкретно будет и в каких пропорциях.Сказали, что мои охуевшие зарплатные ожидания они не удовлетворят, но 130-140к(gross) максимум готовы дать. На 140 буду согласен, конечно, главное, чтобы это не вылилось в стандартное "давай ты сейчас да мелкий прайс повъебываешь и мы тебе через годик 140к дадим".
>>1036027Так там же индекс, чего ты, в самом деле, быстро же все будет.
>>1036042Там один хуй фуллскан таблицы при обновлении.
Сап.Есть таблица, в одной из колонок которой хранятся размеры файлов в байтах.Суть в том, что надо вытаскивать данные о том, какое количество файлов имеют размер меньше заданного, причём делается это для большого количества границ. Например, если максимальный размер 10МБ, то надо вытащить <2, <4, <6, <8, <10.Сейчас это сделано селектом в цикле со стороны приложения. Таблица большая (20к строк, на слабом железе) и это работает достаточно медленно.Так вот, как можно оптимизировать эту операцию, анон?
>>1036033Привет, расскажи, пожалуйста, подробнее, чем занимается контора и каковы твои обязанности, кроме etl?
>>1036093Сап, т.е. в цикле примерно такойзапрос:select count(id)from table_namewhere size_b < n,где n с каждой операцией увеличивается?
>>1036095Привет.Контору не хочу деанонить, а о непосредственных обязанностят и работе я лучше расскажу после собеседования.
>>1036096Да, прямо такой и есть.
>>1036093Какая база данных?Фиксирована ли шаг 2 или произвольно?
>>1036093>ного, причём делается это для большого количества границ. Например, если максимальный размер 10МБ, то надо вытащить <2, <4, <6, <8, <10.>Сейчас это сделано селектом в цикле со стороны приложения. Таблица большая (20к строк, на слабом желе>>1036096или имеется в виду, что в цикле при заданном размере файласчитается отдельно количество файлов размером <2, <4, <6 и так до nс шагом 2?
>>1036099Шаг фиксированный, задаётся при старте приложения.БД - MariaDB + H2 тоже должна работать.>>1036100Есть некий шаг, который задаётся в приложении. После чего считается количество файлов, удовлетворяющих <STEP, <2STEP, <3STEP, ... и так до тех пор, пока NSTEP будет больше максимального размера файла.
>>1036093Если у тебя мало разбивок и они фиксированны, тоselect sum(1), --всего sum(case when value < 4 then 1 else 0 end), sum(case when value < 6 then 1 else 0 end), sum(case when value < 8 then 1 else 0 end)from tНекрасиво, но как минимум один запрос, один скан таблицы, одна группировка.Если много произвольных значений, то надо думать
>>1036093Нахуй тебе множество < и or между ними? Делаешь индекс на размер файла и хуячишь каунт айдишника с размером меньше верхней границы.
>>1036103А, нет, так они не фиксированы. Количество шагов зависит от максимального значения этого столбца.>>1036104Ты где or видишь? Делается несколько запросов, каждый раз с разной верхней границей.
В иерархический запрос передаешь шаг (тут 2) и максимальную отметку (тут 10).Потом джой.Это нихуя не отптимально по производительности (ну может только чуточку оптимальнее, чем N запросов), зато одним запросом.Искренне ваш,топ-ораклист
>>1036106В одном конкретном обращении к бд всегда один < n? (без хуйни с < 2 < 5 < 10, как ты выше написал)Делай индекс и обзапрашивайся - будет range scan по индексу.
>>1036093>>1036102вот решение для оракла, попробуй cte для maria db переписатьwith tn as (select 2level size_bfrom dualconnect by 2level <= (select max(size_b) from table_name)) select tn.size_b, sum(case when t.size_b <= tn.sizeb then 1 else 0 end) files_cntfrom table_name t inner join tn on t.size_b <= tn.size_bолсо ссылка на рекурсивные запросы:https://mariadb.com/kb/en/mariadb/recursive-common-table-expressions-overview/Цикл не нужен для этого запроса, но тут может быть просадочка, если n большое, т.к. cte джойнится по условию, зависящему от n. Индекс на t.size_b будет не лишним, думаю.
>>1036112Все бы ничего, но в твоем иерархическом запросе отсекается последняя нужная граница.То есть если в таблице максимальное значение 9, то твой запрос посчитает значения меньше 8, а суммарное количество записей не посчитает.Так что d коннекте меняй level на level - 1
Всем спасибо, возьму всё-таки решение вот этого анона: >>1036110Оно, судя по всему, выигрывает по соотношению простота/производительность.>>1036093-кун
>>1036115не обратил внимание, но и с level-1 будет неверно, т.к при n = 9 и level-1 = 4, 2level = 10, т.е. посчитает больше чем нужно.Можно оставить level в connect by и отедльно union all добавить хвост от 8 до 9
>>1036116т.е. цикл в приложении останется?
>>1036121Да.
>>1036122Расстрелять.
>>1036116 ПОХУЙ, ТАК СОЙДЕТ@ВЫИГРЫВАЕТ ПО СООТНОШЕНИЮ ПРОСТОТА/ПРОИЗВОДИТЕЛЬНОСТЬ
>>1036134Может доступа к исходникам приложения нет, все ж мы люди
>>1036140Приложение моё, для личного использования.>>1036134Эта жирная часть - всего лишь модуль статистики, который мне нужен для корректировки таймаутов и подобного. Заморачиваться с чем-то сложным ради того, чтобы раз в неделю не ждать трёх секунд на составление отчёта мне кажется излишним.
>>1036163То есть ты приходишь в тред, люди тебе что-то предлагают, стараются, хотят помочь, а ты потом пишешь "похуй, не буду ничего делать, всем спасибо". Это нормально вообще?Нахуй ты вообще свой вопрос задал, если тебя всё устраивает?
>>1036165Почему не буду ничего делать? Повешу индекс и буду радоваться жизни, как посоветовал >>1036110>>1036103 не подходит, потому что разбивка не фиксирована.>>1036109 сам написал, что его решение неоптимально по производительности, да ещё и, судя по всему, под другую БД.>>1036112 практически такое же решение, с теми же проблемами.
>>1036172предпоследний пост сказал, что это в любом случае оптимальнее дохуилиона селектов.последний пост тебе даже дал ссылку на иерархические запросы в твоей бдНЕНЕ ПАЦАНЫ ХУЙНЯ КАКАЯ-ТО СПАСИБО ЗА ПОМОЩЬ Я ЛУЧШЕ БАЗУ ПОЕБУ ЩА ИНДЕКС НАВЕШУ ДЕЛА В ГОРУ ПОЙДУТ
>>1036184Application before data, дбашечка.
>>1036109Похуй, что синтаксис ОРАКУЛА вообще не Т-сКЛ ни разу, поебать.
Читаю книгу Learning SQL и запнулся на примере про индексы, почему данный запрос>EXPLAIN SELECT cust_id, SUM(avail_balance) tot_bal>FROM account>WHERE cust_id IN (1, 5, 9, 11)>GROUP BY cust_id;просматривает все 24 строки таблицы, хотя без GROUP BY возвращает 8? Ведь если cust_id индексирован, он находит индексы этих восьми строк и работает только с ними.Вот объяснение из книги:После прочтения индекса ожидается, что сервер просмотрит все 24 строки таблицы account для сбора данных о доступных остатках, поскольку он не знает, что могут существовать другие клиенты, кроме клиентов с ID 1, 5, 9 и 11.Зачем смотреть остальные доступные остатки, если уже выбрано 8 строк?
>>1036734Потому что это не уникальный индекс, вот почему.И все равно нужно просмотреть всю таблицу, чтобы убедиться, что больше нет полей с такими значениями.
>>1036740понял, спасибо
Прошел курс на кодакадеми, так как тут нихуя не сказали что читать и пошел решать задачки на sql-ex, знакомые советовали и сразу же на втором задании вопрос.Задание:Exercise: 2 (Serge I: 2002-09-21)List all printer makers. Result set: maker.тлдр, есть дохуя таблиц, которые свзяанны фореин киЯ пишу: SELECT DISTINCT maker FROM Product JOIN Printer ON Product.model = Printer.model;Пишут что неправильно, предлагают писать так:SELECT DISTINCT makerFROM Product WHERE model IN (SELECT modelFROM Printer )Естесна после кодакадеми я понятия не имею даже что так писать можно. Что почитать и почему неправильно-то ?Описание:The database scheme consists of four tables:Product(maker, model, type)PC(code, model, speed, ram, hd, cd, price)Laptop(code, model, speed, ram, hd, screen, price)Printer(code, model, color, type, price)The Product table contains data on the maker, model number, and type of product ('PC', 'Laptop', or 'Printer'). It is assumed that model numbers in the Product table are unique for all makers and product types. Each personal computer in the PC table is unambiguously identified by a unique code, and is additionally characterized by its model (foreign key referring to the Product table), processor speed (in MHz) – speed field, RAM capacity (in Mb) - ram, hard disk drive capacity (in Gb) – hd, CD-ROM speed (e.g, '4x') - cd, and its price. The Laptop table is similar to the PC table, except that instead of the CD-ROM speed, it contains the screen size (in inches) – screen. For each printer model in the Printer table, its output type (‘y’ for color and ‘n’ for monochrome) – color field, printing technology ('Laser', 'Jet', or 'Matrix') – type, and price are specified.
>>1034303 (OP)Постгр и Мускл.
>>1038003Не знаю кто тебе что там предлагает, я делал так:select distinct makerfrom productwhere type = 'Printer'Только что проверил, мой вариант остается правильным.Насчет почитать, можешь по быстрому просмотреть https://www.w3schools.com/sql/default.asp
>>1038045Да я в итоге тоже так написал, но почему с джоином-то неправильно ?разве это не тоже самое, что и кодакадеми ? Спасибо энивей, проверю
>>1038046Запустил твой пример, результат то у тебя верный, но они смотрят кол-во возвращаемых записей до DISTINCT. В таблице Printer не все связи с Product (есть принтеры без расширенного описания).Если бы в Product был еще один maker с принтером, без описания в таблице Printers, то твой запрос бы не сработал.
>>1038046>>1038049В подтверждение слов про не все имеют расширенное описание:SELECT DISTINCT maker FROM Product LEFT JOIN Printer ON Product.model = Printer.modelWHERE Product.type = 'Printer'Возвращает верный результат. Т.к. включаются и те принтеры из Product, которые отсутствуют в Printers.
Анон, у меня есть три таблицы, user, topic и category, связанные через четвертую, post. Выводить это мне нужно древовидной структурой, "category" > "user" > "topic+поля post". Поебавшись с запросами, я решил сначала получать список user, принадлежащий каждой category, затем у каждого user получать post и topic. В итоге это работает и выглядит удобно для работы, но меня не оставляет ощущение, что что-то не так, ведь для вывода используется n+2 запроса, где n - количество user. Варианты с groupby не взлетают. Порекомендуйте более корректное решение, если оно имеется
>>1038049>>1038061Сложна, но будем разбираться, спасибо.
>>1038003Ты дурак?select distinct maker from product where type = 'Printer';> Естесна после кодакадеми я понятия не имею даже что так писать можно. А хули ты там делал, если даже один простой селект написать не можешь?>>1038046> почему с джоином-то неправильноА нахуй он там всрался? Там даже суррогатных ключей нету.
>>1038066Открой для себя удивительный мир джоинов.
>>1038080И у меня получается охуенно огромный список записей, которые надо ручками перебирать.
>>1038203>ручками>цикломПофиксил тебя
>>1038291Хорошо, как мне разбить список topic сначала по user, а потом по category в циклах? Проверять на каждой итерации, не изменился ли id?
>>1038292Откуда я знаю, пользуйся словарями, например.
>>1038061Я придумал моднее, только результат не прошёл тест на проверочной базе. Наверное, этот прав >>1038049. Проверочная база содержит записи в Prodyct c type=printer, которых нет в таблице printer.SELECT DISTINCT MakerFROM PrinterLEFT JOIN Product ON Product.model=Printer.modelWHERE Product.model IS NOT NULL
>>1038753> LEFT JOIN Product > ON Product.model=Printer.model> WHERE Product.model IS NOT NULL
Так поясните мне когда следует использовать kerberos для аутентификации в постгрессе. Я пока что понимаю, когда есть более одного приложения работающего с одним кластером. Или он в любом случае не повредит?
>>1038765Он сам просил написать запрос с соединением.
>>1038753inner join
>>1038933Зачем там inner? Тут суть в том, что мы выводим все принтеры.
>>1038934бляяя, ясн
>>1038936Или ты хочешь сказать, что inner join = LEFT JOIN where is not null?
>>1038938посмотри на пик который я прикрепил, посиди и подумай над ним полчасика.да
>>1036033Отменилось собеседование в пятницу, сегодня было.НУ ТАКОЕВо-первых, сказали, что самый максимум по ЗП это 130к гросс. Но если учесть, что мы вообще обсуждали деньги, считаю, что все прошло успешно. Может и позовут, но на 130 я точно не пойду.По непосредственным обязанностям тоже как-то мутно. Они хотят и разработчика dwh, и аналитика, и гей-шлюху в одном лице. Не знаю, что из этого выйдет, это может быть как очень круто, так и очень хуево.В общем, если бы остро нуждался в работе, то пошел бы, конечно, ну а так я вспоминаю слова моей тёти "хуй на хуй менять - только время терять".По ораклу мало спрашивали. Стандартная задача с актуальными зарплатами сотрудников. Выебнулся keep derse_rank, конечно.Какие типы соединения таблиц знаешь? Hash join, nested loops. Как будешь маленькую таблицу с большой соединять? Маленькую в хэш.Был задан философский вопрос, как я буду удалять дубли из очень большой таблицы? Без задней мысли возьму и удалю.
grant all privileges on bank.* to'username'@'localhost' identifiedby 'xyz';exitmysql -u lrnsql -p;xyzERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES)Чому ?
>>1040328> mysql -u username -p;естесна, не то скопировал
Можно ли в Oracle 11g r2 сгенерировать для каждой строки указанное в её столбце количество значений (см. картинку), используя только MODEL? Про рекурсивные cte, connect by и т.п., конечно, известно, но тут поставлено именно такое условие вручную вписывать значения тоже не разрешается.
>>1040205ИМХО, но получение нового опыта сделает тебя куда более востребованным специалистом. Ты ведь работал только на отчетах, так?
>>1040853По сути да.Но 4 места работы за неполные два года это пиздец перебор, на меня косо смотреть будут.Конечно, я бы ушел на какую-нибудь космическую зарплату хоть сейчас, но я и на текущей работе могу впоследствии получить и прибавку к деньгами и смену рода деятельности.По совокупности факторов лучший вариант посидеть тут хотя бы годик, меня все устраивает.
>>1040386PL/SQL
анончики, подскажите почему во втором запросе с условием, не отображается строка с id = 5?
>>1042641Из за NULL. Он добавляет некоторую троичную логику.Выходит как-то так:1. NULL = 'y' => NULL2. NOT NULL => NULL3. NULL != TRUE => строка не подходитМожно написать NOT ISNULL(disabled, '') = 'y' (ещё есть COALESCE).
>>1042655благодарю, только для mysql рабочий вариант с IFNULL()
>>1042660>>1042655А через "AND disable IS NULL" можно? Иначе зачем усложнять?
Сижу уже полчаса тупо втыкаю в то, что написал и не могу понять, что нет так-то.КОгда отправляю запрос тупо нихуя не происходит, то есть мне дальше предлагают вводить, как если бы я я точку с запятой не поставил> SELECT emp_id, fname, lname, groups.name FROM employee -> INNER JOIN (SELECT 'trainee' name, '2004-01-01' start_dt, '2005-12-31' end_dt -> UNION ALL -> SELECT 'worker' name, '2002-01-01' start_dt, '2003-12-31' end_dt -> UNION ALL -> SELECT 'mentor' name, '2000-01-01 start_dt, '2001-12-31' end_dt) groups '> ON start_date = groups.start_dt '> WHERE start_date BETWEEN groups.start_dt AND groups.end_dt;
>>1044042Всё, сам разобрался, забейте
>>1044042Говеный запрос.
>>1044081Ага, я переписал
>>1044008Будто то, что ты написал, проще.
>>1040205И все-таки как из большой таблицы удалить дубли?
Анон, посоветуй годный справочник команд и функций по SQL.
Потсоны, шарит кто в Dimensional Modelling (Data Warehouse)? Закину удочку, может, повезёт.Есть проблема. Система собирает данные по различным статистическим показателям (например, количество населения, количество преступлений и т.д). В целом, у таких данных три общих измерения: показатель, территория, календарь. Далее у каких-то показателей могут быть доп. измерения (например, вид преступления или, там, национальность правонарушителя). Соответственно, в одну таблицу фактов данные по всем показателям не уложишь. Получается, надо под каждую группу показателей, имеющих одинаковую размерность, создавать таблицу фактов? Или под каждый показатель создавать таблицу фактов (не нраица -- потенциально показателей очень много)?Гугление наводит на теги Core / Custom Fact Table, но построить цельную картину не получается из-за отсутствия опыта.Шарящий DBA съебал на другое место, приходится дорабатывать его начинания.
Допустим, я создаю таблицу с пользователями, каждый из которых может быть подписан на новости. Или иметь ещё сотню булевых опций. Надо ли запихивать их в саму таблицу пользователей, или лучше завести одноколончатую таблицу с идентификаторами подписчиков?
>>1044557У тебя olap или oltp?
>>1044585OLAP.
>>10445891. Почему ты считаешь, что в одну таблицу фактов нельзя все уложить? Просто берешь и кладешь без задней мысли, напротив тех измерений, которых нету у данного показателя, пишешь null, будет у тебя одна таблица фактов с кучей измерений и null-ов в них, ну и что? Советую вместо null класть -1 и в соотаетствующем измерению справочнике завести элемент id: -1, name: None2. Далее собираешь из этого один или несколько кубов. Если один, то все показатели в него и запихиваешь, соответственно, на пересечении с измерениями, которых у какого-то конкретного показателя нет, у тебя будут стоять (-1)None, только и всего.2.1. Можно собрать несколько кубов для разных показателей, тогда при создании куба просто исключаешь неиспользуемые измерения из модели, пользоваться проще, но сравнивать значения сложнее.В общем, не понимаю, почему ты сразу сделал вывод, что в одну таблицу фактов все класть нельзя, если абсолютно у всех показателей есть несколько общих измерений.
>>1044558С какой целью интересуешься?Что дальше с этими данными собираешься делать?
>>1044623Да, самое главное не написал, это немного другая концепция складирования, тут придется завести еще однл измерение самому - "Показатели", ну и соответствующий ему справочник в хранилище, так вот, id-шники показателей так же следует класть в таблицу фактов, а рядом с ними в еще одном поле "measure", класть значение этих показателей. В итоге у тебя получится до хуя строк, зато из них изи будет собираться куб. В мерах же в самом кубе нужно завести всего один элемент - Value, и все значения из таблицы фактов класть на него. Если не понял, могу нарисовать схему. Эта методология используется в финансовых системах, например в Prophix, так что это не моя говнокостыльная придумка.
>>1044623>Почему ты считаешь, что в одну таблицу фактов нельзя все уложить?Я так не считаю, просто мне не нравится такой подход. Вроде есть ограничение на количество столбцов? В итоге можно в него упереться, когда количество измерений перевалит за этот порог. В перспективе пока видится не так много измерений, конечно, но хочется от такого всё-таки обезопаситься. У нас система и так переживает уже, наверное, третье рождение, из-за того, что люди не смотрят в завтрашний день.>Да, самое главное не написал, это немного другая концепция складирования, тут придется завести еще однл измерение самому - "Показатели", ну и соответствующий ему справочник в хранилище, так вот, id-шники показателей так же следует класть в таблицу фактов, а рядом с ними в еще одном поле "measure", класть значение этих показателей. В итоге у тебя получится до хуя строк, зато из них изи будет собираться куб. В мерах же в самом кубе нужно завести всего один элемент - Value, и все значения из таблицы фактов класть на него.Я понял, т.к. прототип в таком виде сейчас и есть, от этого и отталкиваюсь.>В общем, не понимаю, почему ты сразу сделал вывод, что в одну таблицу фактов все класть нельзя, если абсолютно у всех показателей есть несколько общих измерений.Потенциально у нас тысячи показателей (аналог -- гос. система ГАСУ), многие из которых опираются на кастомные справочники. У этих данных в общем случае всего 3 общих измерения: справочник показателей, справочник территории, календарный справочник. Даже меры у них не всегда одинаковые, т.к. в одном случае у одного показателя аддитивная мера (например, кол-во родившихся за календарный период), а у другого -- нет (например, количество населения, зарегистрированное на календарный период). При таком раскладе я не вижу, как это всё можно сложить в одну таблицу фактов. Но, повторюсь, я не DBA ни разу, так что могу ошибаться.
>>1044678>Я не DBA ни разуА DBA и не должен в этом разбираться, если что, это вопросы к аналитикам.>В перспективе видится не так много измерений.Ну так и отталкивайся от задачи, не старайся уходить в максимальную абстракцию.Я бы сделал, как написал в прошлом посте, если бы видел совсем различные измерения для показателей, то сделал бы разные таблицы фактов, что тут думать, надо брать и делать, а не сиськи мять. >Тысячи показателейНу так ты же их и пишешь в 2 поля, а не в тысячу, так что все збс.Делаешь, смотришь, как работает, если всех устраивает, то и збс.
>>1044696Ну да, чувствую, что в итоге сделаем с минимумом таблиц фактов. Спасибо.Ещё фишка в том, что BI-инструментарий у нас хотят свой. Точнее, давно уже есть некое его подобие над старой схемой, но оно говно, и не в последнюю очередь из-за того, что старая схема не позволяет строить гибкие запросы (шутка ли, из всего множества значений выбрать значения показателей, у которых в контексте есть, скажем, Москва и 2015 год -- это из разряда фантастики, т.к. по словам DBA для этого нужно провести какие-то транспонирования/перевёртывания и прочий БДСМ). Конечно, не всё так плохо: аналитики используют SAS Visual Analytics, но там данные в другой, более феншуйной схеме. Но в целом вектор взят на отказ от вражеского ПО (гос. контора): опенсорс БД (досвиданья оракл, здравствуй постгре), свои аналитические инструменты и прочее. Поэтому для меня как для разработчика это всё больной вопрос, на самом деле, и вроде как и хочется быстрее с ним покончить, но, с другой стороны, если сделаешь хуйню, то потом переделывать весь стек (чем, собственно, мы сейчас и заняты).
>>1044713>шутка ли, из всего множества значений выбрать значения показателей, у которых в контексте есть, скажем, Москва и 2015Mdx же есть и функции фильтрации измерений.А так же возможности создавать статичные Set-ы.
Сложно ли перекатываться с Oracle на Postgres? И нужно ли?
>>1044985Зависит от степени vendor lock-in, которая складывается в основном из объёма логики, написанной на PL/SQL (хранимые процедуры, утилитные скрипты), и количества эксклюзивных фич в используемом инструментарии (BI tools, Administration tools). Для великовозрастных систем перекатиться может быть крайне сложно.Вопрос о необходимости для каждого свой. Например, для гос. контор это скорее риторический вопрос -- сказали "Надо", значит, надо, и не ебёт.Если ты имеешь в виду перекат из PL/SQL разработчика, то это вопрос изучения другого SQL-диалекта и сопутствующей инфраструктуры (те же самые инструменты администрирования). Думаю, тоже не особо приятное занятие.
В PL/SQL Developer можно как-то включить уведомление о выполнении запроса, когда он сам свернут?Заебывает проверять каждый раз...Если не найду, как это сделать, придется после каждого выполняемого куска писать себе отправку сообщения на почту...
>>1046225>отправку сообщения на почтуТы что, одновременно по миллиарду запросов пишешь?И что за запросы такие, результатов которых ты ждешь настолько долго, что сворачиваешь окошко?
DELETE FROM Person WHERE Email IN (SELECT Email FROM Person GROUP BY Email HAVING COUNT(Email)>1)Что не так с этим запросом ?You can't specify target table 'Person' for update in FROM clauseЭто типа про сабквери или чего, я не понимаю
>>1049791https://pastebin.com/6Chduftxдвач похерил звёздочки
>>1049791Гугол говорит, что https://stackoverflow.com/a/14302701
>>1049862Да, я это уже изменил, думал тут вообще никого нет, я немного с заданием проебалсязадание удалить всё повторяющиеся емейлы из таблицы, но так чтобы остались с меньшими айдишниками. И там блять на второй проверочной таблице сначала вставляют id=2, а потом id=1Почему моя уебищная хуйня не работает, может кто объяснить ?моя уёбищная хуйня вот>>1049848
>>1049868Не ебу что ты там в пейстбине насрал, но это элементарно делается с оконной функцией.
>>1049884хуй знает что это, но я таки допилил свое говно до ума, а они решили через джойн самому себе
>>1046599> кококо нинужно кудах!! я скозал!!!
Сап, БДаны. Есть одна небольшая задачка связанная с проектированием БД с которой прошу вас помочь.Есть таблицы epolis (epolis_id - первичный ключ), contracts (contract_id - пк), transport(transport_id - пк).В contracts - реквизиты договора на обслуживание, строго локальная версия. в epolis -реквизиты страхового полиса, это таблица по сути - локальная версия данных из другой базы, в transport - параметры транспорта(год выпуска, цвет, объем двигателя, номер паспорта, регион регистрации и т.д.), может апдейтиться данными из внешней БД, значения параметров также передаются во внешку при необходимости, также может изменяться локально, без передачи данных. В текущей схеме на первой пикче связи с epolis и внешней информационной системой нет, историчность параметров транспорта не поддерживается, все параметры транспорта в одной таблице. Требования следующие: нужно реализовать историчность параметров транспорта и интеграцию с внешней ИС, таким образом, чтобы измения таких параметров как цвет и мощность двигателя (их больше, но не важно) можно было исторично закрывать в случае изменения и, по желанию, передавать во внешнюю ИС.Аналогично с параметрами номера паспорта и региона регистрации, но для них есть ограничение, изменения во внешнюю среду передаются только при создании нового полиса или изменнении старого. Другими словами апдейт вступает в силу, только если данные, хранящиеся в epolis, успешно переданы во внешку. Т.е. эти параметры транспорта зависят от полиса, но являются параметрами ТС.На второй пикче решение, подскажите, как это примерно реализовать или в чем ошибка? Тупо добавил start_date и end_date, из минусов то, что при изменении только лишь цвета придется закрывать всю запись.Вообще там ебанутая ситуация, т.к. внешних источников два и они оба теребят одни и те же таблицы, при этом друг о друге ничего не знают. И еще проблема, например пользователь поменял номер паспорта транспорта, эти данные нужно сохранить локально, но внешняя ИС не приняла полис, а соотвественно и изменения сведений транспорта, и их нужно как-то откатить как это можно реализовать?
>>1036190За такое надо убивать. Расстреливать пидорасню ебаную.
>>1050213Я, к сожалению, ничего конкретного не скажу, т.к. не DBA.Почитай про Dimensional Modeling и/или Data Vault. В случае с Dimensional Modeling (а на второй пикче -- это практически звезда по этой методологии) у тебя транспорт -- это slowly changing dimension. Нужно только определить тип исходя из условий задачи (надо ли хранить историю, насколько часто обновляются элементы измерения).Неплохой обзор практик, связанных с Dimensional Modeling, можно посмотреть здесь: http://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniquesВ случае с Data Vault хуяришь изменяющиеся атрибуты в отдельный сателит/сателиты, а дальше я ещё книгу не дочитал. Но в целом, там архитектура располагает к ведению истории.
>>1050213Повесь триггеры на транспорт и обсохраняйся всей историей. Ну или сделай через аудит и сри вообще как хочешь.> Другими словами апдейт вступает в силу, только если данные, хранящиеся в epolis, успешно переданы во внешку.Ты ведь знаешь что такое транзакции?>>1050218Проблемы, дбашечка?
Всем респект.
>>1050324Это скорее задача девелопера - проектирование схемы данных, ок, спасибо, хотя у меня OLTP - база.
>>1050366Триггеры не очень подход в данном случае, т.к. в приложухе повсеместно используется версионность start_date и end_date и вообще по рукам побьют.>Ты ведь знаешь что такое транзакции?Да, конечно, но смотри какая ситуация получается:У пользователя есть форма с кучей полей транспорта, при этом есть скажем вкладки с прочей инфой о страховщике и т.д., все это представляет собой документ, который после заполнения передается во внешку. Поля транспорта, например, такие: цвет, мощность двигателя, регион регистрации, номер паспорта тс. Так вот задача в том, чтобы при сохранении промежуточных значений на форме параметров ТС во внешку уходили только данные о мощности двигателя и цвете. А остальные поля только при передаче всего документа.Т.е. получается нужно какое-то время хранить черновик записей в БД, и только потом сохранить эти данные как новую версию, а старую закрыть, другими словами между транзакциями нужно сохранять данные (т.к. любые сохраенные на форме изменения коммитятся в локальной бд), а потом делать логический "коммит" - создавать новую версию.Может забить и тупо версию открывать и закрывать при каждом апдейте таблицы, если меняются значения параметров? Без оглядки на то, что данные еще не передались. В конечном счете, мы храним у себя только историю изменений, т.е. актуальную локальную копию данных, которую потом используем в качестве подстановки в форму.Посоветуйте, пожалуйста, может есть какие-то маст-рид книжки по интеграции между ис или проектированию схем данных, интересуют именно конкретные подходы, проблемноориентированные, анон выше советовал уже по dimensional моделлинг.
>>1050645>Т.е. получается нужно какое-то время хранить черновик записей в БД, и только потом сохранить эти данные как новую версию, а старую закрыть, другими словами между транзакциями нужно сохранять данные (т.к. любые сохраенные на форме изменения коммитятся в локальной бд), а потом делать логический "коммит" - создавать новую версию.юзай Read uncommitted, добавь флаг в табличку с записями: is_confirmed bit, как только ты считаешь, что юзер ввел все (типа нажал сохранить"), ставь is_confirmed = 1 и отправляй, куда хочешь.
>>1034303 (OP)>couchdbмб юзал кто для продакшина, какие подводные камни?
Поясните что они от меня хотят, лол, постоянно фейлится на их тестовой базе какой-то.Given a Weather table, write a SQL query to find all dates' Ids with higher temperature compared to its previous (yesterday's) datesТаблица собственно состоит из id, date, temperatureSELECT b.id as Id FROM Weather b WHERE b.temperature > (SELECT c.temperature FROM weather c WHERE c.date+1=b.date)Что блять не так я вообще понять не могу.https://leetcode.com/problems/rising-temperature/description/
>>1052234select Weather.Id from Weatherjoin Weather as Second on subdate(Weather.Date,1) = Second.Date AND Weather.Temperature > Second.Temperature;
>>1038003А чому бы неSELECT DISTINCT maker FROM Product pdWHERE EXISTS ( SELECT 1FROM Printer WHERE pr.model = pd.model)Явный left semi join же
>>1034303 (OP)Сап, программач. Джва года ждал этот тред. Сейчас работаю в мухосрани разработчиком отчетности. По факту пишу огромные sql запросы по внутренним процессам организации. Обычно это отчеты для внутреннего портала и запросы для единичных выгрузок.Также пишу функции и процедуры для внутренних процессов. Оче редко занимаюсь архитектурой баз, пару раз всего проектировал несколько таблиц. Иногда занимаюсь оптимизацией сложных запросов. Смотрю немного план запроса и выстраиваю индексы. Иногда занимаюсь СКИПТРЕЙСИНГОМ.Все это пилится на MS SQL.Так вот у меня к вам несколько вопросов:1) Я считаюсь программистом по факту если пишу на SQL?2) 30к это норм для такой вакансии если я в мухосранях?3) Есть возможность с подобными скиллами перекатиться в ДС на зп тысяч в 60 со старта? Еще могу c++/c# простенький класс написать. Есть вышка магистра матфака.
>>1052465Ты считаешься разработчиком корпоративной отчётности. если ты не шаришь в архитепктуре, то разработчиком баз/хранилищ данных тебя назвать сложно.В ДС можно перекатиться и на 100 тыщ с теми скилами, которые ты описал, если, конечно, ты все делаешь правильно, пишешь оптимальные запросы, а не такие, как в ОП-пике.Если умеешь в оптимизацию, чтение чужого кода, чтение плана запросов, принципы работы индексов, то втройнемолодец.Хотя у меня в конторе работают олухи, которые пишут говно, но сотку, всё равно, имеют. советую перебиратсья в ДС, снимать тут хату за 30 и искать работу в районе соточки, будешь в шоколаде, удачи.
>>1052489>>1052465Два года назад перекатился на 40к в ДС2 с такими же скиллами. Архитектуры толком не знаю до сих пор, скиллы подросли немного. Планирую перекатываться на 80к+, т.е. в ДС думаю сотку за такое заплатят.
>>1052465>>1052567>30к >40кПиздец. Даже говнотестер получает больше.
>>1053285>ДС2>лоу-тир конторазабыл сказать, что зарплата серая, на руки немнго больше идет
>>1052489Что можно почитать, чтобы научиться читать планы запросов и вообще оптимизировать?
>>1052465Нет. Ты ничего не разрабатываешь. Максимум дата аналист.
>>1052465Да. Ты разрабатываешь функции и процедуры.Если при этом работаешь с контролем версий, делаешь код ревью и вообще няша, то можешь назваться разработчиком БД.
>>1052465Олсо, топ-ораклист-кун на запросах 120к поднимает, делай выводы.
Почему Postgres медленный? Или его не умеют готовить? В чем его прикол, кроме бесплатности?
>>1053704Прикол в том, что админить его сложно, искать спецов сложно, вот и все.А так классная штука.
>>1053512Да блин,что угодно, просто гугли "ms sql plan", находи хабру, msdn, разбирайся, дай бог, в гугле не забанен.
>>1034303 (OP)Сакральный смысл оп-пика в удалении самой ранней записи?
>>1053789Аплодисменты!Как говорится, если знаешь способ лучше, предложи, мы его рассмотрим всем тредом. Есть только одно условие, нужно, чтобы он был запоминающийся.
А есть какие-нибудь курсы по sql для людей, на связанных с разработкой? Аналитики всякие, и т.п.
>>1054912Ты имеешь в виду легкость в освоении или специфичный sql, который в BI применяется?
Здравствуйте! У меня база данных постгре сиквел. Есть вот такие настроечки и вот так выглядит моя табличка. Как сделать что оно выглядело хорошо? Ос шиндоус 8.1. Я вообще потом хочу через пхп с табличкой работать. Там все выглядит так же плохенько. Помогите пожалуйста. Хримсто бого молю!
>>1055007Collation и Character type выстави как UTF8.
>>1054977Имею в виду с упором на оперирование данными, без технических тонкостей о проектировании бд, и прочей подобной информации.
>>1055228Это отличный совет! При установке я ставил en us utf а этот пидор мне поставил en us 1251. Вроде как можно создать базу с отличными настройками локали от дефолтных. Я пытался. Но мне сказали что такой локали не существует. Как можно посмотреть существующие локали? Напомню что у меня шиндоуз 8.1
>>1055228locale -a выдает ошибка синтаксиса
>>1055381Ну тип любой базовый курс по базам, если нашёл.
>>1055381все зависит от объема, думаю в минимальном объеме нужно освоить селект, условие where, group by, having, join разных видов,операторы union, in, exists. Агрегатные функции: sum, min, max. DML зачем аналитику? оптимизация тоже мимо и архитектура.
Бамп
Шалом? Все на 100к+ устроились? Давно не заходил.Как думаете, триггеры в оракле запускают автономную транзакцию или нет?Если у меня триггер висит на таблице бефор инсерт, в транзакции я делаю инсерт в эту таблицу, смогу ли я операторать в триггере с данными, которые появились в этой транзакции в другой таблице?
>>1058454Привет, а ты хорош. Устроился на 100к, теперь сижу, чешу репу думая над вопросом. Автономку в триггере можно использовать, прозреваю здесь подвох в мутации таблицы - т.е. нельзя изменять данные в таблице, на которой висит триггер. А так вроде нет противопоказаний для автономок. В условии второго вопросаподразумевается, что в транзакции выполняется инсерт в две таблицы, и на одной из них висит триггер before? Думаю, если сначал происходит инсерт в таблицу без триггера, то эти эти новые данные уже можно использовать в триггере другой таблицы. Без гугла, если че.
Привет, есть следующая функция на пике, если в качестве параметра передавать clob, длина которого превышает 32767 символов, то на 10й строке функции возникает ошибка:ORA-06502: PL/SQL: ошибка числа или значения.Чому так? Ведь в цикле берется часть клоба, не превышающая максимальный размер varchar2. База если что в utf-8.
>>1034303 (OP)В пограммировании я 0, так что строго не судитеРебята хэлп.Есть база SQLite 3 версии, есть там таблица и куча данных в ней, например 100.test.net101.test.net102.test.netИ тдКак мне одним махом заменить test.net на test.org во всех строках? Руками редактировать не реально там более 3к строк, желательно в какой нибудь проге под винду. Пробывал в SQLite expert но нехрена разобраться немногу, получается только руками каждую строку отдельно.Желательно что бы как в текстовом редакторе, типа: найти > заменить все ))
>>1058682Update tSet t.field = replace(t.field,'.net','.org')
>>1058688Где мне это вводить?)))Я потому и просил прогу под винду или какие то подробные инструкции для ламеров
>>1058688помогли в соседней теме, твоя команда должна была подойти, спасибо
>>1058645Посмотрел пакет SYS.STANDART в нем SUBSTR перегружается для строки в CLOB и возвращает тоже CLOB, а utl_raw.cast_to_raw требует varchar2. Похоже в случае, если символов в p_env не больше 32767, то вызывается версия SUBSTR возвращающая varchar2, а для большей строки возвращается clob. Но тогда почему ошибка связанная с числом?
>>1034303 (OP)Допустим, я сделал таблицу и в ней столбец col1 - INTEGERв него можно внести и целое число, и текст. Если в часть строк будет внесён текст, а в часть целые числа, может ли это вызвать какие-то ошибки ? Мне пока нужно только сумма подсчитывать, и функция SUM считает только сумму строк с числам, то есть работает так, как мне надо. Но мало ли что.Использую Python и SQLite
>>1058819Ты не можешь заполнить integer текстом, Ты только можешь написать запрос на инсерт с цифрами в кавычках, типа '1'Но инсертиться все равно будут числа.
Подскажите, пожалуйста.На ресурсе http://sql-tutorial.ru/ru/book_simple_select_statement/page1.htmlупотребляются термины - "Вертикальная проекция таблицы", "вертикальная выборка". Что это означает? Не могу уловить суть.В других учебниках еще не рылся, может кто-то из анонов на понятийном уровне разъяснит, чем отличается вертикальная выборка от горизонтальной. А я пока пойду дальше теорию читать да упражнения делать
>>1058951Судя по контексту, имеется в виду выборка без условия where. Т.е. "прореживаем" таблицу только по вертикали, указывая колонки в select. Может термин из реляционной алгебры.>>1058645>>1058776Решил проблему, может пригодится кому. Нужно было уменьшить количество символов возвращаемой подстроки в substr(p_env, i, 32767), т.к. если символов было 32767, то длина строки в байтах могла превышать 32 кб. Подозреваю, что в p_env были символы занимающие больше одного байта, т.к. база в юникоде.
>>1058825в mysql3 вставляется. Вопрос в том, какие ошибки из-за этого могут вылезти ?--------Query executed successfully: UPDATE total SET vsego='нет данных' WHERE ok=999 AND god='2014/2015' (took 1ms, 1 rows affected)---------
>>1059031Может все-таки происходит неявное приведение к чилсу? Это же вообще по пизде идет типизация данных при таком подходе
>>1059093FIX это sqlite3 возможно дело вот в чёмhttps://sqlite.org/datatype3.html------Any column in an SQLite version 3 database, except an INTEGER PRIMARY KEY column, may be used to store a value of any storage class.All values in SQL statements, whether they are literals embedded in SQL statement text or parameters bound to precompiled SQL statements have an implicit storage class. Under circumstances described below, the database engine may convert values between numeric storage classes (INTEGER and REAL) and TEXT during query execution. ------
>>1052465100к можешь выбить в дс(Из личного опыта)50 дают просто за знания основ джойнов
Вопрос к тем, кто работает с Oracle,У нас препод поднимал университетский сервер (видимо на железе, которое стоит в универе) и всем студентам сделал аккаунты и базу данных, что бы они заходили туда и тренировались на нихКороче, мой аккаунт просрочен:A database warning was encountered performing the requested operation:ORA-28002: дата действия пароля ист28002. 00000 - "the password will expire within %s days"Cause: The user's account is about to expire and the password needs to be changedAction: change the password or contact the DBAVendor code 28002пытаюсь выполнить элементарную команду,мне выдает:ORA-00942: таблица или представление пользователя не существуетСами таблицы я могу спокойно просматривать, но манипулировать с данными не могуНе хочу писать преподу, да и ответит он только когда я лично подойду и спрошу его.Есть ли способ как-то скопировать все эти данные и создать на локальном хосте точно такую же базу данных, что бы с ней тренироваться?
>>1059799Конечно есть. У препода дамп базы просишь.
>>1059799Напиши преподавателю, придурок, и не мучай мозг и клавиатуру.
Насколько WITH эффективен в плане скорости по сравнению с джоином запроса в самом селекте. Оптимизацию запросов только начал осваивать.
>>1060338Возможно, что никак не отличается. В нормальной СУБД вроде MS SQL будет оптимизировано. Какой-нибудь MySQL вообще по оптимизациям слаб, можно с каким-то запросом промахнуться в этом плане.
>>1060338Одна хуйня, и то, и то подзапрос, оптимизатор будет их одинакого воспринимать.Просто у подзапроса есть свои фичи, например, использование его в outer apply в мс скл, а в сте можно юзать рекурсии.
>>1060561А что не хуйня?>>1060455Так случилось что сейчас работаю с постгрес после божественного оракла.
>>1060623Тогда глянь, что мне гугол выдал:https://blog.2ndquadrant.com/postgresql-ctes-are-optimization-fences/https://dba.stackexchange.com/questions/84760/why-is-the-cte-much-worse-than-inline-subqueries
Привет, призываю ораклистов в тред. Подскажите, пожалуйста, по проблеме производительности. Периодически возникает следующая ситуация: возрастает нагрузка на диски, почти 100%, рефреш матвьюх подвисает и возникают блокировки пользовательских сессий, причем блокируют пользовательские сессии также пользовательские сессии. Некоторые запросы таких сесиий висят по двое суток. После того, как убиваем эти блокирующие сессии и джобы рефреша матвьюх, тормоза уходят. Я это объясняю тем, что в тех сессиях, которые висят по несколько дней есть жуткий запрос и, возможно, dml, которые блочат другие сессии, следовательно пока есть блокировка, транзакции пользователей подвисают (например сессия, которая делает апдейт таблицы, указывается как блокирующая для нескольких других сессий) а мне говорят, что я хуй, не шарящий в локах, и проблема скорее всего в матвьюхах, которые при рефреше жрут диск. Хотел б попросить совета, как мне точно определить причину того, что процессы БД упираются в доступ к диску и грузят его на 100%? Из доступных инструментов есть только трассировка сессии и tkprof, доступа к Enterprise managerу нет.
>>1034303 (OP)Оп, поясни позязя, а зачем столько лишних телодвижений выполняет на оп-пике? Разве это быстрее будет, чем просто удаление по фильтру?
Есть один сайт на битрексе , бд кодировка-сравнние utf8_unicode_ci .Когда пользователь оставляет сообщения с яблока или андроида содержащие в себе, так называемые emoji смайлы , то текст сообщения сохраняется( в бд и сответсвенно нормально выводится другим пользователям ) , a emoji смайлы вырезаются из сообщения и не сохраняются в бд. Понятно что нужно менять,кодировку-сравнение соеденения и таблиц БД на utf8mb4_unicode_ci учитывая что индексы по полям типа VARCHAR ИЗМЕНЯТ СВОЮ ДИННУ С 255 НА 191( ибо символ станет занимать 4 байта вместо трех) и прочие прелести?
>>1061404Оп-пик для привлечения внимания:3 в нем наитупейший запрос для демонстраци того, насколько неоптимально иногда пишут люди.
>>1061380>ВОЗМОЖНО С ДМЛЛул, посмотри профайлером, что там выполняется, не тупи.
>>1061658Бро, это не так просто, т.к. еще нужно определить, какая именно программная единица запускается, я судил по тому, что выполняется в данный момент в сессии и это был апдейт таблицы, сессия лочила другие. Мне тут даже важнее знать, правильно ли я понимаю принцип работы блокировок.
>>1061801Окей, принципы работы блокировок зависят от уровня изоляции транзакций, по умолчанию стоит read committed в реляционных транзакционных субд. Можешт почитать про него и понять, какие операции какие уровни блокировок вызывают.Например, update будет лочить всю таблицу, если на ней нет кластерного индекса. Если же он есть, то лочиться будут только те строки, которые этому апдейту подлежат.
Какую программу скачать, чтобы ебашить базы данных? Нихуя не понятно, БД это же блядь простая тема, а как читаю какой-либо материал, связанный с SQL, то у меня сразу возникает чувство, что кто-то решил поввыебываться.
>>1061913>программу для баз данных>выебываютсяСкачивай database.exe, тут в треде только понты разводят.
>>1061917Вот ты иди нахуй.
>>1061913Скачай MS SQL Server минимум 2015 версии и не спрашивай: 'почему?'
>>1061913в го и шахматах тоже правила не сложные
>>1034303 (OP)Сап /pr, есть одна лаба. Нужно из цитаты выделить предметную область, построить инфологическую модель, в общем полностью реализовать базу данных, имеющую +- 10 сущностей и как минимум одну связь многие ко многим. Офк использование той или иной сущности всегда должно быть оправдано. Мне нужна помощь с инфологической моделью, собственна сам сабж:Первые данные оптических наблюдений поступили спустя несколько минут после сообщения "Леонова"; непосредственные контакты начались уже через считанные часы. Бывший биржевой клерк прогуливал своего бульдога по Йоркшир-Мурз, когда рядом с ним приземлился дисковидный космический корабль и энлонавт, выглядевший - если не считать заостренных ушей - совсем как человек, осведомился, как попасть на Даунинг-стрит. Представитель человечества был поражен настолько, что смог лишь махнуть тростью в направлении Уайтхолла. Истинность происшедшего подтверждал тот факт, что бульдог теперь отказывается от пищи.Пикрелейт - моя уебищная модель, желтым выделена сущность, которую я бы хотел прицепить, но не особо понимаю как это сделать правильно, и момент в котором кажется проебалсявся модельВозможно, лучше стержневой сущностью делать не контакт, а улицу и переделывать все ? Покидайте идей пожалуйста, что тут можно пофиксить язык - postgre
>>10621442000 руб. Срок 2 дн. Идет?
>>1062164На что тебе срок 2 дня? Модель придумать? Ты откуда такой взялся?
>>1062144Обстоятельства контакта - звучит как таблица, в которую вообще всё можно запихнуть, что связано непосредственно с контактом. Связи с действующим лицом может и не быть. Например, в городе шёл сильный дождь (разве что ты в действующее лицо город вставишь, что не совсем так). Так что это скорее всего 1 контакт - много обстоятельств.Не понятно, зачем таблица значение (контакта?) к улице. Я думаю, что это по сути тоже самое, что последствия контакта.У контакта несколько действующих лиц, у разных контактов могут быть одни и те же действующие лица, на лицо связь N:N. В промежуточной таблице можно хранить состояние действующего лица на момент данного контакта (то, что ты хотел в обстоятельства контакта вставить, по сути это и есть обстоятельства контакта в твоём смысле).
Суп. Есть две таблицы, в обеих есть поле ID. Нужно взять из первой ФИО, дату рождения и объединить с адресом из второй таблицы где ID из первой таблицы совпадает с ID из второй таблицы. Как это сделать?
>>1062224Какой-нибудь JOIN.
>>1062227Тебе че, сука, сложно написать нормальный ответ?
>>1062271Какой вопрос - такой и ответ blyad
>>1062224SELECTТаблица1.ФИО,Таблица1.ДатаРождения,Таблица2.АдресFROM Таблица1JOIN Таблица2 ON Таблица1.ID = Таблица2.ID
>>1062224table1.id, table1.fio, table1.drtable2.id, table2.addressSELECT table1.id, table1.fio, table1.dr, table2.address FROM table1, table2 WHERE table1.id=table2.id AND table1.id=... (или table1.id IN(......))илиSELECT table1.id, table1.fio, table1.dr FROM table1INNER JOIN table2 ON(table1.id=table2.id)WHERE table1.id=.......
>>1062144Где удобнее всего пилить такие диаграммы?
>>1062396Из классики - erwin.
>>1034303 (OP)Помогите понять как в Оракле числа прибавляются к датам.например сейчас 15.09.17 18:08SELECT SYSDATE + 5FROM DUALрезультат будет 20.09.17а вот еслиSELECT SYSDATE + 5.5FROM DUALТам единица считается за 24 часа и в зависимости от того сколько сейчас времени будет прибавляться +5 дней и +12 часов, то есть 21.09.17 ???
Я вообще не понимаю, почему если хочу сделать бд, я должен куда-то коннектится, какие-то хосты, порты указывать. Почему я не могу просто в клиенте написать код, выполнить и получить результат?
>>1062407А позволь поинтересоваться, где у тебя в таком случае будут физически храниться данные?
>>1062409На компуктере же. Ну может, там надо будет указывать адрес-имя-пароль, чтобы типа как в настоящей бд.
>>1062413Ну значит у тебя будет localhost, в чем проблема-то?Не всегда можно все данные иметь на своём кампутере, представь, что объём данный настолько велик, что для его хранения нужен целый датацентр с кучей серверов
Я просто начал изучать SQL и у меня такое чувство, что я что-то упускаю, и ни в одном уроке этого нет. Скачал оракл sqldeveloper, запускаю, пытаюсь создать соединение, а у меня выходит ошибка: The Network Adapter could not establish the connection. Гуглю, а там ничего не понятно.
>>1062415Посмотри через консоль кто занял порт, который ты указываешь и отключи потом эту службу
>>1062407библиотека sqlite3, должна быть для всех основных языков. База создаётся в файле или памяти.
>>1062405бамп
>>10624171521 порт, никто его не занимает.
>>1062405>>1062429sysdate: текущее времяsysdate + 1: это +1 сутки.sysdate + 1/24: +1 час это 1/241 минута 1/24/60 и т.д.В твоем случае 5.5 это как 5 дней + 12/24 (0.5) = 12 часов.
>>1062449Ну и как результат15.09.2017 18:08 + 5.5 = 21.09.2017 06:08а вот еслиselect trunc(sysdate) + 5.5 то будет 20.09.2017 12:00
>>1062164Орнул>>10622201.Обстоятельства контакта, это то при каких событиях произошла встреча человека и нло. там написано же, что это. ( красный текст) Про независимые природные явления в цитате не говорится, собствена поэтому я не понимаю, почему ты считаешь, что связи с действующим лицом может не быть, эта таблица по сути то, как лица столкнулись вообще. >Так что это скорее всего 1 контакт - много обстоятельств. Не совсем понял, о чем ты. (?)2. Таблица значение - значение улицы в контакте. Йоркшир-Мурз - место встречиДаунинг-стрит.- цель контактаУайтхолл - результат контакта Думаю теперь понятно, что это не одно и то жеНо вот тут меня как раз смущает, что возможно, место, цель и результат как раз нужно пилить отдельными сущностями, но тогда модель вообще другая будет, да и у меня не получилось ее так запилить3. Годно, спасибо Пикрелейт, так? Тогда к чему лучше прицепить последствие контакта? К обстоятельствам? >>1062396https://go.gliffy.com/go/html5/launch
>>1062455>1.Я воспринял эту таблицу масштабнее, как контекст.>3.Если ты последствия относительно действующих лиц берёшь, то можно туда же запихнуть. А можно в параллельную таблицу. Тогда появится какое-то место для манёвра. Например, последствия имели влияние на других людей. Или с собакой было всё нормально, никаких последствий.>2.Место встречи ты уже слил в контакт. Текущая цель контакта явно зависит от времени и места, что однозначно определяется контактом. Обстоятельства контакта хорошо подходят, можно опять же отдельную таблицу сделать, которая будет зависеть от обстоятельства или непосредственно от контакта и лица.Результат аналогично, только от последствий цепляться.
Синтаксис MySQL сильно отличается от Oracle?
>>1062550Даже если отличается- не похуй ли? Все реляционки одинаковые +\-. Знаешь одну, разберешься и с другой.
>>1062570У меня просто есть скрипт для одного, а работать, возможно, придется в другом.
>>1062570Все одинаковые, да только дьявол в мелочах.>>1062573Ты конкретнее говори. Для начала - ты скрипты оракла хочешь адаптировать к mysql или наоборот?
>>1062577>ты скрипты оракла хочешь адаптировать к mysqlДа.
>>1062578Тебе зачем? Миграция бд или просто оракл ставить не хочешь, да на орм надеешься?В оракле по иному обрабатывается null, свой набор функций в sql-движке (nvl2, decode..), есть свой синтаксис для джоинов, который некоторые уникумы даже используют. Также всякие мелочи, вроде аналитических функций, rownum, rowid, и это я не коснулся pl/sql, aq, pipeline-функций, хранимок на джаве, xmldb и кучи dbms_*. Имхо, даже на db2 при всей его совместимости с ораклом не всё может быть гладко.
>>1062578Но в целом, пока держишься в рамках стандарта, больших проблем быть не должно, помни только про null и rownum
Нубский вопрос. Есть две таблицы: пользователи и мероприятия, пользователь может участвовать во многих мероприятиях, при участии в мероприятии пользователь может менять цифровое значение связанное с этим мероприятием, отдельное для каждого мероприятия. Как это лучше реализовать? Создать отдельную таблицу вида "пк мероприятие значение" и в таблице пользователей давать ссылку на нужные пк?
>>1062594Третья таблица с композитным ключом пользователь+мероприятие, там твои значения цифровые.
>>1062594Классика- связь 'один- ко- многим'. Две таблицы:1. UsersКолонки.Id bigintName varchar 128Comment varchar2. MeetingКолонки.Id bigintUserid bigintMeeteengDescr varchar 256Связь по user.id = meeting.userid
>>1062699> с композитным ключомНахуй. Только суррогатный ключ и два FK, только хардкор.
>>1062780Поясни, почему, я теоретик полный в БД, мог и в лужу пердануть
>>1062415Хотя я кажется понял. У меня же интернет через роутер подключен. Может быть в этом проблема?
>>1062898Хотя если напрямую подключить, ничего не меняется. Блядь. Никак с локалхостом не получается соединиться.
Ну и жопа эти ваши бд.
>>1062908Тебе выше мудрый анон уже посоветовал: потыкай палочкой библиотеку sqlite3.
>>1062928Я не умею тыкать библиотеки. Сейчас поставлю MySQL, там-то уж точно все просто.
>>1062415Оракловый клиент установлен? в tnsnames прописан локалхост?Пацики, кто-нибудь работал с языком PL/PLUS? Если кто не в курсе, то это встроенный язык для АБС, на основе pl/sql. Что из себя представляет ваша работа?
>>1062983>Оракловый клиент установлен? в tnsnames прописан локалхост?Нет, но я уже понял, что я просто не установил все, что нужно. И даже мигратор с оракла на MySQL нашел.
Вечер в хату, SQL-щики. Есть какие-то универсальные способы оптимизации запроса SELECT * FROM <table> в MySQL? Немного обидно, что всякое говно с индексацией занимает примерно 0.01-0.02 сек, а запрос вообще без поиска 2 сек, а то и больше. Что здесь кривое? Руки, железо, язык (с#, .NET Connnector)? Чем посоветуете обмазаться?
>>1063835Подчеркну: только SELECT * FROM <table>. Без продолжения, без условий, сортировки и прочего.
Блин, как включить нумерацию строк а Oracle developer?
Чет оракл дохуя памяти жрет, даже когда все выключено. Есть какие-нибудь способы это пофиксить? А то каждый раз после выхода отрубать оракловскую sql службу лень.
>>1063835Это тротлинг или ты тупой?Ты ж всю таблицу выбираешь при таком запросе, а при фильтрации - не всю.
>>1064047Это не троллинг. Вообще-то кроме самого синтаксиса есть еще схемы, кеширование и много разной хрени. Например, а что если MyISAM лучше InnoDB для конкретных типов запросов? Вот и спрашиваю у спецов
>>1063835Мнрго факторов:1. Размер таблицы (типы данных каждого поля)Например, если у тебя в таблице куча полей nvarchar(4000), то выбираться будет долго жлементарно из-за твоей скорости инета2. Скорость соединения - селект будет идти до хуя долго при скорости 0.00001 кбит/сек, а индексация происходит на сервера, там важна только скорость записи и чтения на диске, она зачастую в разы выше скорости инета3. Однозначно не могу сказать, но бывает, что сортированные данные выбираются быстрее, чем просто куча - гугли index scan vs table scan4. Хочешь быстро выбрать и уверен, что со скоростью инета у тебя все збс? Тогда выбирай в несколько потоков внутри приложения, например, в таблице 20 тыщ строк, в одном потоке выбираешь 10 тыщ и одновременно с этим во втором потоке - тоже 10 тыщ. Если же у тебя отчет, который каждый раз селектит все из таблицы, у меня для тебя плохие новости. Пользователю не нужны сразу все данные, параметр зуй запрос и заставь юзера выбирать данные только по срезам.Собсна, все.
>>1064102А, ну и коннектор, хз, что ты там юзаешь, надеюсь, не OLEDB (мы ж про дот нет говорим), адо.нет общепризнанно работает быстрее.
Есть большой массив с кучей текстовых айди в БД, а есть второй такой же маленький. Нужно узнать, какие из айди в этом маленьком присутствуют в базе данных. Как такое лучше всего и правильно сделать? Конкретной бд никакой ещё нет, просто пришло время перекатываться с сохраняемых на диск json'ов, поэтому если хранить один большой массив это не круто, готов поменять.
>>1064151Сгенерить запрос, который кладет айдишники из массива во временную таблицу, а потом переджойнить реальную таблтцу с временной по айдишникам, ну или просто взять except-ом записи из реальной таблицы и временной.
>>1064163Звучит как-то громоздно создавать-джоинить-удалять таблицы. (Или нет, я вообще понятия не имею.) Мне это не один раз сделать, а при каждом открытии страницы / запросе пользователя. "Большой" это я, возможно, преувеличил, там не миллионы элементом, а тысячи. А маленький несколько десятков/сотня.>просто взять except-ом В смысле intersect'ом? А то иначе совсем не то будет.
>>1064181Прост inner джоинишь в лоб по id + group или distinct. Ещё можно union по id
Привет, котоны. Вопрос наверное избитый, но все же спрошу, мало ли есть какой-то универсальный вариант. Суть такова: пилю сайт каталога товаров, товары разные, с разными характеристиками. Пока все они нормально разбиваются на категории и подкатегории. Характеристики товаров разных категорий и подкатегорий совершенно разные и мне нужно придумать структуру БД, которая позволила бы отображать на странице каталога список товаров с удобным фильтром, типа как здесь: http://www.nix.ru/price/index.html.Есть, например, категория "Жесткие диски". В ней подкатегории: "Seagate", "Toshiba", "WD". Пользователь из общего каталога товаров переходит в категории "жесткие дески", из нее в категорию "WD" и там видит полный список всех жестких дисков производителя WD. А также панель фильтров, например: "Серия", "Емкость", "Интерфейс". Поставив галочку на "2Тб" в фильтре ему будут показываться жесткие диски производителя WD с емкостью 2Тб. Поставив дополнительную галочку на "Black" ему будут показываться жесткие диски производителя WD, емкостью 2Тб и серии Black. И так далее. Какую наиболее простую структуру БД для этого составить? Пока из вариантов следующие таблицы: "Категория", "Товар" и по одной таблице на каждую подкатегорию со своим набором характеристик.
>>1064188Но входные данные ("маленький массив") у меня не в базе данных. Мне, получается, нужно:1. создать таблицу2. заполнить её новымы данными3. заджоинить её с основной4. достать все оставшиеся значения из этой получившейся5. удалить всё лишнее (я не в курсе, создаётся ли на третьем шаге третья или изменяется одна из двух)Это норм?
>>1064197Что мешает хранить данные в базе? Поддерживать одновременно таблицу и файл?
>>1064189А, все, отбой. Придумал структуру.
>>1064197Ну раз уж на то пошло, то проверь этот метод. Может тебе будет как раз.
>>1064197Да, все верно расписал, я бы так и сделал.
>>1064007Бамп
Ньюфаг в треде, подскажите, считается ли зашкваром создавать под каждого юзера приложения пачку бд вида юзер1.френдс, юзер1.задачи итд. Или как это правильно организовать? mysql 5.7, php
>>1064464Зашквар.
>>1064470А как правильно организовать? Дайте статью хотя бы, нагуглить не могу.Есть таблица юзеров, на каждого юзера нужен список им созданных задач( каждая из которых тоже список ключ-значение), например.
>>1064471Ну так и сделай в таблице с задачами ссылку на пользователя, шо ты, в самом деле>task_id>user_id
Чем отличаются коррелированный подзапрос от некоррелированного?
>>1035594Работаю в п.2. Хуячу ETL(обычно помесь Informatica PowerCenter, shell скриптов, самописных хранимых процедур), документирую их.Также решаю более "аналитические" задачи - нужно через мутные разговоры с аналитиками, разрабами и менеджерами всех мастей разобраться, где что лежит в определенной удаленной БД и как получить оттуда нужные данные, которые бы удовлетворили заказчика. ПОдробнее описывать лень и получится слишком уж конкретно...
>>1064933Тем, что в коррелированном подзапросе ты обязательно указываешь связь с данными из внешнего запроса, то есть, у тебя для каждой строчки внешнего запроса могут получиться различные результаты, возвращаемые подзапросом. А некоррелированный всегда возвращает одно и то же.
Сап. Можно как - то в sql создать таблицу как на пике?
>>1065392Нет, в реляционной базе данных каждая таблица состоит из строк, такая хуйня возможна только в объектной - документной бд путем укладывания туда json-a, xml-a или чего-то подобного. Другое дело, что некоторые реляционные субд уже прддерживают такую фичу, например, ms sql, постгрес там.Под поддерживают я имею в виду не просто возможность положить строку в формате джейсона, но еще и набор функций для того, чтобы что-то конкретное оттуда потом достать.
Добрый вечер.Есть достаточно большой опыт етл дева, оркл, инфа, пл скл, оптимизация, отчетики сап бо.Не так давно начал перекат в бигдата - мапредюс, Спарк и прочее. Пишу говнокод на Ява-скала.Какой вариант развития лучше? какой уровень ЗП можно получить в том же дс как реляционщику,, каковы перспективы, потолок?По личному - от скл и информатики тошнит, все время считал это зашквар и комплексовал что не программист.Заодно, что посоветуете?
>>1065546Так иди в тред про машобчик, там тебе посоны за все пояснят, нас ты уже перерос, думаю.
>>1065401Спасибо, анон
Pl/SQLОшибки не выдает, однако ожидаемых действий (изменения в столбце description таблицы products) нету.Что я делаю не так? Пробовал вместо pdata делать массив - выбивает ошибки.CREATE OR REPLACE PROCEDURE DescPrice(idMFR IN NUMBER, point_price IN NUMBER )ISstr_cheap VARCHAR2 (50);str_exp VARCHAR2 (50);pdata NUMBER(4,0);BEGIN str_cheap := 'Дешевый товар';str_exp := 'Дорогой товар';SELECT PRODUCT_ID INTO pdata FROM PRODUCTS WHERE MFR_ID = &idMFR AND price > &point_price;UPDATE PRODUCTS SET description = str_exp WHERE PRODUCT_ID = pdata;UPDATE PRODUCTS SET description = str_cheap WHERE PRODUCT_ID != pdata AND MFR_ID = idMFR;dbms_output.put_line(pdata);END DescPrice;
Еще вопрос - как сделать, чтоб функция возвращала коллекцию?При попытке написать при обьявлении return collection_name пишет, что нельзя использовать необьявленный тип.
Сап, не видел ли кто в интернетах бдшку со списком всех книг (хотя бы русских/англоязычных), с указательством автора?
>>1065794Окей, нашел список литературы в ISBN (https://www.books-by-isbn.com/cg-russian_federation_and_ex_ussr.html), может ли кто подсказать, как оттуда можно выкачать весь этот список и как-то засунуть их в БДшку?
>>1065796Нужно писать скрипт на каком-нибудь ЯП и потом из него вносить данные в БД.
Аноны, есть база на постгресе, и в ней есть табличка с полем parse_time формата TIME, в базах не особо силён, но не могу понять, какого хрена не делается выборка по времени?Толкните меня в нужную сторону или расскажите в чём проблема.
Как предусмотреть ввод пользователем года равного нулю?Почему то что я написал выдаёт ошибку на втором пике?
Как с помощью WITH ... AS()сделать таблицу, с которой можно было бы совершать команды DML, например, как соединить эти 2 строчки на пике
>>1065847Попробуй привести строку к типу time ('23:03:06'::time)
>>1065861Ни хуя не понятно, где предусмотреть? Приведи кейс и описание фрагмета своего приложения.>>1065867Ну это, вообще, ПУШКА, Конструкция with - это такой подзапрос, ты не можешь выполнять с ней операции dml, для этого тебе нужно создать временную таблицу.
>>1065888>Приведи кейс и описание фрагмета своего приложенияПриложение это решение задачи:В 1845 году в США была установлена традиция, согласно которой выборы президента проводятся во вторник после первого понедельника ноября в год, делящийся на 4 без остатка. Определить, дату ближайших к заданной дате президентских выборов в США.Я не буду приводить весь код, что бы не сбивать с толку, а дам только неработающую ветку в операторе ветвленияя предусмотрел все варианты, кроме одного - когда пользователь введет дату с нулывым годом , в принципе, нулевого года не существует по григорианскому календарю, в оракле он тоже судя по всему не проходит,поэтому я пытаюсь отловить этот год на этапе ввода данных, но не знаю как мне вычленить из вормата 'DD.MM.SYYYY' год SYYYY и сравнить его с нулем и выбросить строку 'NEPRAVILNO'https://pastebin.com/m8zwMSnaкакой же неудобный синтаксис, какие же костыли, я бы эту задачу на си в секунду бы решил, логика-то решения ясна, а как это записать в ебанутом синтаксисе непонятно>>1065888а если я так напишуCREATE TABLE MY_EMPLOYEE(ID NUMBER(4) CONSTRAINT MY_EMPLOYEE_ID_NN NOT NULL, LAST_NAME VARCHAR2(25), FIRST_NAME VARCHAR2(25), USERID VARCHAR2(8), SALARY NUMBER(9,2));это временная или обычная?чем они отличаются вообще кроме названия
>>1065896>на этапе ввода данныхв приведенном коде этого нет, это просто моя догадка)можно сделать еще один case для первого столбца, но проблема все та же, как вычленить число SYYYY из DD.MM.SYYYY при вводе данныхя ведь ввожу как бы строку?
>>1065886Не помогло.Сделал просто через:SELECT * FROM packetsWHERE parse_time >= '23:03:06'И всё ок, мне в принципе подходит такое решение.Но всё же странно что оно так вот работает.
>>1065546меня от SQL не тошнит, но в биг дату получше влиться тоже желаю. Сейчас по англоязчным туториалам развернул себе одноузловый "кластер" и потестил его. Сейчас смотрю как на питоне map-reduce джобы писать. Наверное на джаве тоже придется научиться.По мне так это наверное будет не перекат, просто расширение навыков. А роль похожа - ETL, оптимизация "запросов"(которые за кулисами - мапредьюс) и т.д.
>>1065904Вангую, что в тайм есть еще милисекунды, которые лежат в табличке, но в результате твоего первого селекта не выводятся.
>>1065944Только придется еще в матстате и эконометрике прошариться, потому что чел, который занимается багдатой, но не умеет исследовать данные, нахуй никому не нужен.
>>1065953Ну, тащемта, на это есть датасаенс и датасаентисты, не? Или ты единорогом хочешь стать?
>>1065955Сужу по опыту, вижу, что те, кто занимается анализом бигдатыи машилернингом, как раз и выступают в роли разработчиков, у меня в конторе так, больше скажу, ходил на конференции мейл.сру, так дела обстоят точно так же. Просто делюсь инфой, если хотите, учите спарки с мэпредьюсами без математики, никто ж не запрещает.
>>1065972Я в большой телеком компании; на мой взгляд всё же есть тенденция всё же к разделению труда, где есть более-менее четкие роли санетистов и инженеров.Мне в принципе пох, мне интересны обе стороны медали. Спасибо за информацию
>>1065972Разделение у меня тоже есть. Писать етл и модели - все таки разные вещи. По вакансиям вроде где как. Где то хотят мл где то нет. Конечно не лишним будет.
>>1065951Нет, милисекунд нету, я в таблицу передаю именно чч/мм/сс и всё.
>>1065996p.s. Я глядул код, в принципе что-то такое есть. Только я передаю БД строку формата datetime и она уже её делит на дату и время. Но всё равно там милисекунд нет. Странно.
>>1034303 (OP)Привет, котоны. Есть база товаров, нужно составить к ней запрос, который возвращал бы что-нибудь вроде этого:1. Количество портов 1. 12 2. 24 3. 482. Производитель 1. Cisco 2. SNR 3. Asus3. Скорость коммутационной матрицы 1. 48 Гбит/с 2. 64 Гбит/сЗапрос, который я составил возвращает следующее:1. Количество портов 122. Количество портов 243. Количество портов 484. Производитель Cisco5. Производитель SNR6. Производитель Asus7.Скорость коммутационной матрицы 48 Гбит/с8. Скорость коммутационной матрицы 64 Гбит/сИспользуя данную выборку я буду составлять панель фильтрации товаров на сайте в идеале двумя циклами:Цикл по характеристикам{Имя характеристикиЦикл по значениям {Значение характеристики}}Как мне правильно составить запрос, аноны? Пишу на PHP +Laravel.
>>1066628Структуру результата прозрачнее представь. У тебя есть строки и столбцы, у каждой строки есть свой уникальный номер, как во втором результате, а не 1,2,3,1,2,3... Тогда может быть ты сможешь сам решить.
Пытаюсь построить сводную таблицу из модели данных Power Pivot. Не могу понять почему за 21 сентября данные нормально отображаются, а 20 сентября - (пусто). Хотя все данные из одного файла и вроде тип поставлен у них дата. Почему же появилась графа пусто?
>>1066713Очевидно, там есть пустые значения в исходных данных, посмотри просто их и фильтрани, там дрлжно быть где-то пусто.Понту юзать PowerQuery, если честно, никакого не вижу, больше респектую стандартное подключение к ms sql.
>>1064276поделись тогда, я вот не придумао
>>1065665а где commit?
>>1065701тебе нужно создать тип на уровне Бд, т.е. как объект схемы, тогда можно в скл запросах использовать эту функцию как таблицу. Ассоциативные массивы таким образом использовать нельзя.
Соси хуй
>>1067102>>1066628
>>1066628Так, ладно. С этим я разобрался. Теперь мне нужна помощь в другом. Нужно составить следующий запрос: Допустим клиент в фильтре выбрал свойство 1 и значения для него 1 и 2, свойство 2 и значения для него 3 и 4. Как составить запрос, который вернул бы записи всех товаров, у которых в свойстве 1 есть значения 1 и 2, а в свойстве 2 есть значения 3 и 4? У меня запрос какой-то кривой получился, записи дублируются.
>>1067551Лефт джоин, сука
>>1067557Так он же по умолчанию считается как лефт, если явно не указывать.
>>1067561Как inner по умолчанию!!!
>>1067557Кстати, умник, какой смысл в left join'e, если накладывается условие на таблицы, которые джойнятся? Конкретно в этой записи записи запроса inner будет эквивалентен left'у!!!
>>1067566Да пофиг, все равно ничего не изменилось. Может еще какие варианты есть? Разгребать выборку в коде как-то не хочется.
>>1067588Даже макаба возмущена.
>>1067596Ты дибил блядь?У тебя радные строки, одна строка по одному параметру, другая по второмуКакой груп бай бля дибил
>>1067596А вообще нет, нихрена я не решил. Если свойства разные, то идет выборка по каждому из них и товары нормально не фильтруются. Как правильно зделость-то, а?
>>1067607Тебе бля конечный вид какой надоИмя / параметр 1 / параметр 2-------Имя / значение 1 / значение 2Так бля?
>>1067609Гугли короче pivot table, если хочешь красивоЕсли некрасиво то ебись с case, group by и прочим
>>1067609Смотри какая у меня штука.Если я выбираю в параметре "скорость коммутационной матрицы" значение "48 Гбит/с", то должны отображаться только те товары, у которых этот параметр имеет это значение. Соответственно, если помимо этого параметра я еще выбираю в параметре "емкость таблицы MAC-адресов" значение "16к", то должны отображаться только те товары, у которых скорость коммутационной матрицы = 48 Гбит/c и емкость таблицы MAC-адресов = 16к. В пределах одного параметра сейчас отображается все правильно, но если выбрать другие, то все смешивается.
>>1067612Ну ведь это логично.У тебя сейчас каждой строке в таблице соответствует две строки в дополнительных таблицах, отсюда и задвоение.А так как у тебя в запросе OR, он тебе вернет не только строки, которые удовлетворяют обоим условиям, но и те, которые удовлетворяют одному условию.В то же время, замена or на and на первый взгляд нихуя тебе не даст из-за своеобразной структуры.Какой формат вывода тебе нужен, только сами товары, без наименований и значений параметров?В таком случае тебе лучше использовать здесь конструкцию exists:Select * from goodsWhere exists (select по первому параметру из тех таблиц, которые ты джйнишь)And exists (select аналогично по второму)С уважением,топ-ораклист-120к
>>1067649Общая, тебе нужно джойнить дополнительные таблицы столько раз, сколько у тебя параметровИ писать условия через And Это же блядь логично, не правда ли?Что OR значит ИЛИ и выдаст тебе все продукты, у которые удовлетворяют условию 1 ИЛИ условию 2.
>>1067656Так, подожди, сейчас я разгребу что ты мне написал и попробую. А то я ж не топ-ораклист-120к.
>>1067671Разумеется.Хоть я и перестал регулярно мониторить тред, но сегодня посижу, ок.
>>1067678Видимо я вообще не понял как работать с EXISTS и у меня запрос достал вообще все записи из таблицы goods.
>>1067684Ух бля дебилПочитай про экзистНахуй ты ровно свой запрос туда пишешь, это бля как 1=1 написатьСкинь текст, могу отредактировать
>>1067689Нет, не могуКороче у тебя в запросе должно быть условие связки твоей основной таблицы с дополнительными, но джойнить её ещё раз не надоБля ты можешь просто прочитать как работает экзист? Сложно?
Ну и научись таблицы коротко называть
>>1067691Ты с телефона что ли капчуешь, что злой такой? В общем, взгляни на этот запрос - он выдает то, что мне нужно. Но я сейчас как обычно обрадуюсь и поспешу, так что мне нужно твое мнение как профессионала.
>>1067697Всё верно, именно так экзист и используют.Извини, я очень эмоционально нестабилен сейчас.
>>1067699Понятно. Ну тогда большое тебе спасибо за помощь - очень выручил.
>>1067701Обращайся.
я хуею с вопросов, как вы сайтики клепаете, если простой селект не понимаете
>>1067920Ну так ведь клепание сайтиков это для животныхА тру боги клепают отчётность на оракле
>>1067920Простой селект, я думаю, здесь все понимают. А хитровыебанный уже не каждый.
>>1067992ммм, я спокоен за свою карьеоу
>>1068017Расскажи про карьеру
>>1068027карьера чмошника, знающего скл на уровне продвинутого чмошника
>>1068032О,ты это я
>>1068049хуево тебе
>>1065867With cte as ()Insert into t1 Select * from cte>>1065888А вот и нихуя.Вышеознаяенный шаблон изи отработает в sql server 2k12 и выше.В оракле тоже.
>>1068217Либо в разных базах по-разному, либо ты ебаный дебил, потому что в оракле нужно писатьInsertWithSelectВ таком порядке
Чуваки, я запутался. Пилю один опенсорсный прожект, есть два типа данных - обычные табличные данные, в целом с ними ничего не происходит. То есть когда-никогда закинул в новую таблицу очередную порцию и забыл, по этим табличным данным идет сверка других, "живых", данных, которые идут в виде key-value. Сейчас я сижу на постгресе, но меня она почему-то заебала. Диски заебывает докупать. Тридцать гигов закинул в пару таблиц и столько же занял индекс. А еще эти простыни ебанутого sql-кодеса, особенно ебанутого поиска по jsonb. И дело тут не в ORM. И вот я подумываю про съёб на монгу или что-нибудь такое. Хуйня в том, что у меня не только постгрес, у меня тут еще графовая cayley, постгрес для нее идет бекэндом. Читал много негативного про монгу, хуева куча в интернете кулсторей про миграцию с монги на постгрю и одна или две про обратное. Вот что бы вы посоветовали? Стоит рыпаться с постгри или не стоит? Что бы вы сделали на моем месте? Что вы думаете про монгу (только без траллинга, пожалуйста)?
>>1068217тогда я не понимаю, что ты хочешь сделать. Можешь объяснить еще раз нормально?
>>1068316У нас кластер монгос. Зависимость есть, брат жив.
как из обычного join сделать cross join в оракле?то есть select from t1 join t2;по идее долдно работать, но не работает в оракле, что к этому надо добавить,старый синтаксис работает select from t1, t2;это и есть декартово произведентекак сделать то же самое но без клбчегого слова cross, но с join?
>>1068316>Что вы думаете про монгу (только без траллинга, пожалуйста)? что в ней транзакций и хранимок нет, вот что.
>>1068498В ней есть хранимки в виде джаваскрипт-кода.
>>1068497>t1 join t2 on 1=1
Решил наконец попробовать графовую СУБД, начал читать про neo4j и вот уже готов был ставить, как увидел, что она платная оказывается.А она самая популярная и библиотеки под нее есть. Полез смотреть дальше, вроде как следующая популярная это OrientDB. Но под нее уже с либами все гораздно хуже и язык запросов у них какой-то мутный.В общем, что хотел спросить - может еще чего-нибудь посоветуете? Какие решения выбирают для продакшена?
>>1068899А язык какой? У нас, гоферов, есть cayley и dgraph. Кайли умеет в graphql, gizmo и mql, dgraph - graphql. Но если ты раньше не работал с графовыми базами, то любой язык запросов тебе покажется ебанутым потому что ебанутый сам язык, а логика запросов.
>>1069095Воу, я совсем отстал, первый раз про них слышу.Язык руби.Похоже нужно перекатываться.
Анон, привет. Хочу развиваться в сторону работы с данными, администрирования информационных систем. Подскажи какую книгу по дороге в метро можно читать про БД (именно теорию, потому что практические задания/команды нормально изучаются только за ПК)? Если я крайне мало знаю о них. Там про первичные, вторичные ключи и т.д. Сам сейчас изучаю sql и работу в excel (смотрю видосы на ютубе). Подскажи что еще требуется, куда двигаться.
>>1070130>Подскажи какую книгу по дороге в метро можно читать про БД (именно теорию, потому что практические задания/команды нормально изучаются только за ПК)? An Introduction to Database Systems (8th Edition)by C.J. DateLink: http://a.co/frmPMxS
Привет, стоит ли делать файл с подключением к БД на постгре который будут юзать сотрудники когда им, блять, заблагорассудится посмотреть на цифры?
>>1070471* в екселе
Знающие, скажите плиз. Кароч, замес такой. Мне 20, законченная вышка (да, круто, еее). Вышло так, что на 3 курсе случайно нашлась работа и слово за слово работаю полтора года с оракловыми бд и иже с ними. Какие исходные на данный момент: Pl_sql, reports, forms это вот все на таком средненьком (в силу опыта) уровне ну и все, что дал универ (то есть много чего, но крайне слабо). Задумываюсь о том, стоит ли оставаться в этой сфере или перекатиться во что-то другое, более трендовое и распространенное. Есть ли резон сидеть в этом всем. Ну и как обычно, что надо добавить к своему резюме, чтобы было больше шансов считаться нормальным спецом.
>>1070525>Мне 20, законченная вышкаВут?
>>1070471А что такого? Это самый простой способ построить отчет. Если нету системы управления отчетностью, то почему нет?
>>1069095>cayley А что значит, что она в качестве бекенда может использовать другие БД (sql, cassandra, mongo). Это как вообще?
>>1070525Просто расскажу как дела обстоят на рынке. Со знанием только sql и pl/sql выбор не велик: либо отчетики, либо легаси, где логика в БД. Еще можно вкатиться в администрирование Oracle, деньги там есть, а развитие хз. Если знаешь java, то вакансий становится в 10 раз больше, тут уже можно выбирать, есть и легаси, есть и новые проекты. Плюсиком тебе будет то, что ты продвинут в области БД. Короче сумбурно пишу, но я бы на твоем месте выучил распространенный язык и дальше в его экосистеме развивался бы. В случае чего, всегда можно найти говнопроектик для разраба БД. Ну а раз ты такой вундеркинд, то думаю без труда осилишь ту же джаву.
>>1070471Лол, делал такое, только с ораклом и еще в vba раскидывал данные по документам.
>>1070811> javaЗанято.
>>1070813Тебе бутер с икрой или с корку хлеба черствую?
>>1070815Туалетную бумагу передай.
Можно в селекте устанавливать свои значения? Например есть таблица СТУДЕНТЫ и таблица ПИДАРАСЫ. По имени смотрим в таблице ПИДАРАСЫ студентов, если студент есть там, то в таблице СТУДЕНТЫ у этого студента в колонке пидарас ставим крестик.
>>1070811Спасибо за хороший ответ. В таком случае начну копать в этом направлении. Все-таки можно выучить минимум, а потом на работке дотянуть. Плюсик в карму.
>>1071007Либо процедуру напиши, либо триггер на одну из таблиц повесь. А вообще изи задача.
>>1070775Ну типа не сильно ли зашкварно в 2к19 году этим заниматься, и если макаки будут до обморока запрашивать данные, не сильно ли это загрузит бд. Да, я понимаю что всё от размеров и запроса зависит.
>>1071046Не совсем понял. Ты точно правильно понял что я хотел сделать? Мне нужно для всех записей в таблице СТУДЕНТ, которые имеют ключ в таблице ПИДАРАСЫ, изменить поле 'пидарас'.
>>1071058Ну вроде. Если уже есть все таблицы, то пишешь процедуру. В цикле по всем айди студентов :Если селект из пидараса возвращает не пустое значение, то инсерт в студенты крестик, где айди студента такое то. Если вылетит эксепшн, что данных нет ( студент не пидр), то не делай нихуя. Запускаешь процедуру. Профит. Не забудь комиты ставить после инсертов.
Анон, проходил кто на этом сайте курсы?https://openedu.ru/course/spbstu/BIGDATA/
>>1071243Я проходил в прошлом году 2 курса.И прямо сейчас 3 прохожу.Еще штук 11 в очереди (за все сразу не берусь, т.к. не осилю), там обычно перезапуски курсов в феврале и сентябре.Прохожу для расширения кругозора, для себя.Еще нравится stepic.org
>>1071291А сертификат получал?
>>1071293Бесплатный да.Раньше их давали везде.Год не заходил, сейчас где-то только платные дают, где-то как и раньше осталось.Сертификат студентам надо, мне так, бумажка. Я сейчас на трех курсах за которые бесплатные сертификаты вроде не дадут.
>>1070797Бамп вопросу
>>1071048Сделай там set transaction isolation level read uncommitted, пусть хоть обчитаются.пок пок грязные данные, ога
>>1071082Сьеби с треда, быдло>>1071058Нормальные субд позволяют апдейты с джоином:Update sSet s.pidoras='x'From students sJoin pidorasi p on p.student-id = s.student-id
>>1071392В пострге уровни изоляции как в спермосервере? Пиздишь же.
что такое db_link в оракле, можете плиз объяснить
>>1071596Суть - устанавливается связь по сети между двумя разными инстансами, потом можно к примеру селктить из таблиц удаленной БД и вызывать хранимки.
>>1071045Не за что, еще есть как вариант быть разрабом на платформах, которые являются надстройкой над Oracle Db, например платформа для банков ЦФТ со своим PL+. Но это уныние и крайне узкая специализация.
>>1071566В гугле забанен?https://www.postgresql.org/docs/9.3/static/sql-set-transaction.html
>>1070525резон есть. тырпрайзные БД со своими хранимками и репортами всегда там, где есть, _что_ считать и за _что_ отчитываться. это не веб-макакинг никому не нужных приложений (пусть даже сегодня за это платят сжигая деньги, хотя уже не платят). тырпрайзная БД параша никуда не исчезнет никогда. со временем будет только еще больше данных, больше хранимок, энтерпрайза, хардкора. тырпрайзные
> PostgreSQLКогда 1,5кк срок накапливается - вообще хуй дождёшься вывода.Аноны, что почитать за оптимизацию постргреса и вообще про него?Учил его по документации.
>>1071814> full scan всех колонок> бля, хули не секунда
>>1071822Колонок всего лишь 12.Хотя судя по всему...иду ка я нахуй, ты прав.
какой приоритет в создании синонимов у оракла? То есть увидев объект на который надо создать синоним он сначала ищет объект среди таблиц, потом среди предсиавлений итдМожет ли быть PUBLIC синоним с таким же именем как PRIVAT синоним, если да, то как пользователь в своей схеме будет к ним обращаться?
>>1071896Что в доках написано? Если узнаешь, то отпишись. Откуда вы такие вопросы берете? На OCP что-ли готовишься? По логике, private перекрывает public.
>>1072069Приоритет всегда имеет твоя собственная схема, то есть если у тебя есть таблица с именем T1 и существует PUBLIC синоним с именем T1, то приоритет будет отдан таблицев доках не нашел, но увидел упоминание на каком-то форуме и проверил опытным путемНет, просто на учебе задали такой вопрос
Может ли любой пользователь передать право создавать запрос к своей таблице ?
Знатоки Баз данных, ай нид хелпСам в этой теме абсолютно ни фига не шарю, поэтому может моя проблема покажется вам тупой.Попросили запилить сайт на Вордпрессе по-быстрому, я в этом практически нихуя не секу, но решил попробовать. Накатил ЦМСку, залил шаблон (скачал с ТемплейтМонстра), вроде все путем.Потом залил файл БД через ПхпМайАдмин - и пиздец. Не могу зайти в админку Вордпресса. Сам шаблон вроде накатился, все адекватно, но вот что происходит:1) При поптыке войти в админку сайта через "sitename.com/wp-admin" происходит какой-то ебаный редирект на страницу с УРЛом http://sitename.com/wp-admin/sitename.com/wp-admin/upgrade.php?_wp_http_referer=%2Fwp-admin%2FИ, понятное дело, выдает мне 404 страницу2) Если вдруг это поможет определить симптом: при попытке перейти с любой страницы сайта на главную он начинает прибавлять к урлу страницы "sitename.com/". То есть, было: sitename.com/contact, стало sitename.com/contact/sitename.com/, попробуешь еще раз - станет sitename.com/contact/sitename.com/sitename.com/ и т.д.Шо делать, где и как что можно поправить, дабы избежать ебаного редиректа и спокойно попасть в админку? Кстати, на sitename.com/wp-login.php заходить получается, но после того, как залогинюсь, в админку один хуй не пускает
У кого есть скиньте справочник по sql функциям в pdf
>cayley Посоны, что значит, что она в качестве бекенда может использовать другие БД (sql, cassandra, mongo). Это как вообще?
>>1072585Ну использует другую субд для реализации части функционала. Чё тут не понятно?
Друзья, чем можно нарисовать структуру базы данных? Буду использовать PostgreSQL. Нужно просто схема с таблицами и связями, при этом желательно без подключения к базе? Хочу просто пока описать названия + тип (примерно, не писать там float(10, 2), чтобы прикинуть несколько вариантов, без всяких осложнений и конкретики.MySQL Workbench какой-то уебанский, залезла панель у меня куда-то, и не перетаскивается, не могу её выдвинуть. Забагованный короче. DBeaver тоже сыпет Exception'ами, и с ним не очень удобно работать, не поддерживает автокомплит (пишешь seri он подсказывает, мол, serial? жмешь ентер - ошибка, жмешь таб - ошибка, кликаешь - ошибка)
>>1072618сам отвечу, наткнулся вот на что: https://sqldbm.comвроде бесплатно, зарегался, можно сохранить прямо там в облаке. в принципе, то что нужно, жаль что не десктопный софт, структура будет большая, не хочу чтобы на 14 день мне выскачило сообщение об оплате, чтобы открыть доступ.P.S. Если есть такое же удобное но десктоп - сообщите.
>>1072608>Ну использует другую субд для реализации части функционалаВот непонятно, как это. Реализация хранилища же сильно зависит от функционала. А тут графы, такая штука, с которой нельзя эффективно работать в обычных СУБД. И вдруг их используют в качестве хранилища. Интересно как?У меня была мысль, что может они именно данные хранят в БД (ну типа как эластик хранит лексемы или типа того), а для хранения графа используют свою систему.
>>1072631Анон, зря забраковал Воркбенч, он годный и пожалуй самый лучший из бесплатных (а еще он умеет в реверс-инжинеринг). Иногда глючит это правда, но не часто.Другой годный, открытый и универсальный вариант - https://www.draw.io/.
>>1073078Может и можно. Есть же в sql базах всякие модные штуки вроде recursive сte.
Посоны, есть одна интересная задача.Есть таблица сотрудников и там дата добавления результата этого сотрудника. То есть сотрудников добавляет результаты, но добавляет не каждый день. Нужно вывести статистику по сотрудникам, НО те дни когда сотрудники результаты не добавляли должны быть нулями. То есть должны быть все даты. Если через count стату собрать то будут даты только когда были проставлены результаты. Смотрите пик.То есть, есть таблица result (int id, type_result int, id_user int, date_add datetime).Можно сделать таблицу со всеми датами подряд, но как джойнить потом?
>>1073296Джойнить по ключу. А вообще- изъебство, сделай проще. Поле DT определи, как Null. А далее обновляй по необходимости.
>>1071814Добавление индексов избавит бедненькую СУБД от необходимости шерстить таблицу строка за строкой.
>>1073473И как же добавление индексов поможет при селекте всей таблицы?
>>1073296Нужно собрать табличку или подзапрос с датами за указанный период, а потом к нему(ней) лефт джойном присобачить твою таблицу с результатами по полю cal_d
>>1071814>>1073567>>1073473Навели на вопрос: а собственно на чем именно тормозит выборка всех строк из таблицы? На дисковых операциях? Ведь на поиск нужных строк ресурсы не тратятся по сути, если правильно понимаю, сортировок тоже нет.
Правильно ли я понимаю разницу между кластеризованными и некластеризованными индексами?При использовании кластеризованного индекса строки таблицы сортируются на физическом уровне. Поэтому у таблицы может быть только один кластеризованный индекс. Кластеризованным индексом в таблице является первичный ключ.Вставка/изменение/удаление строк может производиться сравнительно долго, но поиск будет очень быстрым.Некластеризованный индекс хранится отдельно от таблицы в виде двух столбцов, где первый столбец - это сортированные значения индексируемых полей из таблицы, а второй столбец содержит указатели на соответствующие строки из таблицы. Вставка/изменение/удаление строк производится быстрее чем при использовании кластеризованного индекса, но поиск будет чуток медленнее.
>>1074076Да, не забывай еще, что некластерные индексы не будут работать, если нету кластерного, потому что ему (некластерному) нужно ссылаться на какой-та адрес строки в таблице.
Дана таблица-лог с более 100 млн записейУ нее есть ключевое поле и некоторый набор других полей. Среди них одно ссылается на некоторую сущность. Нужно удалить все старые записи по каждой этой сущности, оставить только 5 последних. Как это можно сделать? Поиски в гугле предложили курсор и top 3 id descПосле пары часов работы отменил запрос. Нужно что то более быстрое.Как такие задачи решают настоящите администраторы баз данных?
>>1074325Нужно разбить запрос: запустить несколько запросов, которые будут обновлять таблицу по кусочкам, например, по 10тысяч записей, так ты сможешь увидеть результат быстрее, да и, самое главное, сможешь запустить несколько таких запросов параллельно.Само задани на удаление не осень понял. Тебе нужно удалить записи об этой сущности из логов или удалить абсолютно все записи о ней из всех мест, где она упоминается?
>>1074358Задание довольно простое. Есть лог, в котором фиксируются изменения сущностей. Там все подряд и товары и услуги и сотрудники. У всех есть id. Этот лог рос и никому не мешал. Сейчас во стал мешать. Поэтому решили что последние 5 записей по каждой сущности это вполне норм. А остальные под нож. Но что то вот не выходит очистить базу. Все пиздец как медленно в курсоре.Обновлять по кусочкам это как? Когда запускаю два запроса на разных вкладках, то одна крашится, мол таблица залочена или типа того.
Нужны ли за рубежом SQL-щики?
>>1074428Пиздец даунич! Вместо того, чтобы подумать над архивацией лога, решили нахуй его удалить. Нет лога - нет проблем, заебись!
>>1074442А лично автор этого вопроса даже в России никому не нужен.Сейчас буду плакать после плохого собеседования.
>>1074590Что не знал?По одному собеседованию не судят.
>>1074594А ты можешь себе представить, что я всё знал? Вообще все.Просто общался как чмо и в заданиях с мутными формулировками, не качающимися эскуля, я обосрался.Позовут на второй этап - будет чудо. Но вряд ли.
>>1074451Двачаю, логи на то и нужны, чтобы в любой момент спорный поднять историю и пояснить вопрошающему.
Анончики, работаю пхп макакой, хочу развиваться в сторону проектирования бд, чтобы повысить свою квалификацию в бекенде.Основы знаю и могу придумать запроектировать таблички типа customers, orders, products, но хочется больше развить свое мышление, чтобы мыслить абстрактно, чтобы слышать какую-то тему проекта и в голове или на бумаге рисовать сущности и связи между ними. В данный же момент когда сталкиваюсь с незнакомой задачей, то поначалу образовывается каша в голове и хочется больше просветленности.Что посоветуете? Может какую-то книгу или методики
>>1074710Посоветуем больше практики.Принцип: хочешь научиться класть кирпич- клади кирпич.
>>1065392В PostgreSQL таки можноcreate table t1 (id int, tarray text[]); insert into t1 (id, tarray) values (1, array['line1','line2','line3']);select * from t1;
Проясните один момент, пожалуйста, те, кто знает Ораклесли я использую подзапрос как ЦЕЛЬ в INSERT е INSERT INTO(SELECT R1, ID FROM T1 WHERE ID = 50)VALUES ('VASYA', 100);Вставится ли у меня эта строка в таблицу T1 ???Есть ли какой-нибудб CHECK OPTION для этого случая?Потому что кто-то говорит, мол, вставится, но вроде хотели ввести чек оптион.
кажется надо просто поставить WITH CHECK OPTION полсле WHEREкак же меня бесит манера составлять лекции: сначала написать "неправильно", потом отвлечься на другую тему, потом дать пример как "правильно"
Добрый день.Срочно.В иерархических запросах oracle есть connect_by_root. Возвращает значение верхней строчки в иерархии.А мне нужно значение второй сверху строчки.Как это сделать?Красиво или хотя бы говнокодом.Спасибо.
>>1074929Похуй, скорее всего SYS_CONNECT_BY_PATH подойдет.
Я ебал в рот заниматься отчётностью. Я это ненавижу.
>>1074886Проверил в https://livesql.oracle.comВставилось.ID R150 Max100 VasyaПро чек опшины хз. Я даже не знал что оно вставится так (смысл правда не понял, зачем мне так вставлять).
NEED HELP!Вопрос про обращение к STORED PROCEDURES через бажесвеный DAPPER, а именно с передачей параметров.Примеров для M$ SQL Server много и как бы все работают. Мне надо для MySQLТак не работает. Выдаёт ошибку синтаксиса. Сама рутина экзекьютится в phpMyAdmi-е, то есть с ней всё в порядкеconnection.Execute("InsertPerson(@firstN, @lastN)",new{firstN = firstName,lastN = lastName});Работает только тогда, если передаваемый параметр один. Где я проебался с синтаксисом????
>>1075182Чё пишет-то?
>>1075182сonт.Execute(sql,params,commandType: CommandType.StoredProcedure);
>>1075206Пока ничего конкретного.Позже буду перекладывать в VB6+Access на .NET+[Firebird, MySQL, Ms SQL Server]Сделать красиво
>>1075213Это и так понятно. Мне нужен пример из жизниВ одном примере под MS SQL Server было такExecute("some_proc @param", new { param = Param})но для MySQL надо было со скобками просто перебрал и попалExecute("some_proc(@param)", new { param = Param})а с двумя и больше выкидавает ошибку
>>1075240Вот чё гугл дал.https://stackoverflow.com/questions/5962117/is-there-a-way-to-call-a-stored-procedure-with-dapper
>>1034303 (OP)Сап. Вот есть удаление из двух табличек postgres, все окDELETE FROM orders o USING users u WHERE o.userid = u.id and u.firstname = 'Sam';DELETE FROM users u WHERE u.firstname = 'Sam';но, если надо удалить много записей, Sam, Inan, Anon1 etc. Как сделать красиво и просто?
>>1075332IN
>>1075372рили, во я тупой
Hey, guys!Что вы думаете о mydataexpress ?Выгорит? Или лучше не браться? Нужна база на систему авторов-статей, чтобы главред большого журнала мог кроссреференсить кто уже скоко писал.
Двоч, посоветуй. Если мне нужно хранить информацию о очень большом количестве подчиненных объектов с малым количеством столбцов (1-2), то как лучше поступать - создавать всё таки таблицу подчиненного объекта и добавить столбец РодительId, или можно у родителя создать varchar(max) и запихивать туда соединенные через разделитель сериализованные мелкие объекты? Я не могу определить, что будет работать быстрее и тратить меньше памяти. Если объекты простые, то их можно быстро десериализовать и не будет оверхеда в виде метаданных таблицы. С другой стороны, это всё равно нужно на бизнес-сервере десериализовывать объекты, прежде чем проводить с ними манипуляции. 1 вариант мне кажется быстрее, но гораздо затратнее по расходу памяти.
>>1075524Очень большое количество объектов парсить из плейн текста по разделителям быстрее, чем сделать один элементарный запрос в базу?
>>1075547А если объект в сериализованном виде занимает 4 байта?
>>1075556Почему бы его не "сериализовать" в байты и не вытаскивать из байтов?
>>1075248Спасибо, помогло!Кстати, у MySQL всё ещё может глючить, не находя явно существующие рутины, если имя базы не прописано маленькими буквами в connectionString
NEED HELP AGAINкак проверить, что primary key поставлен на AUTO_INCREMENTВроде, соответствующая заява (AUTO_INCREMENT = 1) исполнялась без ошибок, но при попытке сделать INSERT кричит, что duplicate entry '0' for key PRIMARY
>>1075798убил старую таблицу и сделал по канону сразу с автоинкрементомвот и INSERT заработал
Заявляю сразу, я довнНадо сделась SELECT записи в 5 полей (id, Firstname, Lastname, email, phone)Нужно, чтобы поиск работал как минимум по одному критерию и/или по комбинации из заданых. Например, по фамилии или имени и мылу. %%нувыпонелиПонимаю, что должно выглядеть так:SELECT FROM people WHERE...и тут собственно проблема с пустыми полямиКак сделать красиво, чтобы в WHERE игнорились пустые строки.И как сделать красито, чтобы искало по отрезку строки. Например,искать всех Jack, Jacob и James через Ja
>>1076187Опять я. Забыл приписать, что делаю черех STORED PROCEDUREПойдёт так? обоссыте меня пожалстаWHERE (Firstname=_fistName AND _firstName != "") AND (Lastname=_lastName AND _lastName != "") AND ...и так далее
>>1076193если через процедуру, и условия будут параметрами процедуры, то я бы делал не != "", а is not null.И чтобы запрос работал нужно предусмотреть варианты null и не null.Если так, то можно переписать условия типа:((Firstname=_fistName AND _firstName is not null)OR (_firstName is null))ЛибоFirstname=coalesce(_fistName,Firstname). Но это если строго равно.Если через Ja выводить всех то лучше через первый способ: ((Firstname like '_fistName%' AND _firstName is not null) OR (_firstName is null))
>>1076206Спасибо! Помогло!
>>1076206Я поспешил радоваться. Как на пике 1 работаеткак на пике 2 - не работает. ни по части, ни по полной
>>1076244насчет like name||'%' нужно соединить параметр и процент. Если || не заработает, пробуй CONCAT(name, '%').По первому скрину он на твое поле в таблице ругается, есть там такое firstname? Задай таблицу с алиасом или пиши people.firstname.
>>1076262Да и как бы не совсем понятно использование в процедуре select * и что с этим делать собираешься.Но это походу какой-то mysql я с ним не работал. Может там так норм.
>>1076244Firstname = name and name is not null? Что блядь? Ты хочешь чтобы у тебя домен не был бы равен null?
>>1076262>CONCAT(name, '%')это работает (MySQL)
>>1076280я хочу, чтобы пустые поля в маске не сравнивались с содержанием таблицы
Есть Mysql база, нужно проверить наличие записи в таблице по совпадению текстового поля. Каким образом сделать это быстрее всего?PS Если новые записи добавляются по несколько раз в секунду, целесообразно ли использовать индексы?
что такое ДС?
Как сделать нормальную внешнюю таблицу в оракле?Вот например у меня такой текстовый файлhttps://pastebin.com/6JMEbZV4и я создаю вот такhttps://pastebin.com/aUtAHnCxЕсли учесть, что названия файлов 100% правильные, то что может быть не так, еще что делать, если в текстовом файле последняя строка пустая (пробелы)? как её читать?
>>1076300Пожалуйста, объясни на примере, я не понимаю тебя.
Котаны, задрочился что-то на одном вопросе. Есть ли более элегантный способ вытащить последние по таймштампу данные из таблицы? Вот как это делаю я сейчас: http://sqlfiddle.com/#!17/482e3/4/0
>>1076925Зависит от субд, если она умеет в оконные функции (over), тогда есть, гугли row_number()
>>1077338СУБД - PostgreSQL 9.6, оконные функции умеет.Предлагаешь что-то типа: with lv as (select id1, id2, value, row_number() over (partition by id1, id2 order by date desc) rn from test)select * from lvwhere rn=1Что-то сразу не додумался. Хотя по плану выполнения одинаково выходит. Но выглядит лучше.
>>1077511Не может это по плану одинакого выглядеть, так как оконные функции работают без самоджойнов. Это всегда будет работать быстрее и очнее, так как твой старый способ не гарантирует уникальность полученных строк после джойна.
>>1076902Есть маска в черырмя полями- имя- фамилия- пол- возрастискать по любой комбинации известных данных, которые задаются. Все пустые искать как any, а не сравнивать, например, gender =""
>>1078481Хуяришь вычислимое поле на эту таблицу Alter table t_kakaAdd full_user_info ascoalesce(name, '')+coalesce(second_name, '')+ coalesce(cast(gender as nvarchar(50)), '')+coalesce(cast(age as varchar(50)), '')Далее херачишь на него full text index
раскажите пжл в двух словах, что такое SQL project. А именно меня интересует что он содержит? Может быть таблицы базы, может быть базы, их хранимые процедуры, макросы, а может и сами данные. Так что в нем есть?
>>1034303 (OP)Весь тред перечитал, но так и не нашёл этого вопроса.Как вкатиться в разработку (аналитику) БД. Что качать понятно что SQL, что еще?? Какие вопросы на собеседованиях меня ожидают? И какие подводные в вашей работе? Я третьекурсник, думаю начать искать стажировку или продолжать читать книги по БД. SQL знаю на уровне проделывания всех упражнений и зубрёжки из книги Ицыка Бен-Гана. Знаю реляционную теорию на базе курса в универе уровень - могу дать определения третей нормальной форме и называю таблицу - отношением.В рамках курсового проекта спроектировал БД через oracle developer.Куда мне двигаться дальше?Можно ли с моим уровнем начинать искать стажировку?Как мне получать 100к через год?
>>1034339А если я вполне ебу что все это значит, как использовать и имею маленький опыт применения этого на практике , но при этом почти не шарю в других языках, можно ли с такими знаниями на стажировку или джуна вкатиться ? Смотрел вакансии по дс-2, дбд если где и нужны то с опытом от года - 3 разработки и приличным прикладным багажом.Есть вакансия в БИЗНЕС ТЕХНОЛОГИЯХ, младшего разраба, вроде почти по всем требованиям прохожу, но вот отзывы об этой конторе в интернете - сугубо негативные
>>1079317Знать надо не только реляционки, вроде оракла, но и nosql, вроде монги и редиса. Сейчас угорают по бигдате, а там без хадупа/редиса/кафки- никуда.
>>1034303 (OP)Sql тяжко учить?Думаю начать задротить.В городе маленьком появилась вакансия на 45к, но хуй они тут найдут даже за 100 к, разве что из Москвы выпишут им.Хочу попробовать через пару дней хотя бы стажором или помощником за 30к. Каковы шансы?
>>1080433>через пару днейВкатывальщики ваще ебанулись.
>>1080433Лучше С++ выучи за 21 день и получай 300кк
Java уже все? Куда пропал жава тред?
>>1080924 промахнулси да и хуй с ним
>>1080924Жава скурвилась
>>1081003Ты хотел сказать СУЛЬвилась?
Как выбрать объединение данных из двух таблиц если они связаны через третью? Нужно из table1 выбрать все записи вместе с соответствующими полями table3.Тоесть получить выборку которая будет содержать table1.table1_ID и table3.table3_ID
Есть отчёт на оракле. Ну как есть, хуячу его сейчас.Смысл такой: несколько инсертов в разные таблицы, потом объединение этого всего и открытие курсора.Работает медленно, поэтому пара вопросов:1. Я не пишу commit после каждого инсерта, так как далее сразу идёт truncate следующей временной таблицы, а он, как известно, сам по себе делает инсерт. Так вот, разницы между явным и неявным коммитом нет? Если я пропишу commit, работать быстрее не станет?2. Сейчас у меня обычные таблицы, пока я тестирую, потом сделаю global temporary. Это даст прибавку в скорости работы?Сами запросы тяжёлые и ебанутые, их я оптимизировать ещё больше вряд ли смогу.
>>1081078>делает коммитПрошу прощения.
Господа, как dbf засунуть в mysql5.7?
>>1065291Сколько получаешь?
А такое бывает, что при обычном запуске запроса у него один план, а при запуске из хранимой процедуры - другой?Руками за минуту отрабатывает, а процедура час висит.Я ебать не хотел эту РАБоту.
>>1081113Когда взяли, был год опыта pl/sql разработчиком, согласился на 80к. Теперь, спустя несколько месяцев, на хедхантере предлагают 100+.
>>1076688а какая ошибка-то вылезает?
>>1081363Хорошо тебе, а мне вот ничего не предлагают с двумя годами опыта pl/sql
>>1081369Как-то странно. Ты в Москве?
>>1081373В Москве.А 100+ это сильно + или просто чуть-чуть?Так-то 100 с копейками у меня есть, но мне бы уже 130 хотелось бы.
>>1081374Ну я поставил 120к как желаемое и звонили, говорили что цифра очень даже устраивает. Мне кажется, что поступают неплохие предложения в основном потому, что я ещё Informatica PowerCenter умею юзать. Я вообще специально пошёл на текущую должность чтобы научиться, ибо просек, что это ценится на рынке. Правда обернулось это тем что эта хуйня меня пиздец заебала и тепреь охота слезть не то что с Информатики, но и с чистого SQL-ля вообще. Это реально скучно когда хоть немножко научишься.
>>1081380Я двачую, понимаю прекрасно твой кризис.Я хуже, я не работаю с ETL, я просто делаю отчёты. ХХ скролю регулярно, на таких как ты спрос больше, чем на таких как я.Работа заебывает, дрочить на оптимизацию запросов, передрачивать отчёты по 10 раз из-за глупых требований заказчиков. Запускаешь хуйню и ждёшь пока отработает. Долго ждёшь. Заебало, движухи хочется.
>>1081393Соскочил бы куда-нибудь поинтереснее, чай где-нибудь нужен oracle, я ведь его пиздец как люблю и запросики писать нравитсяОтчётность заебала, отчётность скучно, банк скучно.Но мне же хочется ещё и с выгодой по деньгам перейти, потому что никто не знает, понравится ли мне на новом месте, а так хоть деньги в виде бонуса.
>>1081044они не связаны через третью
>>1081394>Скучно.Охуеть ты зажрался.мимо >>1079317
>>1073686Дисковые операции + i/o данных.Вопрос в другом, нахуя так делать, зачем выбирать все 60к строк. Если высрать в отчет - то лучше уж rownum добавить
>>1081847Пошел нахуй, вкатывальщик ебливый.
>>1081847Сука, черт ебаный, как же я с тебя горю.Откуда ты блядь знаешь, каково это работать тем, кем работаю я?Ты думаешь, что если апнешь 100к сразу счастливым станешь? Я тоже думал.Но тебе я желаю разочароваться в профессии, никогда в жизни не апнуть 100к и сдохнуть от синьки.Потому что нехуй пиздеть о том чего не знаешь.
>>1082218Что-то ты нервный какой-то.У тебя тянка есть?
>>1082218кокой самчный разрыв свитерадаже не пожалел что забыл скрыть ваш петушиный угол
>>1082483Постоянной нет.
Здравствуйте.В понедельник пойду на вилку 130-150 в руки, поддержка АБС.Будет круто, если возьмут, деньги так-то космические.
>>1082718даже в /rf/ хикканы по 4-5к даларов поднимают с видео на ютубе, при этом не светят еблом, деньги сами в банк приходят
>>1034303 (OP)Можно ли создать представление на основе иерархического запроса (или вообще ОТВ) в MS SQL.
>>1082953?*быстро фикс
>>1082953Что за иерархический запрос? Ты можешь сделать представление в мс скл на основе любого запроса, написанного на т-скл.
>>1083150>Что за иерархический запрос?https://habrahabr.ru/post/43955/>Ты можешь Например у нас есть запрос :WITH REC AS( SELECT id, pid, title FROM test WHERE title = 'Воронеж' UNION ALL SELECT t.id, t.pid, t.title FROM REC AS r INNER JOIN test AS t ON r.id=t.id)SELECT id, pid, titleFROM RECКак реализовать его в виде представления?
Блять есть где-то нормальный гайд по установке постгреса на убунте, это же пиздец какой-то, каждый даун по своему говорит, а главное нихуя не работает ?
>>1083522Блять, что нужно добавить то в этот ебучий файл pg_hba.confpsql: FATAL: no pg_hba.conf entry for host "::1", user "postgres", database "postgres", SSL onFATAL: no pg_hba.conf entry for host "::1", user "postgres", database "postgres", SSL offСейчас он выглядит такhost all all 192.168.0.1/32 md5host all postgres 127.0.0.1/32 trusthost all postgres 192.168.0.1/32 trust
>>1083166Весь люд кличет такие конструкции рекурсивынми запросами, лул.>как же нам реализовать такое, ой, ой, как же это сделать то? >>1083150CREATE VIEW dbo.view_kaka ASWITH REC AS(SELECT id, pid, titleFROM testWHERE title = 'Воронеж'UNION ALLSELECT t.id, t.pid, t.titleFROM REC AS rINNER JOIN test AS tON r.id=t.id)SELECT id, pid, titleFROM RECНо это еще не все.
>>1083728Если ты реализуешь рекурсию в представлении, то тебе придется писать в каждом запросе, использующем это представдение,>орtiоn (mахгесuгsiоn = x)
>>1083730где х - это число допустимых циклов в рамках твоего запроса, в самой вьюхе ты это написать н сможешь. (Только если х превышает установленное по умолчанию значение, конечно же)Такие дела. Не лучший способ. Лучше функцию написать или процедуру, в ней можно явно задать эту опцию раз и навсегда.П.с.: писал в 3 поста, потому что Уродское слово МАКСРЕКУРШН в спам листе, ой лол, абу, что, от скл инъекций так защищается?
>>1083731А что не так с этим словом?
Вечера, ананасы. Есть одна БД на пикрил, а т.к. все пары по БД я успешно проебывал, то имеется вопрос. Делаю аналог livelib/goodreads/myshows(про книжки) для семестровки по инфе. Как хранить статус книги у юзера? Читает он ее сейчас, прочел ее или собирается прочесть? Что-то совсем не втыкаю.У БД не финальная версия, многое добавить еще необходимо.
>>1084000Я бы предпочел заместо таблицы book_rating сделать таблицу user_books, в которой помимо id юзера и od книги будет статус книги (читаю/прочитал/планирую) и для прочитанных будет оценка.
>>1084000Хранить пароли открыто в таблице - моветон.
>>1084160Спасибо за совет, так и сделаю. Про >>1084161 в курсе, это со старой БД еще осталось
>>1084160Так тут по пизде идет какая-то нормальная форма. И что тут будет primary key?
>>1084245Либо я тупой, либо что-то еще, но я не могу придумать такую связь между таблицами, чтобы не шла по пизде первая нормальная форма. Всегда будут повторы либо по user_id, либо по book_id. Что делать, помогите
>>1084245Он будет двойной, по книге и по юзеру. Это уникальное сочетание.
>>1084250Первая нормальная форма не идёт тпл пизде вообще никогда. У тебя по одному значению каждого атрибута.
>>1084252То есть, это нормально, если значения id повторяются и встречаются в нескольких строчках?
>>1084266ДаУ тебя будет уникальная комбинация из двух idПервая нормальная форма пойдет у тебя по пизде, если ты будешь допускать хранение нескольких оценок в одной ячейке через запятуюВторая пойдет по пизде, если комбинация ид книги и ид пользователя не будет уникальной и можно будет сохранять в таблице несколько оценок одного пользователя по одной и той же книгеУ тебя неправильные представления о нормальных формах. У меня, возможно, тоже
>>1084272Да проебывал пары по БД, вот и хуевое представление. Если что, доебусь еще до препода, а так спасибо, вроде все понял.
>>1084367У тебя они хотя бы были...А я всё сам, всё сам...А теперь мне даже ссаные 150 тыщ платить не хотят, ненавижу всех.
>>1084382А ведь мог бы в универе нормальный язык изучить и нормально работать. Но в универе предпочёл проебываться, а потом пошел работать SQL-макакой.
Блядь, как же я ненавижу порой эти ебаные базы данных. Сука. Осталось сделать 2 задания, а я уже 3 дня безрезультатно не могу нихуя сделать. Ну вот как это решать? Создать хранимую процедуру для быстрого получения всех наименований тем заданий домашних работ выполненных заданным студентом (fio) и их оценку за заданный период с даты 1 по дату 2.Создать хранимую процедуру для быстрого получения количества сданных домашних работ, их минимальной, максимальной и средней оценок в разрезе по группам.Первую работу я сделал наполовину, при выборе оценки за заданный период у меня вообще нихуя в столбцах не выходит. Где косяк?Во второй нужно подсчитать количество домашних работ по каждой группе. Как это сделать? Я знаю, что нужно использовать COUNT(*), но вот как мне вытащить каждое поле столбца name_tgroups и посчитать домашние каждой группы? Через id? Но каким образом вытаскивать каждый из них? Я не знаю.В задании ещё говорится, что в некоторых задачах нужно создавать VIEW. Напишите эти ебучие запросы, аноны, которые эксперты в базах данных. У меня вообще нихуя не получается. Я уже пробовал и локальные переменные, подзапросы, вьюшки...нихуя не получается, нихуя не помогает. Может это из-за того, что я не до конца врубаюсь в хранимые процедуры, не понял всех их тонкостей. Вот тут все таблицы http://dbdesigner.net/designer/schema/123097 . Спасибо заранее.
>>1084272>Вторая пойдет по пизде, если комбинация ид книги и ид пользователя не будет уникальной и можно будет сохранять в таблице несколько оценок одного пользователя по одной и той же книгеПеременная отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут неприводимо зависит от (каждого) её потенциального ключаУ него не была бы там вторая нормальная форма, если в таблице бук_рейтинг находился бы возраст пользователя (типо ключ составной, а аге зависит только от одного ключа)Более того, отношение тут даже в 3НФ. Т. к. все функциональные зависимости не транзитивны..
>>10844105к. 2,5 сейчас, 2,5 после выполнения.
>>1084410А где лежат даты? Может в первой косяк из-за того, что ты вместо даты использовал время? Алсо, какая связь JOIN у тебя?
Аноны, как в процедурах вывести в EXEC больше одной локальной переменной? Вывожу одну @ - всё заебись, вывожу две "@имя1, @имя2" - передано слишком много аргументов, иди нахуй, ниче выполнять не буду. Что не так делаю?
>>1084550Ты бы хоть показал что ты вызываешь и как.
ОП, ПЕРЕКАТИ ТРЕД. Я ЧЕ НА ВСЕМ ДВАЧЕ СВОИ БД-ПРОБЛЕМЫ ДОЛЖЕН В /B/ ЧТО ЛИ ОПИСЫВАТЬ? ЕСЛИ НЕ ПЕРЕКАТИШь, ТО ТЫ - ПИДОР
>>1084813А почему бы тебе не перекатить, если тебе это надо?Пидорас.Знаешь, что базовики самые злые и неудовлетворенные жизнью специалисты? Ну ладно, только я. Но сука не нервируй меня.Я не оп.
>>1084857Братан, не пизди, я уже пошутил.
>>1084872>же
>>1084872А у меня циклотимия, прости, пожалуйста.
Сегодня эйчар на собеседовании по Скайпу сказала мне, что у меня нет никакой специальности, потому что я шарю только SQL, но в ее представлении sql надо применять к чему-то, а такой специальности как sql-щик нет.
можно ли вкатиться в это дело без сопутствующего образования? как hr относятся к этому делу? в математике шарю более лименее
>>1085161Какое у тебя образование? Так-то на приличных вакансиях требуют техническое образование, на средних - любое высшее.Закончить тех вуз и самостоятельно подрочить sql в свободное время - отличный старт в этом направлении, лучше и не придумаешь.Вот только нужно ли тебе это скучное говно для старперов? Ты не будешь программистом, ты будешь мусором, клепателем отчетиков, аналитиком и прочей швалью. Почему ты не можешь выучить нормальный язык программирования, как все? Чего тебе не хватает?Мимо sql-макака с двухлетним стажем.
>>1085208у меня неоконченная юридическая вышка) уже пару лет на пхп и сисадмин галере. вот хочу на мат.фак поступать и влиться в аналитику - интересно вообще как в этой сфере относятся к вышке
>>1084996Конечно, нет, но есть очень близкие: аналитик данных, разработчик корпоративной отчетности, там еще нужно пару систем изучить, в которых отчеты рисуются, и научиться собирать требования к ним. Не поверишь, но даже на таких специальностях можно овер 100к в дс делать.
>>1085258Я разработчик корпоративной отчётности.А тянка предлагала мне быть риск-аналитиком, говорит заебись тема. Похуй, что я ничего не знаю, говорит там главное вышка хорошая и sql знать.Ну посмотрим, если до собеседования у работодателя дойду, будет здорово.
Пилю короче лабу в консольке ораклаora-01843 not a valid month и не понятно почему.Возможно в этой строке что-то не так с ограничениями:Bday Date check (Bday < ‘01.01.1996’)?Анон, помоги тупому.
>>1085927Дурак бля, никогда не пиши просто дату в кавычках.Нужно использовать to_date с маской
>>1086017В методичке етого не было.
>>1086020Лучшая методичка - это я и мой жизненный опыт.Обращайся!А мне даже ссаные 150к никто не хочет платить, видишь как плохо!Ууууу, суки.
>>1086023Давайте, смотрите на мое унижение!
>>1086024Уже посмотрели отклик и резюме.Как жаль, что на этом успехи закончатся.
Ха-ха, лёд тронулся.Позвонили с одного места, где 100 на испытательном и 120 после него. На руки. На текущем месте были те же цифры в гросс. Менять ради прибавки в 15% - быть дауном. Но тем не менее самый выгодный оффер в моей жизни.Пока писал этот пост, мои начальники вызвали на разговор и предъявили мне, что я ищу работу. В отрицалово идти не стал. Но в целом обсудили все вопросы и пришли к понимаю, посижу тут ещё, даже денег потом прибавят.Простите, что сделал бложик из треда, но в бамплимите можно
>>1086218Продолжай, интересно.У вас видимо тоже кто-то мониторил вакансии, раз про тебя узнали.
>>1086219Да вот что странно, я от своего банка скрыл резюме. То есть видно оно компаниям, зарегистрированным на хедхантере, кроме моей. Скорее всего, просто спалили, что я чаще чем нужно выхожу поговорить по телефону. Ну это правда подозрительно.Господи, хорошо быть молодым и перспективным, другого может и пидорнули бы за такое. А меня уверили, что все нормально, и попросили сразу подходить и говорить, если что-то не устраивает. Но наверное компания всегда заинтересована сохранять своих сотрудников.
Хочу создать простенькую дб из десятка табличек, каталог того, что послушал. В блокнотике я заебался это вести, т.к. там не отсортируешь по алфавиту и из таблицы в таблицу муторно переносить.Какую прогу скачать? MySQL не слишком навороченным для меня будет? А то я скачал его, установил, а там серверы, коннекторы и т.д., мне это не нужно.Смотрел этот рейтинг: https://db-engines.com/en/ranking
>>1085260Дурень. Открой hh, в списке выбери "резюме", в поиске введи "sql". Ты охуеешь от числа тебе подобных.
>>1086330SQLite
>>1086429Нашел, охуел.Я лучше.
Закончил 5 лет назад бакалавриат по специальности прикладная математика и информатика, потом ещё учился в магистратуре (чтоб в армейку не забрали), в итоге дропнул (всё время играл в дотку, из-за чего проебал все сроки на сдачу диплома, о чем сейчас жалею). Всегда был распиздяем (и в школе и в универе) + в 11 классе перед ЕГЭ умер отец, что неслабо ударило по атмосфере в семье, из-за чего мой манямирок пошел по пизде и в тот момент вообще ничего не хотелось. В школе были интересны алгебра и геометрия, но в целом тяги к знаниям особо не было. В универе проебывал периодически лекции/практики, часто пересдавал предметы, пару раз висел на волоске от отчисления. На эту специальность пошел, т.к. брат уговорил.Говно выше высрал не для того, чтоб меня пожалели, а скорее оценили мои шансы. За всё это время я почти ничему (ну кроме уж совсем прям какой-то базы в математике/информатике) не научился, хотя возможности были, просто я их практически все проебал. Отсиживаю геморрой в одной конторке уже почти 2 года, в ИТ департаменте, но не программистом или тестером, а аналитиком данных (по сути пишу запросы на t-sql, анализирую данные на корректность и соответствие ТЗ, делаю описание всех баз, т.к. их дохера, и по сути мало кто знает, где какие данные лежат, если они вдруг внезапно кому-то нужны, и т.п.). СИКВЕЛ освоил на базовом (как мне видится) уровне, ну т.е. DML и DDL-запросы могу писать.С одной стороны, у меня всегда была и есть низкая самооценка, и у меня всегда работает установка, что я ничего не могу, ничего не знаю и вообще самый тупой дегенерат в мире. И перед устройством на эту позицию мне казалось, что SQL - это пиздец сложно и я не смогу освоить. Но в итоге получилось, что освоить что-то, да смог.С другой стороны понимаю, что всю жизнь работать на этой позиции будет невозможно, потому что работа сводится к рутине. Зп мне хватает в целом на жизнь, но на что-то большее нет, т.е. вынужден копить по пол года.Соответственно, вопрос. Есть ли у меня шансы параллельно освоить какие-то ещё технологии/языки/инструменты?Из языков сейчас начать изучать C#, т.к. надеюсь, что он мне поможет в решении некоторых проблем, которые я встречаю при решении некоторых задач. Например, нужно проверить данные в гигабайтной XML'ке, и чтобы её вручную не открывать и не сканить через поиск, написать простой парсер и т.п. + хочется изучить Enitity Framework и понять, как наши девелоперы работают с данными, как хранимые процедуры вызываются. Ну и также мечу взгляд в машобчик и нейроночки. Т.е. хочу ещё вкатиться в Python/R. И тут у меня дикий бугурт от себя, потому что в универе у меня был курс интеллектуального анализа данных , и освещались различные алгоритмы, но я нихера не понимал.Соответственно, второй вопрос. Если шансов нет, и если мне не имеет смысла пытаться изучать языки/инструменты выше, куда можно дальше двигаться? В разработчики/архитекторы баз данных? Сложно ли освоить Sphinx? Имеет ли смысл изучать другие другие СУБД, либо NoSQL? Сложно ли вкатиться в MongoDB + ElasticSearch? Буду благодарен, если кто-то обратит на меня внимание.
>>1086466Спасибо!
>>1086540Обратил, прочитал, а спросить ты что хотел?Хватит ли тебе знаний на разработчика БД? Сходи на собеседование, узнай.Что тебе изучать? Что тебе самому нравится, то и изучай. Это искусство высрать пост на весь экран и ничего не написать по делу.
>>1086645Спасибо, что прочитал. У меня есть проблемы с формированием мысли, поэтому я часто расписываю ненужную хуйню, так и не объяснив самое основное в сухом остатке. Спрошу точнее, надеюсь так будет понятнее.Имеет ли смысл изучать C#, как приложение к уже имеющимся знаниям в MS SQL? Т.е. можно ли какие-то крутые вещи пилить, когда имплементируешь SQL в C#? Например, сложные регулярки пилить или какие-то библиотеки прикручивать или выньформу запилить с прикруткой в базе, ну и т.п. И более общий вопрос, к которому клоню. Куда можно двигаться в этой области (работа с данными)? В первую очередь не с точки зрения бабла, а перспектив. Ну т.е. нужно понимание, что вот такой-то стэк технологий условно в ближайшие 5 лет будет актуальный, поэтому имеет смысл двигаться в этом направлении и при этом не быть бесполезным куском дерьма на рынке труда. Соответственно я и спросил про машин лёнинг/проектирование бд/сфинкс/носиквел и т.п. Что из этого востребовано сейчас на рынке и во что из этого реально вкатиться?
>>1086651Да, например, в моем отделе пишутся интерфейсы на sharepoint под БД. Это и есть C#. То есть от разработчика требуется как SQL, так и C#. Но я не такой, к сожалению, обычная отчётная макака.В любой непонятной ситуации скролль хедхантер, sql в связке с C# я вижу довольно часто.
>>1086651По профессиям.Архитектор - моя влажная мечта, но нужен колоссальный опыт и знания, думаю годам к 30 им стану, когда за плечами будет почти 10летний опыт работы с БД. Если, конечно, не поменяю резко направление работы.Для МЛ ты староват и туповат, судя по всему. Да и зачем там SQL я не очень понимаю, там важно прежде всего быть хорошим программистом, питон, вся хуйня.Если есть потребность в модных словах в названии профессии, то попробуй биг дату, hadoop, хуе-мое. Меня на такую вакансию могли взять без опыта в бигдате, да один скуль и сообразительность. Но то ли тупанул, то ли прайс большой заломил. Не сложилось, короче.
>>1086747 (OP)https://2ch.hk/pr/res/1086747.htmlДа, я полностью скопировал этот тред.Хотите лучше - делайте сами.
>>1086748Делай что-то нормально или не делай вообще.
>>1086832Я так и зналСами-то чего не перекатили?