Программирование


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
245 28 93

Кластеризованный уникальный баз данных тред /sql/ /sql/ Аноним 25/05/19 Суб 21:52:18 14064551
Снимок.PNG (39Кб, 801x251)
801x251
Добро пожаловать в свитерный тред.

Анализируем планы запросов,
Поясняем, какой из гигантов СУБД лучше: MySql или SqLite.

Ну а теперь серьезно:
Базы данных: реляционные и объектные/документные
Хранилища данных и BI
ETL
Хадуп и бигдата

В этои IT ИТТ тредю
поясняем за специальности, в которые можно вкатиться в сфере СУБД
обсуждаем скиллы, которые нужно подтягивать новичкам
* составляем базу необходимых знаний на гитхабе





Аноним 25/05/19 Суб 23:41:15 14064812
Screenshot76.png (112Кб, 1289x809)
1289x809
оцените курсовую ебана
Аноним 26/05/19 Вск 00:04:17 14064953
>>1406481
Сущности называются единственным числом.
Тем более, что множественное число ты все равно не умеешь образовывать.
Аноним 26/05/19 Вск 05:42:21 14065414
>>1406481
Ты долго ебашил спайсы чтобы додуматься хранить билеты и поезд не в таблице билетов, а в таблице пассажиров?
Аноним 26/05/19 Вск 06:01:46 14065465
>>1406481
>>1406541
Где таблица с рейсами? Иди дорабатывай.
Ну либо своруй структуру бд самолётов с sql-ex
Аноним 26/05/19 Вск 08:59:21 14065656
>>1406455 (OP)
> поясняем за специальности, в которые можно вкатиться в сфере СУБД
Кто начнёт?
Аноним 26/05/19 Вск 11:19:37 14065957
>>1406565
Пердеды с sql.ru Только они здесь не сидят, наверное
Аноним 26/05/19 Вск 12:27:36 14066308
>>1406455 (OP)
> скиллы, которые нужно подтягивать новичкам
sql, основы реляционных бд, python(опционально)
>поясняем за специальности, в которые можно вкатиться в сфере СУБД
на hh можно посмотреть
(и там же знания необходимые для нюфагов)
Аноним 26/05/19 Вск 13:29:18 14066589
>>1406630
нахуя питон? R не интегрируется в эти ваши опенсорсные субды?
Аноним 26/05/19 Вск 14:15:28 140670310
>>1406658
не видел разрабов на R
да и кому он нужен если есть змей
Аноним 26/05/19 Вск 14:49:30 140672111
>>1406703
тошо он изначально заточен под анализ данных, а путон вкатился в эту нишу не пойми каким боком
Аноним 26/05/19 Вск 17:26:04 140686712
>>1406546
>>1406541
Это вы еще ему не сказали, что он навернет говна, когда пилот с одного самолета на другой пересядет.
Аноним 26/05/19 Вск 18:03:06 140690113
>>1406595
Я тоже читаю ин-фу от наших предков. Нам всем базачём нужно составить вопросы и создать там тред.
Аноним 26/05/19 Вск 18:05:38 140690514
Я еще помню тут совсем давно один уважаемый анон пояснял за дата инженера. Я нашёл немного информации про хадуп, если ты тут, дай пожалуйста ссылки на упражнения.
Аноним 26/05/19 Вск 23:46:25 140710215
>>1406721
тебе не нужно их анализировать тебе нужно их обрабатывать и складывать
(маня ты не дата саентист! проснись!)
Аноним 27/05/19 Пнд 09:06:31 140718116
Аноним 27/05/19 Пнд 10:47:46 140722517
>>1406455 (OP)
Что там по книгам/ресурсам по которым можно освоить работу с каким-нибудь постгре и научиться sql, чтобы на собеседование стыдно не было?
Аноним 27/05/19 Пнд 11:06:58 140723518
Аноним 27/05/19 Пнд 13:33:48 140730919
>>1407181
Ты не в тот тред пришёл, не позорься.
мимо
Аноним 27/05/19 Пнд 13:34:56 140731020
Аноны, есть какой-нибудь ресурс, типо sql-exe, только по процедурным расширениям? Можно на английском.
Аноним 27/05/19 Пнд 16:06:20 140738921
Аноним 27/05/19 Пнд 21:00:50 140760322
Анон, посоветуй какую нибудь годную книгу про технические аспекты RDBMS. Ну типа как реализован конкурентный доступ, как отрабатывают локи, когда открываются транзакции и как они менеджатся
Аноним 27/05/19 Пнд 21:16:59 140761123
>>1407603
А какая СУБД интересует?
Аноним 27/05/19 Пнд 21:34:50 140761524
Аноним 27/05/19 Пнд 22:35:48 140764625
>>1407603
У Оракла в документации до хуя есть.
Concepts, например, если я не путаю.
У Постгре тоже в документацию втыкай.
Аноним 28/05/19 Втр 10:00:18 140780326
Аноним 28/05/19 Втр 11:37:10 140783627
Ребят, помогите, через 2 дня собес, а мне нужно знать базовые знания запросов sql, а я кроме как вставить что то из таблицы и вытащить ничего не знаю, что за эти 2 дня можно прочитать и где?
Аноним 28/05/19 Втр 11:43:39 140783928
>>1407836
это и есть базовые знания
Аноним 28/05/19 Втр 11:44:39 140784029
>>1407839
окей, а дальше как это развить?
Аноним 28/05/19 Втр 11:59:09 140784930
>>1407840
ну джойны почитай
дальше индексы
возможно cte, оконные функции
опционально процедуры/функции/вью
Аноним 28/05/19 Втр 12:01:28 140785031
>>1407836
>базовые знания запросов sql
CREATE, REMOVE, UPDATE, DELETE (CRUD), что еще нужно для счастья?
Аноним 28/05/19 Втр 12:02:14 140785132
Аноним 28/05/19 Втр 14:15:47 140792933
>>1407850
Для начала нужно все-таки разобраться, что означает буква R
А то ты и так на умного не похож, а своими высерами окончательно всех убеждаешь в том, что ты даун
Аноним 28/05/19 Втр 14:33:58 140794534
Аноним 28/05/19 Втр 15:44:15 140799335
Аноним 28/05/19 Втр 16:05:29 140802336
Аноним 28/05/19 Втр 16:10:08 140802637
Аноним 28/05/19 Втр 17:09:11 140807438
Аноним 28/05/19 Втр 17:22:41 140807939
Аноним 28/05/19 Втр 18:30:42 140810440
А где, ну или в какой субд, лучше всего практиковать запросы?
Аноним 28/05/19 Втр 19:16:50 140813841
Аноним 28/05/19 Втр 19:30:16 140814442
Аноним 29/05/19 Срд 00:54:07 140838243
>>1408138
Бля, я думал, тут умные-остроумные собрались.
А тут ебанат в словарь полез.

Бля, я думал, программист понимает, что можно что-то новое создать.
А тут ебанат только готовыми шаблонами из словаря готов пользоваться.

Пиздец, вообще. Закрывайте на хуй программач.
Аноним 29/05/19 Срд 00:56:02 140838744
>>1408382
>программач
Какой нахуй программач, юродивый, это же /зк
Или в лучшем случае /prrrrrrrrrrrrrrrrr
Живи с этим.
Аноним 29/05/19 Срд 08:20:25 140849945
>>1408387
>Какой нахуй программач, юродивый, это же /зк
он дома расскажет друзьям и невесте как он подстрелил двух /зк ?
Аноним 30/05/19 Чтв 18:15:48 140932646
Проебал перекот.

Есть одна должность которая маячит в банке.
Собес на следующей неделе, есть время подготовится.
Написали из требование только:

Ожидаемый опыт:
- Знания Oracle SQL, PL/SQL
- Понимание принципов разработки OLTP систем
- Умение разобраться в чужом коде
- Умение отлаживать код
- Умение работать с документами

>Знания Oracle SQL, PL/SQL
Про это расскажу думаю. Спросят поди про синтаксис, основные конструкции. Индексы, партиции, план такое говно.

>Понимание принципов разработки OLTP систем
Что тут хотят от меня? Ну индексы не вешать чтобы вставка была быстрее, ну sql аналитику не крутить на oltp базах, что еще тут рассказать?
Аноним 30/05/19 Чтв 19:28:07 140939747
>>1409326
>Умение разобраться в чужом коде
Пидарасы, сэр.
Аноним 31/05/19 Птн 06:54:56 140967448
>>1409326
Ну вот про партиции и расскажи, как бы ты транзакционную табличку партиционировал, например, чтобы база через пару лет не подохла от миллиардов записей. Олсо, можно спиздануть, что - нахуй форейн кеи, потому что они только тормозят производительность, но если ребята с таким не сталкивались, то могут и не оценить.
Аноним 31/05/19 Птн 20:36:11 141006149
image.png (1553Кб, 959x960)
959x960
Аноны, помогите. Нужно к базе данных написать простенький интерфейс, чтобы через него в эту самую бд (или эти самые бд) можно было вводить записи + проводить какую нибудь сортировку, поиск и подобные простые запросы. На чем легче всего будет реализовать? Интернетик пестрит вариантами либо с php, либо с C# + MySql или Microsoft Access, но не могу пока определиться. В этих языках и софте я полный штрих, придется с нуля осваивать. Единственное, чуток в С разбираюсь и еще меньше в плюсах.
Аноним 31/05/19 Птн 20:45:28 141006250
>>1410061
C# + Entity Framework
обучающих статей на MSDN должно хватить для простейшего круда. алсо EF имеет провайдеры для множества базочек, под капотом можешь хоть SQLite заюзать
Аноним 01/06/19 Суб 13:35:51 141027851
Господа, попробуйте представить, что вы стали ниибатся менеджером, который выбивает деньги на проекты у бизнеса.
Деньги вы получили, но при выборе средств разработки вы столкнулись с альтернативой. Продукт вы можете реализовать, используя три СУБД:
1) Oracle
2) MS SQl
3) Postgress
Есть ли хоть какая-нибудь статья, которая ОБЪЕКТИВНО сравнивает эти три СУБД?
Аноним 01/06/19 Суб 13:37:05 141028152
>>1410278
Если нет, то как бы вы аргументировали свою позицию в ту или иную сторону, бабки не проблема
Аноним 01/06/19 Суб 14:40:37 141031853
>>1410278
оракл - неубиваемая хуйня для миллиарда транзакций в секунду. требует, возможно, дорогих девелоперов

мс - оракл на минималках. выбор хорош если нужны какие-то решения из коробки и не хочется их девелопить с нуля

постгре - опенсурс и этим все сказано
Аноним 01/06/19 Суб 15:02:16 141033854
>>1410281
1) Oracle
Дорого. Нужен как минимум один DBA. Отточенная
железобетонная отказоустойчивость при верной настройке. Куча плюх и пердолек, которые позволяют эффективно управлять СУБД и данными. Есть встроенный язык PL/SQL - процедуры/функции. Есть поддержка и подробная документация. Если если пятизначные цифры в $ на лицензирования не страшны - это однозначно твой выбор. Идеально подходит банкам или крупному ритейлу для OLTP/OLAP.

2) MS SQl
Дорого поделить на джва, если сравнивать с Ораклом. Развертывается на шиндовс сервере. По плюхам почти как оракле. Есть встроенный язык T-SQL - процедуры/функции. Ниже по производительности и отказоустойчивости. Поддержка сообщества подробная почти как у Оркала. Механизмы репликации отсасывают у Оракла. Подходит сторонним подразделениям банков, мелкому ритейлу и крутить 1С. Прекрасно крутит OLAP. При правильных админах и разрабах можно крутить OLTP.

3) Postgress
Если будешь использовать в интерпрайзе то нормальная поддержка все равно за бабки. В последних версиях есть процедуры и функции. Спецов найти сложнее для администрирования. Поддержка сообщества слабее, чем у ребят выше. Может крутить мелкую хуету типа телефонии, сайтов, логи, мониторинг. Есть единичные мазохисты которые крутят это в серьезном Энтерпрайзе.


ИМХО за 3,5 года с БД
Аноним 01/06/19 Суб 18:01:46 141039655
Товарищи, выручите пожалуйста, помогите правильно запрос к БД написать.

Абстрактная задача с собеса:
Есть система, отвечающая за раздачу транспорта на предприятии. Известно, что пользователи на предприятии имеют доступ к приложению, с которого могут заказать транспорт. При заказе транспорта пользователи указывают число, на которое желают взять транспорт, а также предполагаемую дату возвращения транспорта в автопарк. Пользователи могут отменять заказ машины и она снова может становиться свободной.

У меня проблема вот с чем, пишу клиентскую часть, и не могу понять - как правильно написать запрос к БД, чтобы результат выдачи показывал только те ID'шники машин, которые могут быть заказаны на сегодняшнее число.

Аноним 01/06/19 Суб 18:23:43 141040156
>>1410396
Без структуры таблиц сделать это сложно.

Я так понимаю, у машины есть атрибут типа свободно/занято. Если занято, то скорее всего можно сделать джоин к тому за кем занято-на какую дату.
Аноним 01/06/19 Суб 18:42:43 141040757
>>1410401
table.Car // Машина
{
     int id;
     driver_id; // Кто водитель;
     nvarchar type; // Тип (груз, легковушка);
     nvarchar mark. // Марка.
}

table.Order // Заказы
{
     int id;
     int car_id; // Машина;
     int client_id; // Кто заказал;
     date orderDate; // Дата заказа;
     date returnDate. // Дата возврата в автопарк.
}

Связь: 1 - TO - MANY (1 Car - Many Orders), T-SQL;

Я пробовал в структуру машины добавить булевое "Свободна/Занята", но не догнал как это можно с пользой использовать.
В шарповском треде мне кое-где подсказали, но что-то так и не понял как с умом использовать. Суть в том, что я через запрос могу вывести те машины в диапазоне того времени, когда они заняты. А мне бы этот запрос отреверсить как-нибудь, чтобы видеть внешние диапазоны, когда машина доступна для заказа.

Запрос на внутренний диапазон:
SELECT [Order].car_id
FROM [Order]
WHERE orderDate <= @currentDate AND returnDate > @currentDate;

А мне бы наоборот, выводить те машины, которые свободны, а не заняты.

Небольшой примерчик:
3 машины - 3 заказа;
1) Машина№1 - с 01.06.2019 по 07.06.2019;
2) Машина№2 - с 05.06.2019 по 10.06.2019;
3) Машина№3 - с 31.05.2019 по 05.06.2019;

Точкой отсчета в запросе я беру, сегодняшний день - 01.06.2019.
Следовательно, по запросу мне машина №2 должна быть доступна с сегодняшнего числа по 04 (или 05, хотя в собесе не сказано, что машина может быть заказана и возвращена в тот же день).
Аноним 01/06/19 Суб 18:43:40 141040958
>>1410407
Наврал, SQLite у меня, а не T-SQL. Прошу прощения!
Аноним 01/06/19 Суб 18:50:57 141041259
Безымянный.png (29Кб, 647x527)
647x527
Привет, аноны. В каком софте можно нарисовать именно такую логическую модель бд?
Аноним 01/06/19 Суб 19:57:14 141044160
Аноним 01/06/19 Суб 20:09:21 141044761
image.png (10Кб, 514x269)
514x269
image.png (24Кб, 749x480)
749x480
image.png (22Кб, 583x512)
583x512
image.png (27Кб, 1225x313)
1225x313
Дароу. Короче меченый я тебя спас и в благородство играть не буду придумаешь для меня пару заданий и мы в расчете. А именно для такой базы данных надо придумать 10 запросов на INSERT и 10 на UPDATE и 1 на DELETE. Сами решения писать не надо только текст заданий. Фантазии пиздец не хватает написал уже 40 ебучих заданий из 60. схема на пикчах
Аноним 02/06/19 Вск 12:17:52 141063562
Привет антуанам.
Наслышан про схему, когда вместо offset'ов используются page_token'ы (потому что оффсеты медленные на больших таблицах).
Как мне объясняли, page_token'ы делаются по какой-то хитрой схеме через where, но я тупой и у меня не получается нагуглить это самостоятельно.
Подскажите, как вообще это делается?

Я вижу это так, что когда у меня запрашивают N-ю страницу, я беру оттуда id последней строки (у меня это uuid, но по тдее не важно) и возвращаю в качестве page_token'а, соответственно на N+1 страницу мне передают этот самый токен и я делаю запрос вида "дай мне 10 строк после строки у которой id=page_token", но я хз, как это сформулировать в виде запроса.
Сортировать по id'ам и говорить where id > page_token не вариант, потому что это отсортирует строки по дате создания (а у меня другие правила сортировки).

Вопрос сложный, только для настоящих программистов, так что с меня утроенное количество сотен нефти.
Аноним 02/06/19 Вск 13:30:59 141067163
Аноним 02/06/19 Вск 16:23:27 141079064
>>1410407
тебе нужно шоп ORM нагенерило запрос, или простыня из SQL тоже сойдет?
Аноним 02/06/19 Вск 16:30:44 141079965
>>1410790
ORM'ом или SQL - мне лишь бы понять суть.
И, если не затруднит, подскажите литературу, где подобные случаи разбирают/рассматривают.
Аноним 02/06/19 Вск 16:48:33 141081466
>>1410799
https://pastebin.com/WWjstCU3

в общем задача звучит как Gaps and Islands. но с наскоку гуглить может быть непонятно
я попробовал сгруппировать по машиносу и вывести MIN/MAX свободная дата, но так делать неправильно ибо все промежуточные занятые даты будут пропущено. я ебал делать еще одно CTE, для начала сойдет (если я вообще правильно понял суть). путем самопердолинга можно довести запрос до нужного
Аноним 02/06/19 Вск 17:00:06 141082167
>>1410814
Премного благодарен, подскажите пожалуйста ещё что-нибудь по подобным задачам, где можно какие-то материалы почитать, хотелось бы найти что-нибудь для обучения на реальных примерах, без абстрактных задач.
Аноним 02/06/19 Вск 17:30:40 141084668
>>1410821
лично я не учился на каких-то примерах. все - это либо задания с собесов, либо реальные кейсы, либо что-то случайно нагугленное
Аноним 03/06/19 Пнд 19:01:47 141135669
bfd.jpg (81Кб, 681x527)
681x527
Пытаюсь подключить учебную базу из MySQL в VS 2017.
На ютабе решается установкой других версий коннектов.Но у меня проблема не решается, двач помоги.
Аноним 04/06/19 Втр 19:17:51 141185370
Пацаны, в мускул workbench можно как-то передвигать нормально эти линии, показывающее отношения? А то у меня они наложились на друг-друга, под таблицы, под небо, Аллаха. Хочу штоб покрасивше их расставить, но не пойму как очевидным способом нихуя не дает
Аноним 05/06/19 Срд 08:51:18 141205771
>>1406455 (OP)
Можно ли за пару месяцев нахвататься, чтобы взяли на самую простенькую вакансию релейтед?
Аноним 05/06/19 Срд 09:07:42 141206472
>>1412057
После 3 месяцев на sql-ex.ru 100к дают же
Аноним 05/06/19 Срд 09:47:05 141207773
db.png (49Кб, 634x501)
634x501
Привет, анонимусы. Есть такой кусок БД, а смысл таков: есть айтемы, у айтемов может быть сколько угодно параметров и соответствующих им значений. Например, свитер: цвет - зеленый, размер - маленький, автор - Дэвид Блэйн. Теперь вот думаю, либо я дурак и не могу запрос составить чтобы по параметрам и значениям выбрать айтемы, либо я дурак и неправильную архитектуру запилил. Что скажете, уважаемые?
Аноним 05/06/19 Срд 10:02:34 141208474
Untitled.png (2Кб, 482x146)
482x146
>>1412077
разделять parameter и value тебе нужно ибо значения параметров имеют фиксированный сет значений?

если бы проще, то как на пике
а вообще и из твоего поделия можно сочинить более-менее вменяемый запрос, правда за охуительное количество джоинов оптимизатор тебе спасибо не скажет
Аноним 05/06/19 Срд 10:09:43 141208875
>>1412084
>значения параметров имеют фиксированный сет значений?
Да. С точки зрения оптимизации было бы заебись параметры в столбцы выносить, как раньше и было, но я устал каждый раз код править добавляя новый параметр, поэтому решил сделать их динамическое создание через админку. И встрял.
Аноним 05/06/19 Срд 10:11:08 141208976
>>1412088
поколоночное хранение подобных данных - это либо сознательная денормализация ради убийственного перфоманса, либо топкекрофл

так что не получается?
Аноним 05/06/19 Срд 10:15:19 141209177
>>1412089
select t.id as item_id, p.id as parameter_id, v.id as value_id
from item u
join item_value iv on i.id = iv.item_id
join value v on v.id = iv.value_id
join parameter p on p.id = v.parameter_id
where p.id = 1
and v.id = 3
and p.id = 3
and v.id = 5

Такой запрос работать не будет. Нужно выбрать одновременно несколько параметров и несколько значений.
Аноним 05/06/19 Срд 10:16:47 141209378
>>1412091
давай запрос по-человечески, что ты хочешь выбрать на основании каких фильтров?
Аноним 05/06/19 Срд 10:20:44 141209479
>>1412093
Хочу выбрать айтемы, у которых: параметр "цвет" = значение "зеленый", параметр "размер" = значение "маленький" и т.д. Количество параметров в запросе может быть разным, но я это в коде сделать смогу.
Аноним 05/06/19 Срд 11:29:47 141213680
>>1412094
чет я сам не подрасчитал сложноту задачи
https://pastebin.com/wDAvZuj5

не думаю, что такое решение имеет право на существование, но, справедливости ради, оно работает как ты хочешь лол)
я юзаю SQL Server-ный диалект, полагаю, все подобное поддерживается всеми стандартными базами
в T/SQL мне не хватает шарповского "выбрать строки, у которых встречаются все значения из подможества".
еще как вариант делать каскадную фильтрацию, типа:
- выбрать все айтемы
-- отфильтровать, у которых "цвет" не "розовый/зеленый"
--- отфильтровать, у которых "размер" не "маленький"
но подобное на SQL реализовывать занятие так себе. разве что генерить запрос в коде и на верочку отправлять его в базу
Аноним 05/06/19 Срд 11:34:23 141214081
>>1412136
Мощно. Буду пробовать, спасибо тебе.
Если я правильно понял у меня получается модель EAV, которая часто во всяких интернет-магазинах встречается.
Аноним 05/06/19 Срд 23:29:30 141263182
Пасаны, покажите пожалуйста конкретный (не просто х->у......, а с какой-нибудь табличкой или конкретными данными) пример нетривиальной и полностью нетривиальной функциональных зависимостей.
Я прост не понимаю как разница у них будет выглядеть
Аноним 07/06/19 Птн 21:37:37 141342583
Антоны, я переношу огромные массивы данных с FireBird на Oracle. Но деля это через промежуточный .csv получается пиздец, кодировки летят как угорелые. Что делать то?
Аноним 07/06/19 Птн 23:13:33 141347384
Нужно сохранить древовидную структуру в БД, при этом нужно:
1. Быстро выбирать все поддерево для указанной ноды.
2. Быстро перемещать поддерево к другому родителю.
То что нагуглил: с первым хорошо справляется nested sets, со вторым adjacency list. Materialized paths - вообще непонятно зачем нужное говно.

Накидайте идей как хранить в БД древовидную структуру, так чтобы усидеть на двух рекваиментах? Может скомбинировать как, или materialized paths спасут меня?
Аноним 08/06/19 Суб 00:55:13 141350485
>>1413473
Какая база-то?
Оракл умеет нормально выбирать деревья/поддеревья
Постгре, вроде, тоже.
parent_id -> id
Хули сложного?

Не, конечно, если у тебя МуСКЛ, то просто иди на хуй.

А если ты еще не решил, какая у тебя база, то бывают, внезапно ГРАФОВЫЕ БД
Типа https://neo4j.com/
Аноним 08/06/19 Суб 00:56:46 141350586
>>1413425
SQL*Developer's Migration Workbench не для тебя сделали?
Аноним 08/06/19 Суб 00:58:45 141350787
>>1412136
>но подобное на SQL реализовывать занятие так себе. разве что генерить запрос в коде
>генерить запрос в коде
Внезапно, это единственно правильное решение
Аноним 08/06/19 Суб 08:00:12 141353388
>>1413507
внезапно, это решение упирается в реализацию и соскочить с написанного будет непросто в реальном мирке
Аноним 08/06/19 Суб 13:04:31 141359589
>>1409326
Это хоум кредит? Как сходил?
Аноним 08/06/19 Суб 17:35:21 141371290
>>1413505
Спасибо!!!(Восклицание)
Аноним 08/06/19 Суб 19:48:19 141377891
Как оптимальнее всего написать накопительный запрос по зарплате сотрудников.

Create table PersonA(Tbn number primary key, name varchar2(20), otd number, sal number);
--Табельный номер , имя, отдел , зарплата

Insert into PersonA(Tbn,name,otd,sal) values(1, 'Аня',10,9000);
Insert into PersonA(Tbn,name,otd,sal) values(2, 'Саша',10,5500);
Insert into PersonA(Tbn,name,otd,sal) values(3, 'Таня',10,7000);
Insert into PersonA(Tbn,name,otd,sal) values(4, 'Ваня',20,2300);
Insert into PersonA(Tbn,name,otd,sal) values(5, 'Олег',20,4300);
Insert into PersonA(Tbn,name,otd,sal) values(6, 'Коля',20,3900);
Insert into PersonA(Tbn,name,otd,sal) values(7, 'Таня',30,7000);
Insert into PersonA(Tbn,name,otd,sal) values(8, 'Макс',30,9000);
Insert into PersonA(Tbn,name,otd,sal) values(9, 'Таня',30,8500);
Insert into PersonA(Tbn,name,otd,sal) values(10,'Макс',30,9900);
Insert into PersonA(Tbn,name,otd,sal) values(11,'Олег',30,9900);
Insert into PersonA(Tbn,name,otd,sal) values(12,'Макс',30,9900);
Insert into PersonA(Tbn,name,otd,sal) values(13,'Макс',30,9900);
Insert into PersonA(Tbn,name,otd,sal) values(14,'Макс',30,9900);
Insert into PersonA(Tbn,name,otd,sal) values(15,'Макс',30,9900);
Insert into PersonA(Tbn,name,otd,sal) values(16,'Макс',30,7000);
Insert into PersonA(Tbn,name,otd,sal) values(17,'Таня',30,3500);
commit;
Вот например тут если мы сделаем запрос:
select name , otd , sal , sum(sal) over (partition by otd order by sal) as num from personA, то результат будет некорректный, из-за того что поле sal может повторятся.
Как написать корректную аналитическую функцию?
Аноним 08/06/19 Суб 19:51:18 141377992
изображение.png (123Кб, 1240x602)
1240x602
Результат выполнения выделенный функции будет как на пике, мне же нужно, чтобы суммирование продолжалось.
Аноним 08/06/19 Суб 19:54:37 141378193
изображение.png (112Кб, 1125x528)
1125x528
Я ничего кроме этого придумать не смог.
select a., sum(sal) over (partition by name order by name, num)
from
(select a.
, row_number() over (partition by name order by name) num
from PersonA a) a
Аноним 08/06/19 Суб 19:56:59 141378394
И правильно ли я понимаю, что в конструкции "sum(sal) over (partition by name order by name, num)" первым выполняется оператор сортировки?
Аноним 08/06/19 Суб 20:00:22 141378495
Да вообще, если order by это только сортировка, то как она может влиять на результат запроса?
Аноним 08/06/19 Суб 20:10:39 141378796
>>1413778
ROWS BETWEEN UNBOUNDED PRECEEDING AND CURRENT ROW
Аноним 08/06/19 Суб 20:57:37 141380197
Аноним 08/06/19 Суб 20:57:57 141380298
Аноним 08/06/19 Суб 23:06:19 141388099
db1.png (19Кб, 1108x407)
1108x407
db2.png (19Кб, 1007x177)
1007x177
Господа, пожалуйста, подскажите. Имеется БД как на первом пике: три таблицы с данными foo, bar, baz и одна таблица common, в которой ведется учет добавления в те три таблицы. Например, если в таблицу foo добавится элемент:

insert into foo values (0, 999);

то в таблицу common автоматически добавится такая новая запись:

insert into common values (N, 0, null, null);

, где N - автоинкрементирующийся id.

Вопрос такой, можно ли и как сделать такой селект по таблице common, чтобы в результате получить данные со всех трех таблиц foo, bar, baz (пока предположим, что все поля у таблиц одинаковые)? Кароче, нужен результат как в таблице select result, как показано в примере на втором пике.

Я пытался через inner join сделать, записав три join подряд, но естественно результат нулевой, потому что он для всех условий join использует конъюнкцию, то есть находит пересечение множеств. Мне надо чтобы он в строке common находил не null поле с id и дергал данные из соответствующей таблицы по этому id.
Аноним 08/06/19 Суб 23:32:58 1413891100
>>1413880
>Вопрос такой, можно ли и как сделать такой селект по таблице common, чтобы в результате получить данные со всех трех таблиц foo,
Можно
Аноним 09/06/19 Вск 00:55:17 1413914101
>>1413504
Про Оракловый connect by prior я знаю, и кстати MySQL с 8 версии тоже может выбирать поддеревья целиком. У меня больше вопрос перфоманса. Как там работает connect by prior не совсем ясно, но скорее всего просто тупо джоинит внутри. Быстрее чем самому, запрос за запросом выбирать. Но с nested sets когда тупо выбирается диапазон и рядом не стоит.

Neo4j я знаю и начал смотреть, но там пока вообще непонятно насколько быстро выбирается поддерево.
Аноним 09/06/19 Вск 01:08:44 1413916102
>>1413914
В оракле все нормально.
Там точно не джойны внутри.
Делаешь запрос и смотрешь план. Думаешь.

Нео - говно, но если тебе нужен граф немыслимой вложенности, то почему бы и нет?
Аноним 09/06/19 Вск 08:45:42 1413951103
Расскажите про EAV. Он ещё актуален для всяких CMS и маркетплейсов? Или что-то лучше придумали?
Аноним 09/06/19 Вск 11:47:19 1413984104
>>1413891
> Можно
Отлично, как это сделать?
Аноним 09/06/19 Вск 12:13:36 1413997105
>>1413880
Левые джойны + coalesce не учил, не?
Аноним 09/06/19 Вск 18:14:12 1414153106
>>1413787
Объясни пожалуйста:
>UNBOUNDED PRECEEDING - Окно начинается с первой строки текущей группы и заканчивается текущей обрабатываемой строкой
- CURRENT ROW - Окно начинается (и заканчивается) текущей строкой
Как это можно связать через between? Почему UNBOUNDED PRECEEDING не включает в себя CURRENT ROW? И почему на результат аналитических функций влияет дублирующие строки в имени функции?
Аноним 10/06/19 Пнд 06:53:07 1414344107
Screenshot2019-[...].png (44Кб, 796x500)
796x500
Screenshot2019-[...].png (51Кб, 794x550)
794x550
Screenshot2019-[...].png (26Кб, 1042x408)
1042x408
>>1414153
>Окно начинается с первой строки текущей группы и заканчивается
где ты это описание нашел? где нашел, там и оставь

границы окна указываются как rows between <start> and <end>. причем, заставить учесть одну и ту же строку дважды без костыльных подзапросов достаточно проблематично
Аноним 10/06/19 Пнд 20:34:24 1414617108
изображение.png (106Кб, 1239x375)
1239x375
>>1414344
Том Кайт
СУБД Оракл
Алсо, запрос корректно работает и без
>BETWEEN AND CURRENT ROW
Просто там по умолчанию стоит RANGE UNBOUNDED PRECEEDIN
Аноним 10/06/19 Пнд 20:36:10 1414618109
>>1414617
ёпт, оракл. не знал, что в диалектах есть хоть что-то похожее
Аноним 10/06/19 Пнд 20:37:11 1414619110
>>1414618
Конкретно эта хуета от транзакта не отличается, это анси.
Аноним 10/06/19 Пнд 23:39:19 1414689111
Посоветуйте научпоп по БД на ночь глядя и что нибудь по проектированию бд
Аноним 10/06/19 Пнд 23:50:51 1414691112
>>1414619
Бля, второй раз в жизни на дваче что-то полезное!
Никогда не пользовался этими функциями и даже не знал, что так можно, епта!
Даже в сраном мускуле это есть, охуеть, что уж там про оракл говорить...

Спасибо, аноны!
Аноним 10/06/19 Пнд 23:56:14 1414694113
>>1414689
Томас Коннолли, Каролин Бегг — Базы данных. Проектирование, реализация и сопровождение. Теория и практика.
Аноним 11/06/19 Втр 16:29:15 1414856114
Screenshot391.png (15Кб, 1136x253)
1136x253
Приветик.
Хочу переименовать название одной колонки в таблице, погуглил (так как я нуфаг), выдало решение:

ALTER TABLE table_name RENAME COLUMN name1 TO name2;

Но чот меня шлет нахер читать документацию и ругается на синтаксис в месте: COLUMN name1 TO name2;
Пробовал с кавычками, писал RENAME_COLUMN (а что а вдруг) результат тот же.
Подскажите, как переименовать, будьте добры.
Использую PhpMyAdmin, если это важно.
Аноним 11/06/19 Втр 16:45:04 1414865115
>>1414856
ALTER TABLE table_name
Change column_name1 column_name2 Data_Type
Аноним 11/06/19 Втр 16:51:53 1414866116
Аноним 11/06/19 Втр 20:32:50 1414933117
image.png (232Кб, 781x870)
781x870
>>1414694
Знаешь, я пожалуй поищу что то менее затратное и лежащее на торрентах
Аноним 11/06/19 Втр 22:07:55 1414965118
image.png (348Кб, 1886x584)
1886x584
>>1414933
Бвахахахаха
Ты не видел, что ли, сколько классика стоит?
Аноним 12/06/19 Срд 00:33:54 1415009119
>>1414965
>Дейт.
Бляяяяять. Этого клоуна невозможно воспринимать серьёзно.
Аноним 12/06/19 Срд 01:39:07 1415024120
>>1415009
Ну ок.
Наконец-то на дваче мне распедалили, кто клоун, а кто нет.
Аноним 12/06/19 Срд 07:00:45 1415052121
>>1415009
я чувствовал, конечно, что его книгу по основам реляционной теории я купил зря. но это настолько бесполезный автор что ли в домене?
Аноним 12/06/19 Срд 16:03:03 1415326122
>>1415052
Ну, примерно как Матфей в области рассказов об Иисусе.
Апологет Невзорова, конечно, назовет его клоуном.

Все ты правильно сделал.


His book An Introduction to Database Systems, currently in its 8th edition, has sold well over 700,000 copies not counting translations, and is used by several hundred colleges and universities worldwide.

Хуйня, конечно. У Пупкина лучше все описано.
Аноним 12/06/19 Срд 16:50:26 1415367123
>>1415326
круто, рофловасян смог скопипастить с вики. а сказать-то что хотел?
я говорил где-то, что у него хуево написано (что-то где-то)?
Аноним 13/06/19 Чтв 00:34:04 1415552124
>>1415367
Круто, рофловасян без всякой вики обосрет любого. а сказать-то что хотел?
13/06/19 Чтв 12:43:50 1415744125
>>1406455 (OP)
>составляем базу необходимых знаний на гитхабе
И где она?
Аноним 13/06/19 Чтв 14:51:37 1415805126
>>1415744
Крис Дейт спиздил, чтобы продавать по 250 баксов.
Вон, у анона уже жопа полыхает
Аноним 13/06/19 Чтв 18:10:42 1415951127
Здоров, котоны. Реализовал я, значит, кусок базы в шаблоне EAV.
Поиск по атрибутам и значениям выполняю вот так:
SELECT t0.
FROM eav t0
join eav t1 on t0.phone_id=t1.phone_id and t1.parameter = "Источник" and t1.value = "Сайт 1"
join eav t2 on t0.phone_id=t2.phone_id and t2.parameter = "Группа" and t2.value = "Основная"
join eav t3 on t0.phone_id=t3.phone_id and t3.parameter = "Регион" and t3.value = "Ленинградская область"
group by t0.phone_id
having count(
) = 3

Проблема в том, что в EAV-таблице приходится держать сами значения и они многократно дублируются. Хотелось бы в этой таблице держать только ID, а искать так же по значениям. Если добавить таблицы с атрибутами и значениями, а в этом запросе их заджойнить, то поиск не возвращает ничего. Пример с джойнами:
SELECT t0.
FROM eav t0
join parameter p on p.id = t0.parameter_id
join value v on v.id = t0.value_id
join eav t1 on t0.phone_id=t1.phone_id and p.name = "Источник" and v.name = "Сайт 1"
join eav t2 on t0.phone_id=t2.phone_id and p.name = "Группа" and v.name = "Основаная"
join eav t3 on t0.phone_id=t3.phone_id and p.name = "Регион" and v.name = "Ленинградская область"
group by t0.phone_id
having count(
) = 3

Я что-то не так делаю или это в принципе невозможно?
Аноним 13/06/19 Чтв 18:33:34 1415965128
0byyGf0cfXs.jpg (136Кб, 894x894)
894x894
>>1415805


>Крис Дейт спиздил, чтобы продавать по 250 баксов.

ух сволочь

>Вон, у анона уже жопа полыхает

Еще тлеет
Смотрю и не могу найти что то стоящее

Объясни мне момент. С учетом фундаментальной основе в виде знания БД, почему в целом так мало людей разибирающихся в них чуть больше "сделать ручками зазубренные вызовы", хотя и таких не так много, ибо ОРМ... Аналитиков БД в обще кот наплакалпытался найти себе ментора
Аноним 13/06/19 Чтв 19:04:42 1415977129
Аноним 13/06/19 Чтв 19:10:09 1415979130
>>1415977
Но большая часть из них это не программисты на питоне и яваскрипте.
Да даже и на яве, хули там.

ОРМ, которая может за тебя "сгенерить" схему БД, и, тем более, ебаные РЕСТ-репозитории, которые вообще без всякой мысли программиста что-то хуярят в базу, или из нее читают...
Да ну на хуй.

Просто сайт-визитку сделать это заебись, быстро, и всем видно. Молодец, мальчик, фуллстэк, 300кк/нс
А огранизовать правильное, надежное хранение с разумной скоростью характерных выборок - да кто ж это увидит? Ничего же не пердит и не свистит.
Вот и специалистов не видно в толпах говнокодеров.
Только и всего
Аноним 13/06/19 Чтв 19:12:16 1415982131
>>1415951
пример твоих АВ мы сами должны угадывать из твоих селектов?
Аноним 13/06/19 Чтв 20:20:19 1416004132
>>1415979
>специалистов не видно в толпах говнокодеров
во-первых, попробуй заглянуть дальше своего "проекта"
во-вторых, говнокодерство может быть обусловлено положняком на самом проекте (sad but true)
в-третьих, уметь использовать ОРМ тоже нужно. и, обычно, без знания того, какой код нагенерит тебе этот ОРМ, сильно не погуляешься
кто для тебя специалист-то вообще?
Аноним 13/06/19 Чтв 20:36:52 1416011133
>>1416004
Да я не про свои проекты же.
В моих проектах у меня есть я, мне других не надо.
Я про то, что вижу вокруг.
Даже если не брать двач, бггг, то форумы и ебаные тенденции (напоминаю про способность ОРМов генерить схему базы, такое кто мог придумать, на такое кто мог подписаться, и почему это еще живо, мм?)
ОРМ - хорошо. Там, где ему место.
Но, опять же, ОРМ по большей части делают люди, которые пляшут от программирования и объектов. А не от грамотной схемы.
Поэтому некоторые очевидные (для меня) ходы через какой-нибудь Хибернейт охуеешь делать.
Аноним 13/06/19 Чтв 21:20:51 1416023134
Помогите мне, я студент-постгрессодебил. НУЖНА ПОМОЩЬ!

Я пытаюсь создать функцию и триггер, который будет обновлять атрибут timeorder с текущей датой, когда атрибут floatingItem обновляется. Функция, с которой я работаю, работает с одной проблемой. Он обновляет все записи, а не те, которые были обновлены.
Проблема: при обновлении данных в floatingItem timeorder остается неизменным

ALTER TABLE public.orders ADD COLUMN timeorder timestamp without time zone;

CREATE FUNCTION web() RETURNS trigger AS
$$
BEGIN IF new.floatingItem = FALSE
THEN
UPDATE public.orders SET timeorder = current_timestamp WHERE
new.bubNum=orders.bibNum;
END IF;
RETURN new;
END;
$$
LANGUAGE plpgsql VOLATILE;

CREATE TRIGGER IF NOT EXISTS mytrigger AFTER UPDATE ON public.fund FOR EACH ROW EXECUTE PROCEDURE mytrigger ();
Аноним 13/06/19 Чтв 21:29:08 1416025135
image.png (530Кб, 1374x888)
1374x888
Аноним 13/06/19 Чтв 23:14:55 1416066136
>>1416023
>CREATE FUNCTION web() RETURNS trigger AS
На хуя?
В чем проблема код написать сразу в триггере?
Аноним 13/06/19 Чтв 23:16:46 1416069137
Аноним 13/06/19 Чтв 23:21:15 1416071138
>>1416069
Не, я уже глянул в доку, это ебанутый синтаксис постгре

ты бы показал свой апдейт, который заставляет обновиться все записи
Аноним 13/06/19 Чтв 23:23:23 1416074139
>>1416023
и ты уверен, что new должно сработать, а не NEW?
я постгре не ебал особо, не знаю, насколько он регистрозависимый
Аноним 13/06/19 Чтв 23:27:12 1416077140
>>1416023
>UPDATE public.orders SET timeorder = current_timestamp WHERE
new.bubNum=orders.bibNum;
>UPDATE public.orders
>orders.bibNum
Я бы либо orders. выкинул бы, либо public добавил бы
Аноним 14/06/19 Птн 00:05:50 1416095141
image.png (225Кб, 1604x810)
1604x810
нихуя не работает бляяя
CREATE FUNCTION web() RETURNS trigger AS
$$
BEGIN IF new.floatingItem = FALSE
THEN
UPDATE public.orders SET timeorder = current_timestamp WHERE
new.bubNum=orders.bibNum;
END IF;
RETURN new;
END;
$$
LANGUAGE plpgsql VOLATILE;

CREATE TRIGGER web AFTER UPDATE ON public.fund FOR EACH ROW EXECUTE PROCEDURE web ();
Аноним 14/06/19 Птн 00:31:43 1416106142
>>1416095
тебе сказали уже: поменяй для начала на NEW
Аноним 14/06/19 Птн 00:54:33 1416114143
Снимок экрана 2[...].png (109Кб, 1752x824)
1752x824
Снимок экрана 2[...].png (143Кб, 1878x848)
1878x848
Аноним 14/06/19 Птн 07:48:29 1416162144
>>1416011
>ОРМ по большей части делают люди, которые пляшут от программирования и объектов. А не от грамотной схемы
я, честно говоря, не вижу противоречия в использовании ОО-модели и грамотной схемы базочки
Аноним 14/06/19 Птн 09:02:42 1416178145
eav.png (54Кб, 684x453)
684x453
Аноним 14/06/19 Птн 13:41:45 1416324146
>>1416162
Грамотная схема базочки не должна ничего знать про ОО-модель.
Только и всего.
Потому что схема реляционной бд строится по своим законам, а ОО-модель - по своим.
Я, в общем-то, об этом.
Аноним 14/06/19 Птн 13:45:08 1416331147
>>1416324
так модели уровня ORM - это рефлексия модели базы данных, с которой (обычно) приложение (бизнес-логика) не работает напрямую
если я нихуя не понял и сказанул хуйню, просто проигнорь
Аноним 14/06/19 Птн 13:45:35 1416333148
>>1416178
а теперь не поленись, и перечисли поля в селекте 1 и поля в селекте 2
Аноним 14/06/19 Птн 14:55:16 1416386149
>>1416333
Там макаба звездочку сожрала. На самом деле достаточно t0.phone_id
Аноним 14/06/19 Птн 16:33:59 1416442150
>>1416386
Ок. Чтобы понятнее было:
сделай со звездочкой, но убери груп бай
внимательно смотри, что у тебя в выборке получается
и почему не группируется вообще
Аноним 16/06/19 Вск 21:38:11 1417418151
Правильно ли я понимаю, что бизнес логику в БД уже никто не держит и изучать БД смысла нет?
Аноним 16/06/19 Вск 21:54:41 1417425152
Аноним 16/06/19 Вск 21:56:36 1417426153
Аноним 16/06/19 Вск 21:58:37 1417427154
>>1417418
Ещё как держат. Оракл это не только бд, но и целый стек накрученный поверх этой бд, и в банках этот стек используют во всю.
Аноним 16/06/19 Вск 22:05:00 1417432155
>>1417427
>Ещё как держат.
А зачем? В чём профит?
Аноним 16/06/19 Вск 23:53:27 1417458156
>>1417432
1. Простота. Все операции перед глазами, а не хуй знает где по стеку вызовов. Меньше шансов нафакапить с распределёнными транзакциями.
2. Скорость. Ты знаешь какие будут запросы в момент разработки, и можешь тюнить сразу же. Можешь пересобрать статистику вручную при необходимости, добавить хинтов, прибить план запроса гвоздями или не делать нихуя ибо так быстрее.
3. Единая платформа и куча программистов в штате под неё. В платформе есть всё что душа пожелает, даже готовая АБС за отдельный прайс
4. Легаси. Nuff said.
Аноним 17/06/19 Пнд 14:52:34 1417702157
>>1417432
Т.е. ты не видишь разницы в цепочке:
достать хуй из базы - сделать из него объект - ебануть что-нибудь с этим объектом - отправить обратно в базу

и

сделать все это в базе, выдав наружу только какой-нибудь иммутабл срез данных?
Аноним 17/06/19 Пнд 17:48:26 1417827158
>>1416442
Братан, второй запрос вообще ни одной строки не выводит. Группировать нечего. Я потому и спрашиваю что я не так делаю, раз у меня по ID ничего не ищет.
Аноним 17/06/19 Пнд 18:01:47 1417833159
>>1417827
У меня только вот так получилось это сделать, но выглядит как-то стрёмно.
SELECT t0.phoneId
FROM eav t0
join eav t1 on t0.phoneId=t1.phoneId and t1.parameterId = (select id from parameter where name = "Источник") and t1.valueId = (select id from value where name = "Сайт 1")
join eav t2 on t0.phoneId=t2.phoneId and t2.parameterId = (select id from parameter where name = "Группа") and t2.valueId = (select id from value where name = "Основная")
Аноним 17/06/19 Пнд 19:50:45 1417951160
Анон реквестинг хелп.
Надумал тут сдавать экзамены на сертификацию по мелкософт SQL, первый экзамен 761 сдал без особых проблем, готовлюсь к 762, так там оф учебник говорит, что его нихуя не достаточно и оно так. Особые проблемы ощущаю с dmv и мониторами для чека ресурсов и тюнинга производительности(Activity Monitor, Data Collector Sets, sys.dm_sranaya_ebota и т.д.). Знает ли анон какие проверенные ресурсы по данной тематике и/или прикладные конкретно для 762. В инете полно дампов, но там ответы неправильные, и их явно недостаточно, ибо цель не тупо натаскаться на экзамен, а подтянуть себя заодно.
Аноним 17/06/19 Пнд 20:00:44 1417967161
Аноны, обьясните пожалуйста нубу, что происходит при выполнении запроса, например, с сортировкой? Как ведут себя таблицы с которых идет выборка данны? Например, запрос
Slect * From Student ORDER BY name DESC; По какому алгоритму этот запрос обрабатывается? Сначала таблица Student сортируется по name, а уже потом возвращается? А после того как таблица вернулась операции отменяются? Или создается буферная таблица, с которой сначала выбираются данные, а уже там сортируются?
Аноним 17/06/19 Пнд 20:05:54 1417975162
>>1417967
Согласно оф мануалу от MS SQL(другие, полагаю, работаю так же):
the logical query processing order, which is the conceptual interpretation order, is different. It starts with the FROM clause. Here is the logical query processing
order of the six main query clauses:
1. FROM
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
6. ORDER BY
Each phase operates on one or more tables as inputs and returns a virtual table as output.
The output table of one phase is considered the input to the next phase. This is in accord with
operations on relations that yield a relation. Note that if an ORDER BY is specifed, the result
isn’t relational. This means that you can’t operate on such result with an outer query because
an outer query expects a relation as input

Карач, Order by работает на основе того, что сделали другие операторы, поэтому, кстати, только в нем можно обращаться к столбцам результата по алиасу.
Аноним 17/06/19 Пнд 22:27:35 1418040163
>>1417975
Этот дурачек.
>>1417967
Нужно смотреть план запроса.
Аноним 17/06/19 Пнд 22:39:56 1418045164
>>1418040
>Нужно смотреть план запроса.
Если покажешь такой план, где ОРДЕР БАЙ не последним идет, я охуею.
Но ты же не покажешь, да?
Аноним 18/06/19 Втр 07:42:07 1418111165
Screenshot2019-[...].png (51Кб, 1386x722)
1386x722
>>1418045
inb4 я тобой согласен полностью

я не он, хотя могу показать такой план
Аноним 18/06/19 Втр 09:11:37 1418136166
>>1418045
Да пожалуйста - запрос с фильтрацией на больше/меньше по rownum и сортировкой.
Запрос с аналитической функцией - тоже отработает после сортировки.
Охуеть, да?
Аноним 18/06/19 Втр 21:48:11 1418527167
>>1418111
Я так и думал, что найдется мастер-ломастер, который покажет на ордер-бай из вложенного селекта.
Найс.
Давай следующую попытку. С ордербаем от общего селекта.
Передавай привет, кстати, тому мудрецу, который вхуячил ордербай в подселект, он же там так нужен!
Аноним 18/06/19 Втр 21:51:24 1418529168
>>1418136
Первое - разумно, да. Хотя это и, очевидно, краевой случай.
Про аналитические функции поразмышляю. Но не вижу такой хуйни, кроме как для тех, которым важен порядок строк.

Но, очевидно, план запроса и тут на хуй не сдался. И так понятно, что если ты оперируешь rownum, то он будет после любых других действий.
Аноним 18/06/19 Втр 23:03:56 1418566169
postgres600.jpg (44Кб, 600x377)
600x377
Nastya960x703.jpg (124Кб, 960x703)
960x703
Объясните мне, почему вы такие никчемные? Пока вы рисуете схемки, тянка из МФТИ стала 59тым контрибьютором PostgreSQL.
https://postgrespro.ru/blog/company/4203947
Что вычувствуете, когда узнаёте о таких вещах?
Аноним 19/06/19 Срд 00:19:11 1418603170
>>1418566
Молодец! Умница! А я никчёмное говно. Такие дела.
Аноним 19/06/19 Срд 00:24:24 1418608171
Аноним 19/06/19 Срд 01:07:21 1418614172
>>1418608
двачую
у куна коммит не приняли бы, а у сельди есть вареник и ей все можно
Аноним 19/06/19 Срд 02:10:59 1418622173
>>1418529
Ну, роунам - специфичные случаи, но иногда бывает. Например, когда ты в подзапросе сортируешь по дате и добавляешь rownum as rn в поля выборки, а потом по нему делаешь rn = 1 - получаешь первую запись по дате. Таки лучше случая date = (select min date from huy).

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

А ещё сортировка может повлиять на выбор оптимизатором хэш джойна или мердж джойна при соединении двух наборов данных, так-то.
Аноним 19/06/19 Срд 10:45:51 1418692174
про порядок обработки. Вот вам дока: https://docs.microsoft.com/en-us/sql/t-sql/queries/select-transact-sql?view=sql-server-2017

Logical Processing Order of the SELECT statement

The following steps show the logical processing order, or binding order, for a SELECT statement. This order determines when the objects defined in one step are made available to the clauses in subsequent steps. For example, if the query processor can bind to (access) the tables or views defined in the FROM clause, these objects and their columns are made available to all subsequent steps. Conversely, because the SELECT clause is step 8, any column aliases or derived columns defined in that clause cannot be referenced by preceding clauses. However, they can be referenced by subsequent clauses such as the ORDER BY clause. The actual physical execution of the statement is determined by the query processor and the order may vary from this list.

FROM
ON
JOIN
WHERE
GROUP BY
WITH CUBE or WITH ROLLUP
HAVING
SELECT
DISTINCT
ORDER BY
TOP
Аноним 19/06/19 Срд 19:50:07 1418954175
>>1418692
Ты по-английски плохо читаешь, да?
>This order determines when the objects defined in one step are made available to the clauses in subsequent steps
И все.
К предмету обсуждения не относится вообще.
К предмету обсуждения относится вот это:
>The actual physical execution of the statement is determined by the query processor and the order may vary from this list.

Попробуй в следующий раз читать все буквы
Аноним 20/06/19 Чтв 00:15:59 1419119176
>>1418622
>А ещё сортировка может повлиять на выбор оптимизатором хэш джойна или мердж джойна при соединении двух наборов данных
Дай ссылку почитать про это
Без подъебки прошу
Аноним 20/06/19 Чтв 03:42:09 1419151177
>>1419119
Ну, вот что-то похожее на правду:
https://studfiles.net/preview/1037891/page:30/

А так там даже читать не о чем: если у тебя два отсортированных набора данных, то для группы значений из первого набора идёт поиск таких же значений во втором наборе до нахождения первого большего - дальше нет смысла искать, набор-то отсортирован.
Как nested loops, но меньше итераций вложенного цикла за счёт предварительной сортировки либо чтения индекса.
Аноним 20/06/19 Чтв 21:55:05 1419597178
>>1419151
Ну, твоя же ссылка говорит, что хешу вообще не всралась сортировка.
В сортмердже не будет итераций вообще, а будет 1 проход по одному набору, и 1 по другому.
НО! Сортировка ни на что не влияет. Оптимизатор может без всякой сортировки с твоей стороны решить, что сотрмердж будет быстрее.

В общем, сделай селект с /*+ USE_MERGE (или как в твоем диалекте хинт выглядит), и ордер баем. Хоть по тем же полям, что были в условии объединения.
И глянь в план запроса. Где будет ордер бай?

Если ты говорил о том, что имеет смысл херачить ордер бай в подселекты, то нет, не имеет. Если ты хочешь, чтобы сработал сорт-мердж, так оптимизатору и скажи. А не прыгай с бубном.
Аноним 21/06/19 Птн 01:29:09 1419694179
1561069732619.jpg (714Кб, 810x2745)
810x2745
>>1419597
Правильно моя ссылка говорит. И я тебе говорю, что сортировка нужна для мердж-джойна, а не для хэш джойна.
Только вот оптимизатор может на основании наличия в запросе сортировки и объема выборки сам выбрать мердж-джойн, а может выбрать хэш-джойн.
А может и выбрать мердж-джойн и сам отсортировать наборы данных. А один точно будет сортировать.
Смотри пикрил и не неси хуйню, что сортировка подзапроса не имеет смысла в случае мердж-джойна.

А ещё ты, наверное, не очень понимаешь смысл и процесс построения реального плана запроса и хинтов.
Аноним 21/06/19 Птн 16:28:07 1420021180
>>1419694
Пиздец, я так и думал (судя по тому, что первую ссылку ты прислал на русском), что с английским у тебя беда.

Удачи.
Аноним 21/06/19 Птн 16:59:42 1420033181
>>1420021
Хера ты рофлишь.
Ну давай, укажи, где я неправильно перевел. Я признаю свою ошибку, если ты не ебучий тролль без мозгов.
Аноним 22/06/19 Суб 20:16:32 1420520182
Ну ка двощерские погроммисты, поясните начинающему Богу Access-а как спланировать базу данных. Есть два стула... Один нормальный, второй с отверстием. Триллиард остальных характеристик абсолютно одинаковые. И есть таблица в которой эта пара стульев идет по возрастающему размеру, типа: стул высотой 19см, стул высотой 21см. Так вот, заводить по паре записей, типа стул 19см, стул 19см с отв. или сделать доптаблицу: "с отверстием";"без отверстия" и ключ этой таблицы добавить в таблицу со стульями? Но тогда опять их будет по две записи. Короче я уже нихуя не понимаю
Аноним 22/06/19 Суб 23:40:01 1420657183
>>1420520
>Ну ка двощерские погроммисты, поясните
Ну-ка пройди на хуй
Аноним 23/06/19 Вск 00:18:51 1420666184
>>1420520
А теперь выключи смехуечки и объясни, что у тебя за схема, в которой нельзя дырку в стуле сделать характеристикой. Высоту, значит, можно, а тип сиденья нет?
Если это два разных объекта, то как не пытайся, придется делать две записи.
Аноним 23/06/19 Вск 11:06:04 1420810185
>>1420666
>то как не пытайся
Пнятненько. Думал есть секретные многоходовки от мастеров проектирования БД.
Аноним 23/06/19 Вск 16:27:57 1420937186
Существуют ли какие-нибудь преимущества у noSQL перед обычными реляционками?
Тут есть люди, которые работют с хадуп и террадатой? Если ли у терродаты преимущества перед, например, ораклом? Правильно ли я понимаю, что она гораздо сильнее распаралленина?
Аноним 23/06/19 Вск 16:57:10 1420951187
>>1420937
Непересекающиеся задачи, а не преимущества
Когда кто-то пытается использовать noSQL для того, для чего все остальные десятилетиями используют SQL, это просто значит, что этот кто-то - мудак
Аноним 23/06/19 Вск 17:11:05 1420969188
>>1420951
Можешь привести пример задачи, где нужно использовать noSQL и не нужно SQL?
Аноним 23/06/19 Вск 17:51:29 1420990189
>>1420937
Обычно упоминается CAP теорема. noSQL это быстро но не гарантируется целостность данных в каждый конкретный момент времени. SQL (с транзакциями) - медленно но гарантируется целостность данных.
Аноним 23/06/19 Вск 20:51:45 1421122190
>>1420969
там, где у тебя естественным образом возникает 3НФ и, соответственно, постоянное пересечение таблиц - там sql
там, где неструктурированная информация (до хуя текстов, про которые тебе настрать, кто они, откуда, зачем, когда и где родились, и как связаны друг с другом) - там nosql

но умнее будет, если ты в гугле забьешь nosql vs sql и прочтешь первый пяток из выдачи
Аноним 24/06/19 Пнд 13:40:51 1421482191
Анон, сколько средняя ЗП разработчика БД в ДС?
Пишу пока изредка процедуры и триггеры на работе, сам бэкенд-разраб.
Вот думаю перекатиться, тк всегда хотел лучше разбираться в БД и проектировании, нравится писать на SQL, да и вообще ищу более консервативную область IT без модных фреймворков, гик-культуры, маскотов и прочей блевоты. Потом может в аналитику перекачусь.
Аноним 24/06/19 Пнд 16:48:44 1421591192
>>1421482
Хм, а сколько у тебя лет опыта и на каком языке пишешь? Может просто останешься в нём же, но найдёшь более интересную работу?

Стартовую ЗП сеньора ораклиста я бы обозначил в 150+, но это устаревший на сегодняшний день подход - сейчас в БД принято только хранить данные.
Аноним 26/06/19 Срд 08:41:23 1422337193
>>1421482
мне как бекенду [как правило] нужно разбираться в базочках чуть выше среднего уровня. офк, если сильно распределенные команды, то там за этим могут следить совсем отдельные люди, но, преимущественно, на твоей стороне все, чего касается бэк, входит в зону ответственности (хотя бы на уровне, я знаю слово redis и почему мы достаем сейчас трогаем его, а не мускульный кластер)
Аноним 26/06/19 Срд 14:16:18 1422493194
PmT9c1RpN38.jpg (230Кб, 810x1080)
810x1080
Привет. Подскажите как вкатиться в базы данных (какой-нибудь учебник или что-то типа того).
Сам по базам данных слушал только курс в универе и писал чё-то на C# с entity framework, но уже всё забыл.
Аноним 26/06/19 Срд 15:40:24 1422574195
>>1422493
что уровня сложнее википедии тебя вообще интересует?
Аноним 26/06/19 Срд 21:23:13 1422779196
1327895036252.jpg (175Кб, 535x807)
535x807
Привет, анон.
Не увидел в шапке гайда, но спасибо на том, что такой тред вообще есть. Хотел бы получить совет куда дальше расти.
Имею за плечами 6 лет опыта oracle developer. Уровень оценил бы как крепкий мидл, но многих нюансов работы базы не знаю, какие должен знать сеньор.
Последние два года работаю в одном из топ банков, в основном пишу бизнес-логику, работа уже становится однообразной.
Понимаю, что писать однообразный код и решать типовые задачи придется вскоре через силу. В какую сторону развиваться дальше? Вкатываться в ентерпрайз разработку желания особого тоже нет (имеется в виду java). Может в дата инженеры или сайнтисты? Вообщем вопрос, куда можно податься разрабу БД, при этом чтобы переквалифицироваться частично и/или постепенно. А если по ЗП не сильно просесть - то вообще сказка.
Аноним 26/06/19 Срд 21:38:54 1422785197
Ананасы, работа интересует? Есть вакансия для начинающих вкатывальщиков с минимальным опытом работы, или вообще без него.

Нужен эскуэльщик, который быстро разберется в существующих скриптах, и будет хуярить новые как безумная обезьянка. Быстро и правильно. А также - смотреть на цифры, которые выгрузились, и проверять их на адекватность. Эти скрипты нужно документировать и цеплять к экселю.
Больших познаний в sql не нужно, нужно понимание как работают оконные функции, джойны и как выбрать индекс для таблицы. ЗП от 100к, в зависимости от опыта. В общем, особо уметь нихуя не надо, но работы много.

Ах да, из формальных требований нужна вышка, остальное не принципиально.

Если кому-то интересно, телега @random_1234, пишите, пообщаемся.

Аноним 26/06/19 Срд 21:46:24 1422788198
Аноним 26/06/19 Срд 21:48:10 1422792199
>>1422788
ДС. Прошу прощения, забыл.
Аноним 26/06/19 Срд 22:33:20 1422814200
>>1422779
Я наделяю тебя ответственным за шапки треда.
Ты всё равно тут самый топовый.
Аноним 26/06/19 Срд 22:49:35 1422829201
>>1422814
Кек, плиз, судя по обсуждениям треда тут скучающие свитерысиньоры троллят друг друга.
Аноним 26/06/19 Срд 23:00:18 1422839202
>>1422779
Вот ты и разрешишь спор выше насчёт за sort merge, раз шесть лет опыта.

Так ты же можешь с таким количеством опыта начать свои темы продвигать. Начиная от какого-нибудь сборщика патчей заканчивая оптимизацией бд в целом.
Ну, то есть, ты же можешь расти внутри своего банка, разве нет?
Аноним 27/06/19 Чтв 00:40:30 1422888203
>>1422839
>Вот ты и разрешишь спор выше насчёт за sort merge, раз шесть лет опыта.
Ну начнем соправданий того, что все учатся по-разному и на разных примерах и учебниках и 6 лет работы ни о чем не говорит.
Ниже расскажу про фейл, который случился не так давно.

Думаю order все же в первую очередь используется, когда клиенту требуется предоставить результат запроса в сортированном виде (top n, pagination и т.п.). В примере из поста с вопросом очевидно, что сортировка выполнится последней.
В любом случае согласен с аноном, который предлагает смотреть реальный план соединения двух сортированных выборок, с хинтом и без.
>А может и выбрать мердж-джойн и сам отсортировать наборы данных
Задался вопросом, а может оптимизатор отказаться от промежуточных сортировок, которые явно указаны в коде запроса? Например, в случае merge joina двух сортированых выборок, результат будет отсортирован по ключу соединения , а в случае hash joina нет такой гарантии?

Кстати, за все время пару раз встречал код, где явно прописаны были хинты. Думаю, если статистика обновляется регулярно, то оптимизатор очень редко мажет с планом.
А попытки поиграться с хинтами заканчивались максимум чуть худшим планом выполнения.

Так же встречал вот такое применение order by
SELECT * FROM demo
order by case when id%2=0 then '1' else '0' end desc
только вместо case использовался decode
с последующей фильтрацией rownum = 1.
Посмотрю план, кстати, не понятно чем это эффективнее простого фильтра в where.


Аноним 27/06/19 Чтв 02:51:04 1422913204
>>1422888
Ну, значит, мой проеб, я неправильно сделал выводы на основании того, что читал.
Насчёт промежуточных сортировок - кстати, даже не задумывался. Хрен уже с этим sort merge, насчёт этого - думаю, что если сортировка одна, он вынесет ее на верхний уровень. А вот в случае нескольких - уже не знаю.
В любом случае, я сталкивался с тем, что реальный план может отличаться от того, который строится без выполнения запроса. Это и насчёт явных хинтов: сам был ситуации, когда мердж в подзапрос выглядел с виду хорошо, а на самом деле выбрал NL для набора данных в несколько миллионов с обеих сторон, если не ошибаюсь. И пока я явно ему не сказал use_hash, он не выполнялся. То есть либо смотреть v$sql_plan, либо лог сервера, мирончик показывал как(а я уже не помню, как именно).
Можно ещё про driving_site сказать, но это немного другое дело.
А иногда тот же use_hash может быть лучше при хуевом факторе кластеризации и table access by rowid.

Про твою сортировку - мб там функциональный индекс был? Хотя этот запрос же выбирает, по факту, рандомную строку среди чётных - мало ли, зачем нужно было именно так.
С другой стороны, оракл говорит, что нет гарантии, что один запрос в два разных момента времени вернет одинаковые с точки зрения сортировки наборы данных, так что, в теории, и обычный фильтр должен дать случайную строку хотя я не раз обращал внимание, что хотя бы для простых запросов без параллелей порядок один и тот же. Либо как в индексе лежит, либо "сортирует" по rowid.

ты забыл про фейл рассказать
Аноним 28/06/19 Птн 15:49:12 1423979205
Screenshot2019-[...].png (10Кб, 460x106)
460x106
Screenshot2019-[...].png (13Кб, 236x161)
236x161
Screenshot2019-[...].png (19Кб, 320x168)
320x168
Есть 2 таблицы. Почему такой запрос не работает? БД - postgresql,
Аноним 28/06/19 Птн 16:50:03 1424021206
>>1423979
Потому что есть зарезервированные слова в SQL.
Аноним 28/06/19 Птн 17:59:51 1424052207
>>1423979
потому что ты используешь зарезервированное слово from?
Аноним 28/06/19 Птн 18:53:53 1424086208
>>1424052
Потому что я ньюфаг, сорри.
Аноним 29/06/19 Суб 01:18:50 1424283209
>>1422913
>ты забыл про фейл рассказать
Могу рассказать даже про два, но позже.
Денек отойду от работы.
Аноним 29/06/19 Суб 22:12:37 1424706210
>>1422913
>ты забыл про фейл рассказать
Это все относится к Ораклу, в других СУБД может и не воспроизвести.

1. В процедуре, в самом внутреннем вложенном цикле в курсоре написал селект с большим количеством джоинов по таблице
из которой удаляются/добавляются записи в той же самой транзакции. Если не вдаваться в подробности, то на большом объеме входных данных это вылилось в подвисание процедуры.
Основная причина - чтение данных не из блоков, а из сегмента отката. Ну это со слов более опытных коллег такая причина.
В логах сессии это проявлялось очень большим значением buffer_gets, что считается дурным знаком.

2. Представим таблицу, в которой есть текстовая колонка
"Значение свойства" (val ) - для хранения значений с разными типами данных: строки, числа, даты .
"Код свойства" (code) - все значения с одинаковым кодом относятся к одному типу данных.
"id объекта" (object_id) - несколько разных свойств могу относиться к одному объекту

Упрощенно, задача была написать запрос, выбирающий объекты с конкретным значением свойства.
Заранее известно, что требуемому коду свойства соответствуют числовые значения.

Таблица свойств P
Таблица Object O

select o.*
from o, p
where o.id = p.object_id
and p.code = 'PRICE'
and p.val = :x

, где x - число.
колонки p.code, p.val - индексированы простым индексом

Так вот на одном стенде этот код работал без ошибок, а на другом завершался с ошибкой рано или поздно.
Ответ очевиден, но если вдруг кому-то интересно подумать, могу под спойлер ответ спрятать.


Надо помнить, что в оракле, если в коде запроса есть бинды, но нет явного приведения типов в сравнении переменной и значения колонки,
то тип колонки таблицы приводится к типу переменной.
В одном случае план запроса был с index range scan по колонке code,
т.е. сначала находилась запись, где точно было число, а потом происходило сравнение.
В другом же был full scan и для каждой записи происходила попытка преобразовать значение к числу,
что и вываливалось в ошибку, если в строке встречался не числовой символ.

Мелочь вроде, но досадная, нельзя такое упускать.


2.
Аноним 30/06/19 Вск 00:40:07 1424757211
>>1424706
Жиза, сталкивался и с тем, и с другим. Второй пункт - так вообще в первые пару месяцев постоянно допускал такие ошибки - первичные ключи у нас были текстовые, а сравнение могло быть с числом, а оракл всегда при сравнении строки с числом неявно приводит первую к числу. Но нюанс про биндовые переменные не знал, запомню.

А первый пункт - да, есть такое, хотел как-то апдейтить 40+ миллионов одним мерджем, откат операции лет больше 25-ти минут.
Аноним 30/06/19 Вск 17:30:47 1424974212
>>1424706
>Основная причина - чтение данных не из блоков, а из сегмента отката.
Если блок был обновлён апдейтом, то оригинальный блок помещается в сегмент отката. Оттуда будут читать данные другие сессии, если им понадобится тот же самый блок, и производиться rollback. Но твоей собственной сесии, которая обновляет данные, обращаться в сегмент отката не за чем.
Ты упомянул про циклы, да еще и вложенные. Всякие forall не зря ведь придумали, sql в циклах работает медленно.
По поводу buffer gets. Вангую, что после того как блок был прочитан в кэш, затем обновлён, Оракл не мог получить его из кэша и перезачитывал заново с диска. Отсюда серьёзно возросший I/O, который и повесил процедуру. Но это предположение.

> тип колонки таблицы приводится к типу переменной.
Не совсем так, приводится к старшему типу. Если у тебя поле нумбер, а переменная варчар2, то конвертироваться будет бинд, и всё будет хорошо. А если наоборот, то да, конвертироваться будет поле, и индекс не будет использован.
Аноним 30/06/19 Вск 18:11:14 1424987213
>>1424974
Да, верно, неправильный вывод сделал.
Вот этим утверждением руководствовался

During SELECT FROM operations, Oracle converts the data from the column to the
type of the target variable

Видимо под target variable подразумевается переменная для хранения результата запроса.
Аноним 01/07/19 Пнд 22:23:28 1425760214
Анончик, помоги плз. Собираюсь делать свою приложуху. С беком мало работал, с базами еще меньше. С основами скл разобрался(как запросы делать), теперь нужно спроектировать базу, но я не знаю как. Подскажи статей(не книги), можно на английском, как по-быстрому спроектировать базу ньюфагу.
Аноним 02/07/19 Втр 01:01:48 1425904215
>>1425760
>По-быстрому
>Спроектировать базу
>Ньюфагу
Кек.

В первую очередь - кури нормальные формы. Потом пойми, какая бд тебе нужна - транзакционная или аналитическая. Дальше сам догадаешься.
Аноним 02/07/19 Втр 09:01:48 1425998216
Двач,добрый день,не могу понять как можно реализовать определенную задачу,в общем,в Excel есть таблица с номерами телефонов,номером группы и именем. Всё это нужно конвертировать в Word подставляя к шаблону. Т.е. ,может так будет понятнее.
Excel
телефон Группа Имя
123 1 Лера
222 2 Женя
444 3 Катя

Word
Студент группы 1 Лера была зачислена(или отчислена). Контактный номер 123

Можете помочь или я могу пойти нахуй?
Аноним 03/07/19 Срд 10:46:20 1426901217
>>1425998
почему ты с этой задачей пришел в тредик про базочки?
не уверен, что офисные продукты могут вот так влегкую импортировать данные из одного пакета в другой, да и по образцу тем более
Аноним 03/07/19 Срд 13:41:05 1426979218
>>1426901
уже сделал системму через filldocuments,полезная хуйня
Аноним 04/07/19 Чтв 12:11:37 1427779219
>>1425998
Тебе один раз или какая-то интеграция нужна?

Если один раз, выполни свой select, потом скопируй результат просто ctrl+v а потом вставь в word и excell
Если умеешь вставлять не только через ctrl+v, все получится.
Аноним 05/07/19 Птн 12:13:21 1428371220
Выручайте, поцоны. На работке сменилось руководство, мне дали задание вкатиться в область, в которой я вообще нулевой. расклад такой: БД оракл, есть програмизды, которые пишут обновы. Мне нужно эти обновы накатывать, перед этим делая бекап тех элементов, которые затрагиваются обновлением.
Как в это въехать по быстрому, что почитать? Может кто ссылку на статью/главу даст. В данный момент нужен именно этот минимум знаний, более подробно изучать буду уже потом.
Аноним 05/07/19 Птн 13:23:25 1428393221
>>1428371
О, Дима, привет)).
Если я угадал, то у тебя весь функционал уже есть.
А если нет - то пиши сборщик, который по имени файла из патча будет звать процедуру, которая текст пакета вытаскивает из бд и делай spool в файл бекапа.
это если из sqlPlus будешь ставить патчи.
Аноним 05/07/19 Птн 13:32:05 1428397222
>>1428393
>О, Дима, привет)).
Это не я.
Аноним 05/07/19 Птн 14:52:55 1428418223
>>1428397
"Райдер, опять ты
Нет, это не я!"

Бтв раз не ты, то окей.
Короче, простая схема: вот есть у тебя патч (архив, ветка в гите или ещё какое изъебство). Ты пишешь прогу, которая формирует из файлов патча скрипт для sqlPlus(т.е файл, в котором у тебя будут вызовы выполнения файлов патча) в определенном порядке(например, DDL до DML), а в этой проге проверяешь, что если тебе встретился пакет/функция или что-то в этом роде, то ты перед выполнением файла из патча включаешь спул, достаешь текст этого объекта(он попадет в указанный в спуле файл) и выключаешь спул.
Вот тебе простой бэкап. Если ты особо извращенец - повесь триггер на DDL, чтобы текст старого объекта записывался в таблицу бэкапа + была запись в таблице логов.
Аноним 12/07/19 Птн 13:16:11 1433168224
Привет, ребятки.
Есть кто по сфинксу?
Можете пояснить как в sphinxql заставить работать select distinct так же как в mysql?
Версия 2.2.11
Аноним 15/07/19 Пнд 01:02:21 1435414225
Анонасы!
Тупой вопрос из разряда "читай документацию", но все же, может, кто-то от доброты душевной ответит.

Таблица с записями с группировкой по полю Х.
a varchar,
b number
x number

(например: x - ид сотрудника, b - месяц, a - оценка работы)

Как взять такие записи по max(b) group by x, у которых В МАКСИМАЛЬНОЙ ПО b записи a like '%zaebal%'?
(т.е. взять только таких сотрудников, которые в последний месяц заебали всех)

Как это сделать без подселектов.
С подселектом любой дурак сделает.

Having я же не могу подвязать, он только по агрегатным условиям работает.

Короче, можете издеваться сколько влезет, только ответьте, как сделать одним селектом (может оконные/аналитические функции?)
Аноним 15/07/19 Пнд 09:09:47 1435460226
>>1435414
>max(b) group by x
это значит в последний месяц для каждого работника иль чо?
Аноним 15/07/19 Пнд 09:57:22 1435503227
Аноним 15/07/19 Пнд 17:02:01 1435983228
>>1435460

>это значит в последний месяц для каждого работника иль чо?
да, там же написано дальше:
>т.е. взять только таких сотрудников, которые в последний месяц заебали всех)
Аноним 15/07/19 Пнд 17:02:20 1435985229
>>1435503
Нет.
Надо было БЕЗ ПОДСЕЛЕКТОВ :)
С подселектами я и сам с усам.
Аноним 15/07/19 Пнд 17:05:35 1435991230
>>1435985
cte не подселект ващет )
Аноним 15/07/19 Пнд 18:01:42 1436067231
Аноним 15/07/19 Пнд 18:33:27 1436110232
>>1435991
Ну, даже не знаю, что тебе на это и ответить.
Давай, чтобы не было лишних споров, я переформулирую:
слово SELECT во всем запросе должно быть только одно
Более того, во From должна быть только одна таблица только один раз

Я подозреваю, что это так не сделать. Но я дремучий папуас среди специалистов, вся надежда на это.
Аноним 15/07/19 Пнд 21:59:11 1436327233
>>1436110
Честно, не знаю, как тебе именно помочь с таким условием, но попробуй поиграться с cube и rollup, вдруг там отыщешь нужное тебе. А если это oracle, то можешь изъебнуться с model.
Проблема в том, что вышеупомянутые расширения группировки, скорее всего, в плане запроса будут использовать union all и разные группировки в каждом из запросов - та же работа rollup, если мне не изменяет память, так и описывается. То есть, строго говоря, одним селектом это не будет.
Аноним 16/07/19 Втр 02:13:07 1436508234
Анон, привет, куда можно податься pl/sql девелоперу в Спб?
По уровню околомиддл.
Аноним 16/07/19 Втр 15:55:40 1436819235
>>1435414
СУБД какое?
С помощью АНСИ с одним селектом сделать это довольно сложно, но я вижу вариант сделать это в оракл.
Аноним 16/07/19 Втр 18:56:03 1436982236
>>1436819
Давай оракл
Я оттуда подумаю, в чем цимес
Прям ща Постргес, так что почти оракл
Но я надеялся, что я просто проебал новшества в анси (я оконные функции, например, только пару месяцев назад по диагонали проглядел, хотя ебашу много лет).
С другой стороны, это ж значит, что я все правильно понимаю. Хотя задача настолько очевидная, что странно, почему к ней еще не прикрутили простое решение
Аноним 17/07/19 Срд 09:53:39 1437393237
БД.JPG (145Кб, 1159x574)
1159x574
Анончики, может кто оценить лабораторную? Что поменять, чтобы потом не охуеть, когда нужно будет пилить из этого курсач с приложением? Есть требование к числу сущностей, а с фантазией и представлением работы поликлиники трудно, так что как уж вышло.
Аноним 17/07/19 Срд 10:37:14 1437415238
Первый раз использую базу данных в приложении.
Мне нужно, чтобы пользователь выбирал какое-то большое количество параметров (у каждого параметра выбор да/нет). Параметров около 1000. Как лучше это хранить и реализовать? Я подумал, что нужно делать такую таблицу
ИмяПользователя - 0011100... где 1 или 0 выбор параметра.
А отдельно хранить список параметров с соответсвующими индексами.
Может есть лучше решение?
Аноним 17/07/19 Срд 10:49:10 1437422239
>>1437393
Обращение-Прием 1:1 - супер-спорно ) Причем анализы едут от обращения, а диагноз от приема

Занимаемая должность - Должность как минимум сбивает с толку. К тому же ставка привязана к кабинету по факту, а не к реальной должности

ну и График. предполагается, что у тебя люди приходят только в нужные дни с Х до У? смену сочинить бы е-маё

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

>>1437415
[Пользователи] 1:М [Парамерты пользователей] М:1 [Параметры]
Аноним 17/07/19 Срд 11:33:28 1437449240
>>1437393
А VBA разве может понять строки с пробелами?
Аноним 17/07/19 Срд 11:48:46 1437459241
>>1437422
>Обращение-Прием 1:1 - супер-спорно )
Да, с этим соглашусь, ошибочка, пациент вполне может записаться к нескольким врачам.

>Причем анализы едут от обращения, а диагноз от приема
А это непонятно. Ну, как бы, пациент обращается и идет либо к врачу (прием), либо на анализы (они же необязательно врачом на приеме назначаются). Диагнозы ставятся врачом на приеме. Пока не доходит, на какую ошибку ты указываешь

Над остальным покумекаю.

>>1437449
Если обрамить квадратными скобками - вроде как да.
Аноним 17/07/19 Срд 11:57:59 1437465242
>>1437459
я не совсем понял, что ты хотел описать как "Обращение", а что как "Прием". с одной стороны там все можно залить в одну сущность, с другой есть нюансы.
ну вообще обращение оно не всегда линейное. я вот пришел к терапевту потому, что голова болит (считай, обращение началось еще до приема), терапевт посмотрел (прием раз), отправил к хирургу (прием 2.1) и патологоанатому (прием 2.2) (а это все то же обращение, но не точечное во времени, очевидно), они еще куда-то отправили, плюс накидали анализов. причем, кто-то посередине не может поставить никаких диагнозов пока не пришли ответы из направлений.
Аноним 17/07/19 Срд 12:36:31 1437499243
>>1437422
>[Пользователи] 1:М [Парамерты пользователей] М:1 [Параметры]
Но ведь тогда вторая таблица получится сверх большая. Каждый новый пользователь будет увеличивать её на 1000 строк (это если параметров только 1000). Если количество пользователей будет большим, пиздец же случится, не?
Аноним 17/07/19 Срд 12:59:17 1437519244
>>1437499
пару лямов строк любая хоть сколько-нибудь серьезная СУБД отработает без больших проблем. тебе же не SELECT * FROM делать, предполагается, что ты еще и использовать будешь адекватно таблицу.
разделение параметров по колонкам (в одном физическом аттрибуте или по каждому на один параметр) сверх-сильно усложняет поддержку такого решения.
если ты сможешь сгруппировать параметры каким-либо образом и выделить нечто вроде:
[Пользователи] 1:М [Параметры пользователей 1] М:1 [Параметры_1]
[Пользователи] 1:М [Параметры пользователей 2] М:1 [Параметры_2]
[Пользователи] 1:М [Параметры пользователей 3] М:1 [Параметры_3]
будет попроще, но это такое себе решение, я бы ниадобрил
Аноним 17/07/19 Срд 13:03:51 1437523245
Аноним 17/07/19 Срд 19:21:08 1437757246
>>1435414
Дай пример с данными.
Как есть и как должно быть.
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов