М.Двач / Программирование

Двач.hk не отвечает.
Вы видите копию треда, сохраненную 7 октября 2019 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

39 Кб, 801x251
Кластеризованный уникальный баз данных тред /sql/ /sql/ 25 мая, 21:52 1406455 В конец треда | Веб

Добро пожаловать в свитерный тред.

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

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

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

Ответы065650663007225120571574417426403254254444698483814854750649619346409271625

112 Кб, 1289x809
2 25 мая, 23:41 2 1406481

оцените курсовую ебана

Ответы064950654106546413864178761570

3 26 мая, 00:04 3 1406495

>>1406481
Сущности называются единственным числом.
Тем более, что множественное число ты все равно не умеешь образовывать.

Ответы59669

4 26 мая, 05:42 4 1406541

>>1406481
Ты долго ебашил спайсы чтобы додуматься хранить билеты и поезд не в таблице билетов, а в таблице пассажиров?

Ответы0654606867

5 26 мая, 06:01 5 1406546

>>1406481
>>1406541
Где таблица с рейсами? Иди дорабатывай.
Ну либо своруй структуру бд самолётов с sql-ex

Ответы06867

6 26 мая, 08:59 6 1406565

>>1406455 (OP)
> поясняем за специальности, в которые можно вкатиться в сфере СУБД
Кто начнёт?

Ответы06595

7 26 мая, 11:19 7 1406595

>>1406565
Пердеды с sql.ru Только они здесь не сидят, наверное

Ответы06901

8 26 мая, 12:27 8 1406630

>>1406455 (OP)
> скиллы, которые нужно подтягивать новичкам
sql, основы реляционных бд, python(опционально)
>поясняем за специальности, в которые можно вкатиться в сфере СУБД
на hh можно посмотреть
(и там же знания необходимые для нюфагов)

Ответы06658

9 26 мая, 13:29 9 1406658

>>1406630
нахуя питон? R не интегрируется в эти ваши опенсорсные субды?

Ответы06703

10 26 мая, 14:15 10 1406703

>>1406658
не видел разрабов на R
да и кому он нужен если есть змей

Ответы06721

11 26 мая, 14:49 11 1406721

>>1406703
тошо он изначально заточен под анализ данных, а путон вкатился в эту нишу не пойми каким боком

Ответы07102

12 26 мая, 17:26 12 1406867

>>1406546
>>1406541
Это вы еще ему не сказали, что он навернет говна, когда пилот с одного самолета на другой пересядет.

13 26 мая, 18:03 13 1406901

>>1406595
Я тоже читаю ин-фу от наших предков. Нам всем базачём нужно составить вопросы и создать там тред.

14 26 мая, 18:05 14 1406905

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

15 26 мая, 23:46 15 1407102

>>1406721
тебе не нужно их анализировать тебе нужно их обрабатывать и складывать
(маня ты не дата саентист! проснись!)

Ответы07181

16 27 мая, 09:06 16 1407181

>>1407102
ты дурачок?

Ответы07309

17 27 мая, 10:47 17 1407225

>>1406455 (OP)
Что там по книгам/ресурсам по которым можно освоить работу с каким-нибудь постгре и научиться sql, чтобы на собеседование стыдно не было?

Ответы0723507803

18 27 мая, 11:06 18 1407235

>>1407225
википедия

19 27 мая, 13:33 19 1407309

>>1407181
Ты не в тот тред пришёл, не позорься.
мимо

Ответы07389

20 27 мая, 13:34 20 1407310

Аноны, есть какой-нибудь ресурс, типо sql-exe, только по процедурным расширениям? Можно на английском.

21 27 мая, 16:06 21 1407389

>>1407309
я серьезно, че

22 27 мая, 21:00 22 1407603

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

Ответы0761107646

23 27 мая, 21:16 23 1407611

>>1407603
А какая СУБД интересует?

Ответы07615

24 27 мая, 21:34 24 1407615

>>1407611
Postgre

25 27 мая, 22:35 25 1407646

>>1407603
У Оракла в документации до хуя есть.
Concepts, например, если я не путаю.
У Постгре тоже в документацию втыкай.

26 28 мая, 10:00 26 1407803

>>1407225
бамп

27 28 мая, 11:37 27 1407836

Ребят, помогите, через 2 дня собес, а мне нужно знать базовые знания запросов sql, а я кроме как вставить что то из таблицы и вытащить ничего не знаю, что за эти 2 дня можно прочитать и где?

Ответы0783907850

28 28 мая, 11:43 28 1407839

>>1407836
это и есть базовые знания

Ответы07840

29 28 мая, 11:44 29 1407840

>>1407839
окей, а дальше как это развить?

Ответы07849

30 28 мая, 11:59 30 1407849

>>1407840
ну джойны почитай
дальше индексы
возможно cte, оконные функции
опционально процедуры/функции/вью

31 28 мая, 12:01 31 1407850

>>1407836
>базовые знания запросов sql
CREATE, REMOVE, UPDATE, DELETE (CRUD), что еще нужно для счастья?

Ответы0785107929

32 28 мая, 12:02 32 1407851

>>1407850
join?

33 28 мая, 14:15 33 1407929

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

Ответы07945

34 28 мая, 14:33 34 1407945

>>1407929
CUT, REMOVE, UDALIT', DELETE

Ответы07993

35 28 мая, 15:44 35 1407993

>>1407945
>UDALIT'
unmake тогда уж

Ответы0802308079

36 28 мая, 16:05 36 1408023

>>1407993
нет

Ответы08026

37 28 мая, 16:10 37 1408026

>>1408023
да

Ответы08074

38 28 мая, 17:09 38 1408074

>>1408026
пидора ответ

Ответы08138

39 28 мая, 17:22 39 1408079

>>1407993
UNINSERT

Ответы08138

40 28 мая, 18:30 40 1408104

А где, ну или в какой субд, лучше всего практиковать запросы?

Ответы08144

41 28 мая, 19:16 41 1408138

>>1408079
unmake есть в толковом словаре
https://www.merriam-webster.com/dictionary/unmake
uninsert нет
>>1408074
нахуй пошел, тебе наверное понравится

Ответы08382

42 28 мая, 19:30 42 1408144

>>1408104
на sql-ex

43 29 мая, 00:54 43 1408382

>>1408138
Бля, я думал, тут умные-остроумные собрались.
А тут ебанат в словарь полез.

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

Пиздец, вообще. Закрывайте на хуй программач.

Ответы08387

44 29 мая, 00:56 44 1408387

>>1408382
>программач
Какой нахуй программач, юродивый, это же /зк
Или в лучшем случае /prrrrrrrrrrrrrrrrr
Живи с этим.

Ответы08499

45 29 мая, 08:20 45 1408499

>>1408387
>Какой нахуй программач, юродивый, это же /зк
он дома расскажет друзьям и невесте как он подстрелил двух /зк ?

46 30 мая, 18:15 46 1409326

Проебал перекот.

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

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

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

>Понимание принципов разработки OLTP систем
Что тут хотят от меня? Ну индексы не вешать чтобы вставка была быстрее, ну sql аналитику не крутить на oltp базах, что еще тут рассказать?

Ответы093970967413595

47 30 мая, 19:28 47 1409397

>>1409326
>Умение разобраться в чужом коде
Пидарасы, сэр.

48 31 мая, 06:54 48 1409674

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

1,5 Мб, 959x960
49 31 мая, 20:36 49 1410061

Аноны, помогите. Нужно к базе данных написать простенький интерфейс, чтобы через него в эту самую бд (или эти самые бд) можно было вводить записи + проводить какую нибудь сортировку, поиск и подобные простые запросы. На чем легче всего будет реализовать? Интернетик пестрит вариантами либо с php, либо с C# + MySql или Microsoft Access, но не могу пока определиться. В этих языках и софте я полный штрих, придется с нуля осваивать. Единственное, чуток в С разбираюсь и еще меньше в плюсах.

Ответы1006261571

50 31 мая, 20:45 50 1410062

>>1410061
C# + Entity Framework
обучающих статей на MSDN должно хватить для простейшего круда. алсо EF имеет провайдеры для множества базочек, под капотом можешь хоть SQLite заюзать

51 1 июня, 13:35 51 1410278

Господа, попробуйте представить, что вы стали ниибатся менеджером, который выбивает деньги на проекты у бизнеса.
Деньги вы получили, но при выборе средств разработки вы столкнулись с альтернативой. Продукт вы можете реализовать, используя три СУБД:
1) Oracle
2) MS SQl
3) Postgress
Есть ли хоть какая-нибудь статья, которая ОБЪЕКТИВНО сравнивает эти три СУБД?

Ответы1028110318

52 1 июня, 13:37 52 1410281

>>1410278
Если нет, то как бы вы аргументировали свою позицию в ту или иную сторону, бабки не проблема

Ответы10338

53 1 июня, 14:40 53 1410318

>>1410278
оракл - неубиваемая хуйня для миллиарда транзакций в секунду. требует, возможно, дорогих девелоперов

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

постгре - опенсурс и этим все сказано

54 1 июня, 15:02 54 1410338

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

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

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

ИМХО за 3,5 года с БД

55 1 июня, 18:01 55 1410396

Товарищи, выручите пожалуйста, помогите правильно запрос к БД написать.

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

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

Ответы1040110671

56 1 июня, 18:23 56 1410401

>>1410396
Без структуры таблиц сделать это сложно.

Я так понимаю, у машины есть атрибут типа свободно/занято. Если занято, то скорее всего можно сделать джоин к тому за кем занято-на какую дату.

Ответы10407

57 1 июня, 18:42 57 1410407

>>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, хотя в собесе не сказано, что машина может быть заказана и возвращена в тот же день).

57 1 июня, 18:42 57 1410407

>>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, хотя в собесе не сказано, что машина может быть заказана и возвращена в тот же день).

Показать весь текст
Ответы104091067110790

58 1 июня, 18:43 58 1410409

>>1410407
Наврал, SQLite у меня, а не T-SQL. Прошу прощения!

29 Кб, 647x527
59 1 июня, 18:50 59 1410412

Привет, аноны. В каком софте можно нарисовать именно такую логическую модель бд?

Ответы10441

60 1 июня, 19:57 60 1410441

>>1410412
SQL Developer, Erwin, UML.

61 1 июня, 20:09 61 1410447

10 Кб, 514x26924 Кб, 749x48022 Кб, 583x51227 Кб, 1225x313

Дароу. Короче меченый я тебя спас и в благородство играть не буду придумаешь для меня пару заданий и мы в расчете. А именно для такой базы данных надо придумать 10 запросов на INSERT и 10 на UPDATE и 1 на DELETE. Сами решения писать не надо только текст заданий. Фантазии пиздец не хватает написал уже 40 ебучих заданий из 60. схема на пикчах

62 2 июня, 12:17 62 1410635

Привет антуанам.
Наслышан про схему, когда вместо offset'ов используются page_token'ы (потому что оффсеты медленные на больших таблицах).
Как мне объясняли, page_token'ы делаются по какой-то хитрой схеме через where, но я тупой и у меня не получается нагуглить это самостоятельно.
Подскажите, как вообще это делается?

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

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

63 2 июня, 13:30 63 1410671

>>1410396
>>1410407

Первый и последний бамп вопросу.

64 2 июня, 16:23 64 1410790

>>1410407
тебе нужно шоп ORM нагенерило запрос, или простыня из SQL тоже сойдет?

Ответы10799

65 2 июня, 16:30 65 1410799

>>1410790
ORM'ом или SQL - мне лишь бы понять суть.
И, если не затруднит, подскажите литературу, где подобные случаи разбирают/рассматривают.

Ответы10814

66 2 июня, 16:48 66 1410814

>>1410799
https://pastebin.com/WWjstCU3

в общем задача звучит как Gaps and Islands. но с наскоку гуглить может быть непонятно
я попробовал сгруппировать по машиносу и вывести MIN/MAX свободная дата, но так делать неправильно ибо все промежуточные занятые даты будут пропущено. я ебал делать еще одно CTE, для начала сойдет (если я вообще правильно понял суть). путем самопердолинга можно довести запрос до нужного

Ответы10821

67 2 июня, 17:00 67 1410821

>>1410814
Премного благодарен, подскажите пожалуйста ещё что-нибудь по подобным задачам, где можно какие-то материалы почитать, хотелось бы найти что-нибудь для обучения на реальных примерах, без абстрактных задач.

Ответы10846

68 2 июня, 17:30 68 1410846

>>1410821
лично я не учился на каких-то примерах. все - это либо задания с собесов, либо реальные кейсы, либо что-то случайно нагугленное

81 Кб, 681x527
69 3 июня, 19:01 69 1411356

Пытаюсь подключить учебную базу из MySQL в VS 2017.
На ютабе решается установкой других версий коннектов.Но у меня проблема не решается, двач помоги.

70 4 июня, 19:17 70 1411853

Пацаны, в мускул workbench можно как-то передвигать нормально эти линии, показывающее отношения? А то у меня они наложились на друг-друга, под таблицы, под небо, Аллаха. Хочу штоб покрасивше их расставить, но не пойму как очевидным способом нихуя не дает

71 5 июня, 08:51 71 1412057

>>1406455 (OP)
Можно ли за пару месяцев нахвататься, чтобы взяли на самую простенькую вакансию релейтед?

Ответы120647269872841

72 5 июня, 09:07 72 1412064

>>1412057
После 3 месяцев на sql-ex.ru 100к дают же

49 Кб, 634x501
73 5 июня, 09:47 73 1412077

Привет, анонимусы. Есть такой кусок БД, а смысл таков: есть айтемы, у айтемов может быть сколько угодно параметров и соответствующих им значений. Например, свитер: цвет - зеленый, размер - маленький, автор - Дэвид Блэйн. Теперь вот думаю, либо я дурак и не могу запрос составить чтобы по параметрам и значениям выбрать айтемы, либо я дурак и неправильную архитектуру запилил. Что скажете, уважаемые?

Ответы12084

2 Кб, 482x146
74 5 июня, 10:02 74 1412084

>>1412077
разделять parameter и value тебе нужно ибо значения параметров имеют фиксированный сет значений?

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

Ответы12088

75 5 июня, 10:09 75 1412088

>>1412084
>значения параметров имеют фиксированный сет значений?
Да. С точки зрения оптимизации было бы заебись параметры в столбцы выносить, как раньше и было, но я устал каждый раз код править добавляя новый параметр, поэтому решил сделать их динамическое создание через админку. И встрял.

Ответы12089

76 5 июня, 10:11 76 1412089

>>1412088
поколоночное хранение подобных данных - это либо сознательная денормализация ради убийственного перфоманса, либо топкекрофл

так что не получается?

Ответы12091

77 5 июня, 10:15 77 1412091

>>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

Такой запрос работать не будет. Нужно выбрать одновременно несколько параметров и несколько значений.

Ответы12093

78 5 июня, 10:16 78 1412093

>>1412091
давай запрос по-человечески, что ты хочешь выбрать на основании каких фильтров?

Ответы12094

79 5 июня, 10:20 79 1412094

>>1412093
Хочу выбрать айтемы, у которых: параметр "цвет" = значение "зеленый", параметр "размер" = значение "маленький" и т.д. Количество параметров в запросе может быть разным, но я это в коде сделать смогу.

Ответы12136

80 5 июня, 11:29 80 1412136

>>1412094
чет я сам не подрасчитал сложноту задачи
https://pastebin.com/wDAvZuj5

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

Ответы1214013507

81 5 июня, 11:34 81 1412140

>>1412136
Мощно. Буду пробовать, спасибо тебе.
Если я правильно понял у меня получается модель EAV, которая часто во всяких интернет-магазинах встречается.

82 5 июня, 23:29 82 1412631

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

83 7 июня, 21:37 83 1413425

Антоны, я переношу огромные массивы данных с FireBird на Oracle. Но деля это через промежуточный .csv получается пиздец, кодировки летят как угорелые. Что делать то?

Ответы13505

84 7 июня, 23:13 84 1413473

Нужно сохранить древовидную структуру в БД, при этом нужно:
1. Быстро выбирать все поддерево для указанной ноды.
2. Быстро перемещать поддерево к другому родителю.
То что нагуглил: с первым хорошо справляется nested sets, со вторым adjacency list. Materialized paths - вообще непонятно зачем нужное говно.

Накидайте идей как хранить в БД древовидную структуру, так чтобы усидеть на двух рекваиментах? Может скомбинировать как, или materialized paths спасут меня?

Ответы13504

85 8 июня, 00:55 85 1413504

>>1413473
Какая база-то?
Оракл умеет нормально выбирать деревья/поддеревья
Постгре, вроде, тоже.
parent_id -> id
Хули сложного?

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

А если ты еще не решил, какая у тебя база, то бывают, внезапно ГРАФОВЫЕ БД
Типа https://neo4j.com/

Ответы13914

86 8 июня, 00:56 86 1413505

>>1413425
SQL*Developer's Migration Workbench не для тебя сделали?

Ответы13712

87 8 июня, 00:58 87 1413507

>>1412136
>но подобное на SQL реализовывать занятие так себе. разве что генерить запрос в коде
>генерить запрос в коде
Внезапно, это единственно правильное решение

Ответы13533

88 8 июня, 08:00 88 1413533

>>1413507
внезапно, это решение упирается в реализацию и соскочить с написанного будет непросто в реальном мирке

89 8 июня, 13:04 89 1413595

>>1409326
Это хоум кредит? Как сходил?

90 8 июня, 17:35 90 1413712

>>1413505
Спасибо!!!(Восклицание)

91 8 июня, 19:48 91 1413778

Как оптимальнее всего написать накопительный запрос по зарплате сотрудников.

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 может повторятся.
Как написать корректную аналитическую функцию?

Ответы13787

123 Кб, 1240x602
92 8 июня, 19:51 92 1413779

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

112 Кб, 1125x528
93 8 июня, 19:54 93 1413781

Я ничего кроме этого придумать не смог.
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

94 8 июня, 19:56 94 1413783

И правильно ли я понимаю, что в конструкции "sum(sal) over (partition by name order by name, num)" первым выполняется оператор сортировки?

95 8 июня, 20:00 95 1413784

Да вообще, если order by это только сортировка, то как она может влиять на результат запроса?

96 8 июня, 20:10 96 1413787

>>1413778
ROWS BETWEEN UNBOUNDED PRECEEDING AND CURRENT ROW

Ответы138011380214153

97 8 июня, 20:57 97 1413801

>>1413787
Вот ето хуйня.

98 8 июня, 20:57 98 1413802

>>1413787
Спасибо

99 8 июня, 23:06 99 1413880

19 Кб, 1108x40719 Кб, 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.

Ответы1389113997

100 8 июня, 23:32 100 1413891

>>1413880
>Вопрос такой, можно ли и как сделать такой селект по таблице common, чтобы в результате получить данные со всех трех таблиц foo,
Можно

Ответы13984

101 9 июня, 00:55 101 1413914

>>1413504
Про Оракловый connect by prior я знаю, и кстати MySQL с 8 версии тоже может выбирать поддеревья целиком. У меня больше вопрос перфоманса. Как там работает connect by prior не совсем ясно, но скорее всего просто тупо джоинит внутри. Быстрее чем самому, запрос за запросом выбирать. Но с nested sets когда тупо выбирается диапазон и рядом не стоит.

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

Ответы13916

102 9 июня, 01:08 102 1413916

>>1413914
В оракле все нормально.
Там точно не джойны внутри.
Делаешь запрос и смотрешь план. Думаешь.

Нео - говно, но если тебе нужен граф немыслимой вложенности, то почему бы и нет?

103 9 июня, 08:45 103 1413951

Расскажите про EAV. Он ещё актуален для всяких CMS и маркетплейсов? Или что-то лучше придумали?

104 9 июня, 11:47 104 1413984

>>1413891
> Можно
Отлично, как это сделать?

105 9 июня, 12:13 105 1413997

>>1413880
Левые джойны + coalesce не учил, не?

106 9 июня, 18:14 106 1414153

>>1413787
Объясни пожалуйста:
>UNBOUNDED PRECEEDING - Окно начинается с первой строки текущей группы и заканчивается текущей обрабатываемой строкой
- CURRENT ROW - Окно начинается (и заканчивается) текущей строкой
Как это можно связать через between? Почему UNBOUNDED PRECEEDING не включает в себя CURRENT ROW? И почему на результат аналитических функций влияет дублирующие строки в имени функции?

Ответы14344

107 10 июня, 06:53 107 1414344

44 Кб, 796x50051 Кб, 794x55026 Кб, 1042x408

>>1414153
>Окно начинается с первой строки текущей группы и заканчивается
где ты это описание нашел? где нашел, там и оставь

границы окна указываются как rows between <start> and <end>. причем, заставить учесть одну и ту же строку дважды без костыльных подзапросов достаточно проблематично

Ответы14617

106 Кб, 1239x375
108 10 июня, 20:34 108 1414617

>>1414344
Том Кайт
СУБД Оракл
Алсо, запрос корректно работает и без
>BETWEEN AND CURRENT ROW
Просто там по умолчанию стоит RANGE UNBOUNDED PRECEEDIN

Ответы14618

109 10 июня, 20:36 109 1414618

>>1414617
ёпт, оракл. не знал, что в диалектах есть хоть что-то похожее

Ответы14619

110 10 июня, 20:37 110 1414619

>>1414618
Конкретно эта хуета от транзакта не отличается, это анси.

Ответы14691

111 10 июня, 23:39 111 1414689

Посоветуйте научпоп по БД на ночь глядя и что нибудь по проектированию бд

Ответы14694

112 10 июня, 23:50 112 1414691

>>1414619
Бля, второй раз в жизни на дваче что-то полезное!
Никогда не пользовался этими функциями и даже не знал, что так можно, епта!
Даже в сраном мускуле это есть, охуеть, что уж там про оракл говорить...

Спасибо, аноны!

113 10 июня, 23:56 113 1414694

>>1414689
Томас Коннолли, Каролин Бегг — Базы данных. Проектирование, реализация и сопровождение. Теория и практика.

Ответы14933

15 Кб, 1136x253
114 11 июня, 16:29 114 1414856

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

ALTER TABLE table_name RENAME COLUMN name1 TO name2;

Но чот меня шлет нахер читать документацию и ругается на синтаксис в месте: COLUMN name1 TO name2;
Пробовал с кавычками, писал RENAME_COLUMN (а что а вдруг) результат тот же.
Подскажите, как переименовать, будьте добры.
Использую PhpMyAdmin, если это важно.

Ответы14865

115 11 июня, 16:45 115 1414865

>>1414856
ALTER TABLE table_name
Change column_name1 column_name2 Data_Type

Ответы14866

116 11 июня, 16:51 116 1414866

>>1414865
Спасибо тебе.

232 Кб, 781x870
117 11 июня, 20:32 117 1414933

>>1414694
Знаешь, я пожалуй поищу что то менее затратное и лежащее на торрентах

Ответы14965

348 Кб, 1886x584
118 11 июня, 22:07 118 1414965

>>1414933
Бвахахахаха
Ты не видел, что ли, сколько классика стоит?

Ответы15009

119 12 июня, 00:33 119 1415009

>>1414965
>Дейт.
Бляяяяять. Этого клоуна невозможно воспринимать серьёзно.

Ответы1502415052

120 12 июня, 01:39 120 1415024

>>1415009
Ну ок.
Наконец-то на дваче мне распедалили, кто клоун, а кто нет.

121 12 июня, 07:00 121 1415052

>>1415009
я чувствовал, конечно, что его книгу по основам реляционной теории я купил зря. но это настолько бесполезный автор что ли в домене?

Ответы15326

122 12 июня, 16:03 122 1415326

>>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.

Хуйня, конечно. У Пупкина лучше все описано.

Ответы15367

123 12 июня, 16:50 123 1415367

>>1415326
круто, рофловасян смог скопипастить с вики. а сказать-то что хотел?
я говорил где-то, что у него хуево написано (что-то где-то)?

Ответы15552

124 13 июня, 00:34 124 1415552

>>1415367
Круто, рофловасян без всякой вики обосрет любого. а сказать-то что хотел?

Аноним 125 13 июня, 12:43 125 1415744

>>1406455 (OP)
>составляем базу необходимых знаний на гитхабе
И где она?

Ответы15805

126 13 июня, 14:51 126 1415805

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

Ответы15965

127 13 июня, 18:10 127 1415951

Здоров, котоны. Реализовал я, значит, кусок базы в шаблоне 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

Я что-то не так делаю или это в принципе невозможно?

Ответы15982

136 Кб, 894x894
128 13 июня, 18:33 128 1415965

>>1415805

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

ух сволочь

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

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

Объясни мне момент. С учетом фундаментальной основе в виде знания БД, почему в целом так мало людей разибирающихся в них чуть больше "сделать ручками зазубренные вызовы", хотя и таких не так много, ибо ОРМ... Аналитиков БД в обще кот наплакалпытался найти себе ментора

Ответы15977

129 13 июня, 19:04 129 1415977

>>1415965
Их дохуя, лол.

Ответы15979

130 13 июня, 19:10 130 1415979

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

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

Просто сайт-визитку сделать это заебись, быстро, и всем видно. Молодец, мальчик, фуллстэк, 300кк/нс
А огранизовать правильное, надежное хранение с разумной скоростью характерных выборок - да кто ж это увидит? Ничего же не пердит и не свистит.
Вот и специалистов не видно в толпах говнокодеров.
Только и всего

Ответы16004

131 13 июня, 19:12 131 1415982

>>1415951
пример твоих АВ мы сами должны угадывать из твоих селектов?

Ответы16178

132 13 июня, 20:20 132 1416004

>>1415979
>специалистов не видно в толпах говнокодеров
во-первых, попробуй заглянуть дальше своего "проекта"
во-вторых, говнокодерство может быть обусловлено положняком на самом проекте (sad but true)
в-третьих, уметь использовать ОРМ тоже нужно. и, обычно, без знания того, какой код нагенерит тебе этот ОРМ, сильно не погуляешься
кто для тебя специалист-то вообще?

Ответы16011

133 13 июня, 20:36 133 1416011

>>1416004
Да я не про свои проекты же.
В моих проектах у меня есть я, мне других не надо.
Я про то, что вижу вокруг.
Даже если не брать двач, бггг, то форумы и ебаные тенденции (напоминаю про способность ОРМов генерить схему базы, такое кто мог придумать, на такое кто мог подписаться, и почему это еще живо, мм?)
ОРМ - хорошо. Там, где ему место.
Но, опять же, ОРМ по большей части делают люди, которые пляшут от программирования и объектов. А не от грамотной схемы.
Поэтому некоторые очевидные (для меня) ходы через какой-нибудь Хибернейт охуеешь делать.

Ответы16162

134 13 июня, 21:20 134 1416023

Помогите мне, я студент-постгрессодебил. НУЖНА ПОМОЩЬ!

Я пытаюсь создать функцию и триггер, который будет обновлять атрибут 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 ();

Ответы16025160661607416077

530 Кб, 1374x888
135 13 июня, 21:29 135 1416025

>>1416023
отвалилась пикча

136 13 июня, 23:14 136 1416066

>>1416023
>CREATE FUNCTION web() RETURNS trigger AS
На хуя?
В чем проблема код написать сразу в триггере?

Ответы16069

137 13 июня, 23:16 137 1416069

>>1416066
Покажи плзю

Ответы16071

138 13 июня, 23:21 138 1416071

>>1416069
Не, я уже глянул в доку, это ебанутый синтаксис постгре

ты бы показал свой апдейт, который заставляет обновиться все записи

139 13 июня, 23:23 139 1416074

>>1416023
и ты уверен, что new должно сработать, а не NEW?
я постгре не ебал особо, не знаю, насколько он регистрозависимый

140 13 июня, 23:27 140 1416077

>>1416023
>UPDATE public.orders SET timeorder = current_timestamp WHERE
new.bubNum=orders.bibNum;
>UPDATE public.orders
>orders.bibNum
Я бы либо orders. выкинул бы, либо public добавил бы

225 Кб, 1604x810
141 14 июня, 00:05 141 1416095

нихуя не работает бляяя
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 ();

Ответы16106

142 14 июня, 00:31 142 1416106

>>1416095
тебе сказали уже: поменяй для начала на NEW

Ответы16114

143 14 июня, 00:54 143 1416114

109 Кб, 1752x824143 Кб, 1878x848

>>1416106
done

144 14 июня, 07:48 144 1416162

>>1416011
>ОРМ по большей части делают люди, которые пляшут от программирования и объектов. А не от грамотной схемы
я, честно говоря, не вижу противоречия в использовании ОО-модели и грамотной схемы базочки

Ответы16324

54 Кб, 684x453
145 14 июня, 09:02 145 1416178

>>1415982

Ответы16333

146 14 июня, 13:41 146 1416324

>>1416162
Грамотная схема базочки не должна ничего знать про ОО-модель.
Только и всего.
Потому что схема реляционной бд строится по своим законам, а ОО-модель - по своим.
Я, в общем-то, об этом.

Ответы16331

147 14 июня, 13:45 147 1416331

>>1416324
так модели уровня ORM - это рефлексия модели базы данных, с которой (обычно) приложение (бизнес-логика) не работает напрямую
если я нихуя не понял и сказанул хуйню, просто проигнорь

148 14 июня, 13:45 148 1416333

>>1416178
а теперь не поленись, и перечисли поля в селекте 1 и поля в селекте 2

Ответы16386

149 14 июня, 14:55 149 1416386

>>1416333
Там макаба звездочку сожрала. На самом деле достаточно t0.phone_id

Ответы16442

150 14 июня, 16:33 150 1416442

>>1416386
Ок. Чтобы понятнее было:
сделай со звездочкой, но убери груп бай
внимательно смотри, что у тебя в выборке получается
и почему не группируется вообще

Ответы17827

151 16 июня, 21:38 151 1417418

Правильно ли я понимаю, что бизнес логику в БД уже никто не держит и изучать БД смысла нет?

Ответы1742517427

152 16 июня, 21:54 152 1417425

>>1417418
Иногда нужно.

153 16 июня, 21:56 153 1417426

>>1406455 (OP)
А у вас запрос корявый.

154 16 июня, 21:58 154 1417427

>>1417418
Ещё как держат. Оракл это не только бд, но и целый стек накрученный поверх этой бд, и в банках этот стек используют во всю.

Ответы17432

155 16 июня, 22:05 155 1417432

>>1417427
>Ещё как держат.
А зачем? В чём профит?

Ответы1745817702

156 16 июня, 23:53 156 1417458

>>1417432
1. Простота. Все операции перед глазами, а не хуй знает где по стеку вызовов. Меньше шансов нафакапить с распределёнными транзакциями.
2. Скорость. Ты знаешь какие будут запросы в момент разработки, и можешь тюнить сразу же. Можешь пересобрать статистику вручную при необходимости, добавить хинтов, прибить план запроса гвоздями или не делать нихуя ибо так быстрее.
3. Единая платформа и куча программистов в штате под неё. В платформе есть всё что душа пожелает, даже готовая АБС за отдельный прайс
4. Легаси. Nuff said.

157 17 июня, 14:52 157 1417702

>>1417432
Т.е. ты не видишь разницы в цепочке:
достать хуй из базы - сделать из него объект - ебануть что-нибудь с этим объектом - отправить обратно в базу

и

сделать все это в базе, выдав наружу только какой-нибудь иммутабл срез данных?

158 17 июня, 17:48 158 1417827

>>1416442
Братан, второй запрос вообще ни одной строки не выводит. Группировать нечего. Я потому и спрашиваю что я не так делаю, раз у меня по ID ничего не ищет.

Ответы17833

159 17 июня, 18:01 159 1417833

>>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 = "Основная")

160 17 июня, 19:50 160 1417951

Анон реквестинг хелп.
Надумал тут сдавать экзамены на сертификацию по мелкософт SQL, первый экзамен 761 сдал без особых проблем, готовлюсь к 762, так там оф учебник говорит, что его нихуя не достаточно и оно так. Особые проблемы ощущаю с dmv и мониторами для чека ресурсов и тюнинга производительности(Activity Monitor, Data Collector Sets, sys.dm_sranaya_ebota и т.д.). Знает ли анон какие проверенные ресурсы по данной тематике и/или прикладные конкретно для 762. В инете полно дампов, но там ответы неправильные, и их явно недостаточно, ибо цель не тупо натаскаться на экзамен, а подтянуть себя заодно.

161 17 июня, 20:00 161 1417967

Аноны, обьясните пожалуйста нубу, что происходит при выполнении запроса, например, с сортировкой? Как ведут себя таблицы с которых идет выборка данны? Например, запрос
Slect * From Student ORDER BY name DESC; По какому алгоритму этот запрос обрабатывается? Сначала таблица Student сортируется по name, а уже потом возвращается? А после того как таблица вернулась операции отменяются? Или создается буферная таблица, с которой сначала выбираются данные, а уже там сортируются?

Ответы1797518040

162 17 июня, 20:05 162 1417975

>>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 работает на основе того, что сделали другие операторы, поэтому, кстати, только в нем можно обращаться к столбцам результата по алиасу.

Ответы18040

163 17 июня, 22:27 163 1418040

>>1417975
Этот дурачек.
>>1417967
Нужно смотреть план запроса.

Ответы18045

164 17 июня, 22:39 164 1418045

>>1418040
>Нужно смотреть план запроса.
Если покажешь такой план, где ОРДЕР БАЙ не последним идет, я охуею.
Но ты же не покажешь, да?

Ответы1811118136

51 Кб, 1386x722
165 18 июня, 07:42 165 1418111

>>1418045
inb4 я тобой согласен полностью

я не он, хотя могу показать такой план

Ответы18527

166 18 июня, 09:11 166 1418136

>>1418045
Да пожалуйста - запрос с фильтрацией на больше/меньше по rownum и сортировкой.
Запрос с аналитической функцией - тоже отработает после сортировки.
Охуеть, да?

Ответы18529

167 18 июня, 21:48 167 1418527

>>1418111
Я так и думал, что найдется мастер-ломастер, который покажет на ордер-бай из вложенного селекта.
Найс.
Давай следующую попытку. С ордербаем от общего селекта.
Передавай привет, кстати, тому мудрецу, который вхуячил ордербай в подселект, он же там так нужен!

168 18 июня, 21:51 168 1418529

>>1418136
Первое - разумно, да. Хотя это и, очевидно, краевой случай.
Про аналитические функции поразмышляю. Но не вижу такой хуйни, кроме как для тех, которым важен порядок строк.

Но, очевидно, план запроса и тут на хуй не сдался. И так понятно, что если ты оперируешь rownum, то он будет после любых других действий.

Ответы18622

169 18 июня, 23:03 169 1418566

44 Кб, 600x377124 Кб, 960x703

Объясните мне, почему вы такие никчемные? Пока вы рисуете схемки, тянка из МФТИ стала 59тым контрибьютором PostgreSQL.
https://postgrespro.ru/blog/company/4203947
Что вычувствуете, когда узнаёте о таких вещах?

Ответы1860318608

170 19 июня, 00:19 170 1418603

>>1418566
Молодец! Умница! А я никчёмное говно. Такие дела.

171 19 июня, 00:24 171 1418608

>>1418566
Потому что она тян

Ответы18614

172 19 июня, 01:07 172 1418614

>>1418608
двачую
у куна коммит не приняли бы, а у сельди есть вареник и ей все можно

173 19 июня, 02:10 173 1418622

>>1418529
Ну, роунам - специфичные случаи, но иногда бывает. Например, когда ты в подзапросе сортируешь по дате и добавляешь rownum as rn в поля выборки, а потом по нему делаешь rn = 1 - получаешь первую запись по дате. Таки лучше случая date = (select min date from huy).

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

А ещё сортировка может повлиять на выбор оптимизатором хэш джойна или мердж джойна при соединении двух наборов данных, так-то.

Ответы19119

174 19 июня, 10:45 174 1418692

про порядок обработки. Вот вам дока: 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

Ответы18954

175 19 июня, 19:50 175 1418954

>>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.

Попробуй в следующий раз читать все буквы

176 20 июня, 00:15 176 1419119

>>1418622
>А ещё сортировка может повлиять на выбор оптимизатором хэш джойна или мердж джойна при соединении двух наборов данных
Дай ссылку почитать про это
Без подъебки прошу

Ответы19151

177 20 июня, 03:42 177 1419151

>>1419119
Ну, вот что-то похожее на правду:
https://studfiles.net/preview/1037891/page:30/

А так там даже читать не о чем: если у тебя два отсортированных набора данных, то для группы значений из первого набора идёт поиск таких же значений во втором наборе до нахождения первого большего - дальше нет смысла искать, набор-то отсортирован.
Как nested loops, но меньше итераций вложенного цикла за счёт предварительной сортировки либо чтения индекса.

Ответы19597

178 20 июня, 21:55 178 1419597

>>1419151
Ну, твоя же ссылка говорит, что хешу вообще не всралась сортировка.
В сортмердже не будет итераций вообще, а будет 1 проход по одному набору, и 1 по другому.
НО! Сортировка ни на что не влияет. Оптимизатор может без всякой сортировки с твоей стороны решить, что сотрмердж будет быстрее.

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

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

Ответы19694

714 Кб, 810x2745
179 21 июня, 01:29 179 1419694

>>1419597
Правильно моя ссылка говорит. И я тебе говорю, что сортировка нужна для мердж-джойна, а не для хэш джойна.
Только вот оптимизатор может на основании наличия в запросе сортировки и объема выборки сам выбрать мердж-джойн, а может выбрать хэш-джойн.
А может и выбрать мердж-джойн и сам отсортировать наборы данных. А один точно будет сортировать.
Смотри пикрил и не неси хуйню, что сортировка подзапроса не имеет смысла в случае мердж-джойна.

А ещё ты, наверное, не очень понимаешь смысл и процесс построения реального плана запроса и хинтов.

Ответы20021

180 21 июня, 16:28 180 1420021

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

Удачи.

Ответы20033

181 21 июня, 16:59 181 1420033

>>1420021
Хера ты рофлишь.
Ну давай, укажи, где я неправильно перевел. Я признаю свою ошибку, если ты не ебучий тролль без мозгов.

182 22 июня, 20:16 182 1420520

Ну ка двощерские погроммисты, поясните начинающему Богу Access-а как спланировать базу данных. Есть два стула... Один нормальный, второй с отверстием. Триллиард остальных характеристик абсолютно одинаковые. И есть таблица в которой эта пара стульев идет по возрастающему размеру, типа: стул высотой 19см, стул высотой 21см. Так вот, заводить по паре записей, типа стул 19см, стул 19см с отв. или сделать доптаблицу: "с отверстием";"без отверстия" и ключ этой таблицы добавить в таблицу со стульями? Но тогда опять их будет по две записи. Короче я уже нихуя не понимаю

Ответы2065720666

183 22 июня, 23:40 183 1420657

>>1420520
>Ну ка двощерские погроммисты, поясните
Ну-ка пройди на хуй

184 23 июня, 00:18 184 1420666

>>1420520
А теперь выключи смехуечки и объясни, что у тебя за схема, в которой нельзя дырку в стуле сделать характеристикой. Высоту, значит, можно, а тип сиденья нет?
Если это два разных объекта, то как не пытайся, придется делать две записи.

Ответы20810

185 23 июня, 11:06 185 1420810

>>1420666
>то как не пытайся
Пнятненько. Думал есть секретные многоходовки от мастеров проектирования БД.

186 23 июня, 16:27 186 1420937

Существуют ли какие-нибудь преимущества у noSQL перед обычными реляционками?
Тут есть люди, которые работют с хадуп и террадатой? Если ли у терродаты преимущества перед, например, ораклом? Правильно ли я понимаю, что она гораздо сильнее распаралленина?

Ответы2095120990

187 23 июня, 16:57 187 1420951

>>1420937
Непересекающиеся задачи, а не преимущества
Когда кто-то пытается использовать noSQL для того, для чего все остальные десятилетиями используют SQL, это просто значит, что этот кто-то - мудак

Ответы20969

188 23 июня, 17:11 188 1420969

>>1420951
Можешь привести пример задачи, где нужно использовать noSQL и не нужно SQL?

Ответы21122

189 23 июня, 17:51 189 1420990

>>1420937
Обычно упоминается CAP теорема. noSQL это быстро но не гарантируется целостность данных в каждый конкретный момент времени. SQL (с транзакциями) - медленно но гарантируется целостность данных.

190 23 июня, 20:51 190 1421122

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

но умнее будет, если ты в гугле забьешь nosql vs sql и прочтешь первый пяток из выдачи

191 24 июня, 13:40 191 1421482

Анон, сколько средняя ЗП разработчика БД в ДС?
Пишу пока изредка процедуры и триггеры на работе, сам бэкенд-разраб.
Вот думаю перекатиться, тк всегда хотел лучше разбираться в БД и проектировании, нравится писать на SQL, да и вообще ищу более консервативную область IT без модных фреймворков, гик-культуры, маскотов и прочей блевоты. Потом может в аналитику перекачусь.

Ответы2159122337

192 24 июня, 16:48 192 1421591

>>1421482
Хм, а сколько у тебя лет опыта и на каком языке пишешь? Может просто останешься в нём же, но найдёшь более интересную работу?

Стартовую ЗП сеньора ораклиста я бы обозначил в 150+, но это устаревший на сегодняшний день подход - сейчас в БД принято только хранить данные.

193 26 июня, 08:41 193 1422337

>>1421482
мне как бекенду [как правило] нужно разбираться в базочках чуть выше среднего уровня. офк, если сильно распределенные команды, то там за этим могут следить совсем отдельные люди, но, преимущественно, на твоей стороне все, чего касается бэк, входит в зону ответственности (хотя бы на уровне, я знаю слово redis и почему мы достаем сейчас трогаем его, а не мускульный кластер)

230 Кб, 810x1080
194 26 июня, 14:16 194 1422493

Привет. Подскажите как вкатиться в базы данных (какой-нибудь учебник или что-то типа того).
Сам по базам данных слушал только курс в универе и писал чё-то на C# с entity framework, но уже всё забыл.

Ответы22574

195 26 июня, 15:40 195 1422574

>>1422493
что уровня сложнее википедии тебя вообще интересует?

175 Кб, 535x807
196 26 июня, 21:23 196 1422779

Привет, анон.
Не увидел в шапке гайда, но спасибо на том, что такой тред вообще есть. Хотел бы получить совет куда дальше расти.
Имею за плечами 6 лет опыта oracle developer. Уровень оценил бы как крепкий мидл, но многих нюансов работы базы не знаю, какие должен знать сеньор.
Последние два года работаю в одном из топ банков, в основном пишу бизнес-логику, работа уже становится однообразной.
Понимаю, что писать однообразный код и решать типовые задачи придется вскоре через силу. В какую сторону развиваться дальше? Вкатываться в ентерпрайз разработку желания особого тоже нет (имеется в виду java). Может в дата инженеры или сайнтисты? Вообщем вопрос, куда можно податься разрабу БД, при этом чтобы переквалифицироваться частично и/или постепенно. А если по ЗП не сильно просесть - то вообще сказка.

Ответы2281422839

197 26 июня, 21:38 197 1422785

Ананасы, работа интересует? Есть вакансия для начинающих вкатывальщиков с минимальным опытом работы, или вообще без него.

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

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

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

Ответы22788

198 26 июня, 21:46 198 1422788

>>1422785
Город?

Ответы22792

199 26 июня, 21:48 199 1422792

>>1422788
ДС. Прошу прощения, забыл.

200 26 июня, 22:33 200 1422814

>>1422779
Я наделяю тебя ответственным за шапки треда.
Ты всё равно тут самый топовый.

Ответы22829

201 26 июня, 22:49 201 1422829

>>1422814
Кек, плиз, судя по обсуждениям треда тут скучающие свитерысиньоры троллят друг друга.

202 26 июня, 23:00 202 1422839

>>1422779
Вот ты и разрешишь спор выше насчёт за sort merge, раз шесть лет опыта.

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

Ответы22888

203 27 июня, 00:40 203 1422888

>>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.

Ответы22913

204 27 июня, 02:51 204 1422913

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

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

ты забыл про фейл рассказать

Ответы2428324706

205 28 июня, 15:49 205 1423979

10 Кб, 460x10613 Кб, 236x16119 Кб, 320x168

Есть 2 таблицы. Почему такой запрос не работает? БД - postgresql,

Ответы2402124052

206 28 июня, 16:50 206 1424021

>>1423979
Потому что есть зарезервированные слова в SQL.

207 28 июня, 17:59 207 1424052

>>1423979
потому что ты используешь зарезервированное слово from?

Ответы24086

208 28 июня, 18:53 208 1424086

>>1424052
Потому что я ньюфаг, сорри.

209 29 июня, 01:18 209 1424283

>>1422913
>ты забыл про фейл рассказать
Могу рассказать даже про два, но позже.
Денек отойду от работы.

210 29 июня, 22:12 210 1424706

>>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.

210 29 июня, 22:12 210 1424706

>>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.

Показать весь текст
Ответы2475724974

211 30 июня, 00:40 211 1424757

>>1424706
Жиза, сталкивался и с тем, и с другим. Второй пункт - так вообще в первые пару месяцев постоянно допускал такие ошибки - первичные ключи у нас были текстовые, а сравнение могло быть с числом, а оракл всегда при сравнении строки с числом неявно приводит первую к числу. Но нюанс про биндовые переменные не знал, запомню.

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

212 30 июня, 17:30 212 1424974

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

> тип колонки таблицы приводится к типу переменной.
Не совсем так, приводится к старшему типу. Если у тебя поле нумбер, а переменная варчар2, то конвертироваться будет бинд, и всё будет хорошо. А если наоборот, то да, конвертироваться будет поле, и индекс не будет использован.

Ответы24987

213 30 июня, 18:11 213 1424987

>>1424974
Да, верно, неправильный вывод сделал.
Вот этим утверждением руководствовался

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

Видимо под target variable подразумевается переменная для хранения результата запроса.

214 1 июля, 22:23 214 1425760

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

Ответы25904

215 2 июля, 01:01 215 1425904

>>1425760
>По-быстрому
>Спроектировать базу
>Ньюфагу
Кек.

В первую очередь - кури нормальные формы. Потом пойми, какая бд тебе нужна - транзакционная или аналитическая. Дальше сам догадаешься.

216 2 июля, 09:01 216 1425998

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

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

Можете помочь или я могу пойти нахуй?

Ответы2690127779

217 3 июля, 10:46 217 1426901

>>1425998
почему ты с этой задачей пришел в тредик про базочки?
не уверен, что офисные продукты могут вот так влегкую импортировать данные из одного пакета в другой, да и по образцу тем более

Ответы26979

218 3 июля, 13:41 218 1426979

>>1426901
уже сделал системму через filldocuments,полезная хуйня

219 4 июля, 12:11 219 1427779

>>1425998
Тебе один раз или какая-то интеграция нужна?

Если один раз, выполни свой select, потом скопируй результат просто ctrl+v а потом вставь в word и excell
Если умеешь вставлять не только через ctrl+v, все получится.

220 5 июля, 12:13 220 1428371

Выручайте, поцоны. На работке сменилось руководство, мне дали задание вкатиться в область, в которой я вообще нулевой. расклад такой: БД оракл, есть програмизды, которые пишут обновы. Мне нужно эти обновы накатывать, перед этим делая бекап тех элементов, которые затрагиваются обновлением.
Как в это въехать по быстрому, что почитать? Может кто ссылку на статью/главу даст. В данный момент нужен именно этот минимум знаний, более подробно изучать буду уже потом.

Ответы28393

221 5 июля, 13:23 221 1428393

>>1428371
О, Дима, привет)).
Если я угадал, то у тебя весь функционал уже есть.
А если нет - то пиши сборщик, который по имени файла из патча будет звать процедуру, которая текст пакета вытаскивает из бд и делай spool в файл бекапа.
это если из sqlPlus будешь ставить патчи.

Ответы28397

222 5 июля, 13:32 222 1428397

>>1428393
>О, Дима, привет)).
Это не я.

Ответы28418

223 5 июля, 14:52 223 1428418

>>1428397
"Райдер, опять ты
Нет, это не я!"

Бтв раз не ты, то окей.
Короче, простая схема: вот есть у тебя патч (архив, ветка в гите или ещё какое изъебство). Ты пишешь прогу, которая формирует из файлов патча скрипт для sqlPlus(т.е файл, в котором у тебя будут вызовы выполнения файлов патча) в определенном порядке(например, DDL до DML), а в этой проге проверяешь, что если тебе встретился пакет/функция или что-то в этом роде, то ты перед выполнением файла из патча включаешь спул, достаешь текст этого объекта(он попадет в указанный в спуле файл) и выключаешь спул.
Вот тебе простой бэкап. Если ты особо извращенец - повесь триггер на DDL, чтобы текст старого объекта записывался в таблицу бэкапа + была запись в таблице логов.

224 12 июля, 13:16 224 1433168

Привет, ребятки.
Есть кто по сфинксу?
Можете пояснить как в sphinxql заставить работать select distinct так же как в mysql?
Версия 2.2.11

225 15 июля, 01:02 225 1435414

Анонасы!
Тупой вопрос из разряда "читай документацию", но все же, может, кто-то от доброты душевной ответит.

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

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

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

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

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

Короче, можете издеваться сколько влезет, только ответьте, как сделать одним селектом (может оконные/аналитические функции?)

Ответы354603550336819377573785337997

226 15 июля, 09:09 226 1435460

>>1435414
>max(b) group by x
это значит в последний месяц для каждого работника иль чо?

Ответы35983

227 15 июля, 09:57 227 1435503

>>1435414
короче, вот. https://pastebin.com/Bp9ZZYPG хз то ли надо было

Ответы35985

228 15 июля, 17:02 228 1435983

>>1435460

>это значит в последний месяц для каждого работника иль чо?
да, там же написано дальше:
>т.е. взять только таких сотрудников, которые в последний месяц заебали всех)

229 15 июля, 17:02 229 1435985

>>1435503
Нет.
Надо было БЕЗ ПОДСЕЛЕКТОВ :)
С подселектами я и сам с усам.

Ответы35991

230 15 июля, 17:05 230 1435991

>>1435985
cte не подселект ващет )

Ответы3606736110

231 15 июля, 18:01 231 1436067

>>1435991
Кек.

232 15 июля, 18:33 232 1436110

>>1435991
Ну, даже не знаю, что тебе на это и ответить.
Давай, чтобы не было лишних споров, я переформулирую:
слово SELECT во всем запросе должно быть только одно
Более того, во From должна быть только одна таблица только один раз

Я подозреваю, что это так не сделать. Но я дремучий папуас среди специалистов, вся надежда на это.

Ответы36327

233 15 июля, 21:59 233 1436327

>>1436110
Честно, не знаю, как тебе именно помочь с таким условием, но попробуй поиграться с cube и rollup, вдруг там отыщешь нужное тебе. А если это oracle, то можешь изъебнуться с model.
Проблема в том, что вышеупомянутые расширения группировки, скорее всего, в плане запроса будут использовать union all и разные группировки в каждом из запросов - та же работа rollup, если мне не изменяет память, так и описывается. То есть, строго говоря, одним селектом это не будет.

234 16 июля, 02:13 234 1436508

Анон, привет, куда можно податься pl/sql девелоперу в Спб?
По уровню околомиддл.

235 16 июля, 15:55 235 1436819

>>1435414
СУБД какое?
С помощью АНСИ с одним селектом сделать это довольно сложно, но я вижу вариант сделать это в оракл.

Ответы36982

236 16 июля, 18:56 236 1436982

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

Ответы37856

145 Кб, 1159x574
237 17 июля, 09:53 237 1437393

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

Ответы3742237449

238 17 июля, 10:37 238 1437415

Первый раз использую базу данных в приложении.
Мне нужно, чтобы пользователь выбирал какое-то большое количество параметров (у каждого параметра выбор да/нет). Параметров около 1000. Как лучше это хранить и реализовать? Я подумал, что нужно делать такую таблицу
ИмяПользователя - 0011100... где 1 или 0 выбор параметра.
А отдельно хранить список параметров с соответсвующими индексами.
Может есть лучше решение?

Ответы37422

239 17 июля, 10:49 239 1437422

>>1437393
Обращение-Прием 1:1 - супер-спорно ) Причем анализы едут от обращения, а диагноз от приема

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

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

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

>>1437415
[Пользователи] 1:М [Парамерты пользователей] М:1 [Параметры]

Ответы3745937499

240 17 июля, 11:33 240 1437449

>>1437393
А VBA разве может понять строки с пробелами?

Ответы37459

241 17 июля, 11:48 241 1437459

>>1437422
>Обращение-Прием 1:1 - супер-спорно )
Да, с этим соглашусь, ошибочка, пациент вполне может записаться к нескольким врачам.

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

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

>>1437449
Если обрамить квадратными скобками - вроде как да.

Ответы37465

242 17 июля, 11:57 242 1437465

>>1437459
я не совсем понял, что ты хотел описать как "Обращение", а что как "Прием". с одной стороны там все можно залить в одну сущность, с другой есть нюансы.
ну вообще обращение оно не всегда линейное. я вот пришел к терапевту потому, что голова болит (считай, обращение началось еще до приема), терапевт посмотрел (прием раз), отправил к хирургу (прием 2.1) и патологоанатому (прием 2.2) (а это все то же обращение, но не точечное во времени, очевидно), они еще куда-то отправили, плюс накидали анализов. причем, кто-то посередине не может поставить никаких диагнозов пока не пришли ответы из направлений.

243 17 июля, 12:36 243 1437499

>>1437422
>[Пользователи] 1:М [Парамерты пользователей] М:1 [Параметры]
Но ведь тогда вторая таблица получится сверх большая. Каждый новый пользователь будет увеличивать её на 1000 строк (это если параметров только 1000). Если количество пользователей будет большим, пиздец же случится, не?

Ответы37519

244 17 июля, 12:59 244 1437519

>>1437499
пару лямов строк любая хоть сколько-нибудь серьезная СУБД отработает без больших проблем. тебе же не SELECT * FROM делать, предполагается, что ты еще и использовать будешь адекватно таблицу.
разделение параметров по колонкам (в одном физическом аттрибуте или по каждому на один параметр) сверх-сильно усложняет поддержку такого решения.
если ты сможешь сгруппировать параметры каким-либо образом и выделить нечто вроде:
[Пользователи] 1:М [Параметры пользователей 1] М:1 [Параметры_1]
[Пользователи] 1:М [Параметры пользователей 2] М:1 [Параметры_2]
[Пользователи] 1:М [Параметры пользователей 3] М:1 [Параметры_3]
будет попроще, но это такое себе решение, я бы ниадобрил

Ответы37523

245 17 июля, 13:03 245 1437523

>>1437519
Ок, понял, спасибо

246 17 июля, 19:21 246 1437757

>>1435414
Дай пример с данными.
Как есть и как должно быть.

247 17 июля, 21:02 247 1437853

>>1435414
Есть вариант сделать в анси
select x, max(b)
from table_pr
group by x
Having max(b) = max(case when a = 'zaebal' then b else null end);

Но, в таком случае b - не всегда будет текущим месяцем, а максимальным для каждого сотрудника, если я правильно понял, это то, что тебе нужно

Ответы3785638034

248 17 июля, 21:03 248 1437856

>>1437853
>>1436982

249 17 июля, 23:47 249 1437997

>>1435414
Я и забыл совсем и про model тебе что-то говорю.
Это же max keep, ёпта. А в ордер бай пихаешь кейс, в котором a like '%zaebal%' даёшь единичку, а остальному - null. И тогда у тебя выберется максимум для именно таких значений a.

Ответы38034

250 18 июля, 01:08 250 1438034

>>1437853
>>1437997
Спасибо, завтра покумекаю.

38 Кб, 1719x889
251 18 июля, 04:51 251 1438057

У меня в задании курсовой образуется замкнутыц цикл в отношениях сущностей (нужно создать бд по заданным таблицам т.е. добавлять своё нормас, а убирать что-то - не круто). Так вот с этим циклом сижу мучаюсь уже сколько всего перечитал так толком и не въехал, кажется, будто препод троллирует. Суть - составить расписание занятий, выглядит примерно так. С телефонп накалякал
Долго бьюсь над тем как все организовать, подкиньте почитать про то что цикличность это круто и тд или хотя бы пару идей как организовать. Мозговой шторм иссяк на идеях сделать последнюю таблицу неким расширением второй, но тогда это будет уже один ко одному, а по заданию один ко многим отношения везде

Ответы380833816438193

252 18 июля, 08:56 252 1438083

>>1438057
а ты уверен, что он образуется?
я вот вижу какую-то каракулю в пэинте и честное слово, что все именно так

Ответы38180

253 18 июля, 13:46 253 1438164

>>1438057
>У меня в задании курсовой
Сейчас же лето. Нахуй ты делаешь курсач?

Ответы38180

34 Кб, 659x234
254 18 июля, 14:26 254 1438180

>>1438164.
>>1438083
Проебался в срок, да не суть
Выглядит вот так в задании

Ответы3818538206

255 18 июля, 14:29 255 1438185

>>1438180
А нахуй тебе вообще универ нужен?

Ответы38189

256 18 июля, 14:35 256 1438189

>>1438185
Чтобы хоть чего-то добиться скорее всего. Плюсом какие-то основы и корочка

Ответы38196

257 18 июля, 14:39 257 1438193

>>1438057
Подожди, у тебя задание с ебанутым требованием подделать под определенную схему отношений?

Ответы38199

258 18 июля, 14:42 258 1438196

>>1438189
Ты ничего не добьёшься, имея только корочку.
По моему субъективному мнение тебе подобных из высшего заведения нужно выкидывать, поэтому я тебе принципиально не буду помогать.

Ответы3820138204

259 18 июля, 14:43 259 1438199

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

Ответы38200

260 18 июля, 14:45 260 1438200

>>1438199
>но как раз его и надо подстроить под схему
Ну так это же и есть часть задания

Ответы38209

261 18 июля, 14:46 261 1438201

>>1438196
>тебе подобных
Это каких?

Ответы38215

262 18 июля, 14:49 262 1438204

>>1438196
Надеюсь ты не прав, все же специальность интересная и хотелось бы закончить, а не вылететь

263 18 июля, 14:49 263 1438206

>>1438180
пиздец лол
ну ладно, а вопрос в чем? цикличные связи - это в общем не то, чтобы плохо, это странно по меньшей мере. но в твоем случае это норм потому, что задания другого нет. только цимес в том, чтобы Table2->Table4 или Table3->Table2 были по факту 1:[0..1/M]. иначе ты ни строчки не вставишь в базочку возможно, в транзакции так можно изъебнуться, но я сомневаюсь

Ответы38211

264 18 июля, 14:52 264 1438209

>>1438200
На твой взгляд со стороны тебе не кажется схема ебанутой? Сколько бы не рыл интернеты и русские и ангельские везде в основном проблемы вида "у меня цикл в бд и т.п., как это исправить?" Если же это нормальное явление, сразу же съебу

Ответы38218

265 18 июля, 14:54 265 1438211

>>1438206
Да, все вопрос был в том является ли цикличность чем-то нормальным вообще. Спасибо, анон, буду изощряться

Ответы38222

266 18 июля, 14:57 266 1438215

>>1438201
Это долбаёбов, которые просирают сроки сдачи курсачей и не в состоянии самостоятельно лог. схему спроектировать.

Ответы38216

267 18 июля, 14:59 267 1438216

>>1438215
Вопрос был не в проектировании а в явлении цикличности в отношениях между таблицами в бд. Нормальная ли тема это где можно по этому поводу инфы нарыть

Ответы38224

268 18 июля, 15:00 268 1438218

>>1438209
Мне кажется ебанутой сама идея задания подстраивать что-либо под какие-либо схемы, а не строить самому, про схему я вообще ничего не говорил.

269 18 июля, 15:02 269 1438220

Хочешь или нет - это твой вариант задания, значит так положено, так что зачем разбираться?

Ответы38223

270 18 июля, 15:04 270 1438222

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

271 18 июля, 15:04 271 1438223

>>1438220
Потому что в целом интересно как такое применяется и применяется ли вообще

272 18 июля, 15:05 272 1438224

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

Ответы38422

273 18 июля, 19:46 273 1438422

>>1438224
Вы как-то по-особенному понимаете цикличность, я гляжу.

274 19 июля, 08:54 274 1438645

Поясните за ";" и "/" что, когда используется? Почему например в pl/sql developer скрипт может пройти без ошибки, а в sql navigator поругается на слэш или точку с запятой?

Ответы38960

275 19 июля, 17:19 275 1438960

>>1438645
; - конец блока, / - конец команды.
Скорее всего, прошло от того, что sql*plus должен как-то понимать, какой enter - это перевод строки, а какой - сигнал на выполнение, вот и / воспринимается как символ конца потока.

Всегда используй ;. Но если у тебя pl/sql блок - то заканчивай его /, чтобы следующий выполнился.

276 19 июля, 19:41 276 1439061

Есть таблица (table), структура/данные следующие:
А - 100
А - 200
А - null
B - 100
B - 300

Как сделать запрос, который выдаст макс по первому столбцу, если там нет значений null, иначе выдаст null.

Ответы3906239348

277 19 июля, 19:41 277 1439062

>>1439061
Т. е.
Результат:
A-null
B-300

Ответы39069

278 19 июля, 19:56 278 1439069

>>1439062
Забиваешь этот вопрос в гугл и выбираешь в выдаче ответы, подходящие к твоей субд
case используй

Ответы39083

279 19 июля, 20:16 279 1439083

>>1439069
Что мне в гугле ввести, лол?
Я минут 40 эту ерись писать пытался.
Пока в голову пришло только ето:
with a as
(select t1, max(t2) m_t2
from table
group by t1)
select distinct a.t1,
case
when table.t2 is null then table.t2
else max(t2)
from a, table
Но это не правильно, т.к. результат будет =>
A-200
A-null
B-300
Как это фиксить?

Ответы39084390893920939232

280 19 июля, 20:16 280 1439084

>>1439083
>else max(t2)
Тут end проебал.

281 19 июля, 20:20 281 1439089

>>1439083
И в конце
where table.t1 = a.t1

282 20 июля, 00:23 282 1439209

>>1439083
max keep + respect nulls в сортировке - и проблемы нет.

Ответы39211

283 20 июля, 00:24 283 1439211

>>1439209
>respect nulls
nulls first, конечно же
самофикс

284 20 июля, 01:49 284 1439232

>>1439083
>Что мне в гугле ввести, лол?
https://www.google.com/search?q=sql+null+as+max&oq=sql+null+as+max&aqs=chrome..69i57.5903j0j7&sourceid=chrome&ie=UTF-8

Если ты не способен даже на это, то я бы, на твоем месте, поискал другое хобби

Ответы39238

285 20 июля, 02:05 285 1439238

>>1439232
> я бы, на твоем месте
Ок, бро, я к твоему совету обязательно прислушаюсь.

286 20 июля, 11:56 286 1439328

Я джавист, хочу изучить что-нибудь фундаментальное, просто чтобы лучше понимать, что происходит внутри. Например, Serializable в InnoDB pessimistic lock с блокировкой выборки на апдейт, а в Postgres - optimistic с ошибкой при коммите. Хз, что за это отвечает, как это вообще гуглить
Для такого Дейт подойдёт?

287 20 июля, 13:16 287 1439348

>>1439061
Select
t1,
Case
when Max(case when t2 is null then 1 else 0 end) = 1
then null
else max(t2)
end
From table
Group by t1

Ответы3953139572

288 20 июля, 17:20 288 1439531

>>1439348
Блядь, ты ему еще лабы сделай.

Ответы39551

289 20 июля, 17:46 289 1439549

144 Кб, 1773x73712 Кб, 462x457

Что не так с этим запросом?
Задание:
Для каждого производителя, у которого присутствуют модели хотя бы в одной из таблиц PC, Laptop или Printer,
определить максимальную цену на его продукцию.
Вывод: имя производителя, если среди цен на продукцию данного производителя присутствует NULL, то выводить для этого производителя NULL,
иначе максимальную цену.

Ответы39572

290 20 июля, 17:46 290 1439551

>>1439531
Хули ты агрессивный такой?

Ответы40703

291 20 июля, 18:12 291 1439572

>>1439348
>then null
>>1439549
Я понял, спасибо.

292 22 июля, 11:56 292 1440325

>>1406455 (OP)
Часто в вакансиях сисадмина/линукс-инженера можно увидеть требования:
Апач/нгинкс, постфикс/довекот, бинд,
Субднейм/субднейм/субднейм.
На счёт последнего можете подсказать что учить надо?
Субднейм.орг/документейшн от корки до корки? Может знаете какой смысл они вкладывают это? Какая-то конкретика. (А то может они вкладывают в это поставить lamp, чтобы CMS встала за 5 минут)

Ответы4033340707

293 22 июля, 12:07 293 1440333

>>1440325
Субд надо на случай внесения оптимизаций. Ну чтобы запросы вместо 1с выполнялись за 0.0001 пикосекунды. Репликации, бэкапы, апгрейд бд. Выполнять в ручную какие-нибудь запросы, перезагружать демон бд на худой конец.

294 22 июля, 12:11 294 1440335

f

295 22 июля, 19:08 295 1440562

Я правильно понимаю, БД - такой способ хранения информации на диске, если у Вас concurrency-головного-мозга?

Ответы40708

296 22 июля, 22:30 296 1440703

>>1439551
Отвечая на такие вопросы, ты поощряешь долбоебов все больше и больше лезть сюда.
Скоро будут приходить с вопросами, как жопу вытирать
Мне это не нравится, вот и агрессивный.

Ответы40790

297 22 июля, 22:34 297 1440707

>>1440325
Уметь поставить, забекапить, сконфигурить, реплицировать (хуй знает, надо или нет), засекьюрить.
Выдать юзерам (от дба до разработчика хуйни на жумле) доступ, чтобы они не ныли "аааа, у меня программа не видит БД"
Если кто-то от тебя будет ожидать умения писать селекты и их же потом оптимизировать, можно смело слать в жопу.

298 22 июля, 22:34 298 1440708

>>1440562
Нет.
Никто не мешает тебе иметь БД в памяти.
Теперь попробуй еще каки-нибудь искрометно пошутить.

Ответы40776

299 23 июля, 00:20 299 1440776

>>1440708
>пошутить
В мыслях не было. Пытаюсь прояснить.
>Никто не мешает тебе иметь БД в памяти.
Вопрос не о "можназделоть", а о цели.

Ответы42737

sage 300 23 июля, 01:58 300 1440790

>>1440703
узбагойся, в этом и суть треда, чтобы "всякие долбоебы" сюда приходили.

Ответы41282

47 Кб, 660x496
301 23 июля, 15:57 301 1441013

Ай нид хелп. Ищу ПО, желательно свободное для создания библиотеки документов, с возможностью редактирования этих документов и сетевым доступом.
Имеется следующая задача:
Есть ряд однотипных документов, порядка 500-600, в виде таблиц. Отличаются только содержимым этих таблиц. Нужно эти документы каталогизировать и иметь возможность осуществлять поиск по номеру этого документа. Находим в каталоге нужный документ, и в этом же ПО редактируем эту таблицу. Никаких картинок, тупо текст. Доступ к редактированию документа по логину и паролю.
Всякие навороченые гиганты типа Битрикса не нужны. Надо, что то маленькое и функциональное.
Есть что предложить?

Ответы41283

7 Кб, 453x135
302 23 июля, 19:21 302 1441128

помогите понять то что записано в регулярном выражении, запрос меняет в
произвольной строке два и более встречающихся пробелов на один
with t as (
select ' a b c ' str from dual
)
select str ,
regexp_replace(str,'( +$)|((^| ) +)','\3') as r
from t
'( +$)|((^| ) +)' здесь указаны все варианты пробелов в строке
((^| ) +) - (если в начало строки или пробел) пробел входит больше одного раза) ?
'\3' - что это?
из определения не особо понять
\nn представляет собой число от 1 до 9. Соответствует n-му подвыражению находящемуся в ( ) перед \n.

Ответы4128941763

303 23 июля, 23:46 303 1441282

>>1440790
Нет

304 23 июля, 23:48 304 1441283

>>1441013
Alfresco Community Edition?

305 24 июля, 00:04 305 1441289

>>1441128
https://regex101.com/
Сходи туда, чтобы не быть баттхертом.
Там каждый чих поясняется.

Но в целом это означает "все пробелы в начале или (читай "а заодно и") пробелы в конце строки".

\3 означает третье вхождение из всех найденных

короче, хули ты такой тупой, что не можешь выполнить запрос и посмотреть, что получается?

Ответы41754

2,8 Мб, 2048x1074
306 24 июля, 08:06 306 1441386

>>1406481
Ты под чем эту схему рисовал? Сделай связи аккуратно, с минимумом пересечений.

307 24 июля, 18:09 307 1441754

>>1441289
Я в курсе что это третье вхождение из всех найденных. И запрос тыкал
КАКОГО ХУЯ ТРЕТЬЕ ТО ИМЕННО
Вот в чем вопрос

308 24 июля, 18:35 308 1441763

>>1441128
А почему не regexp_replace(str, '\s{2,}', ' ')?
Это не третье вхождение, это третья подгруппа выражения, в данном случае - пробел.
Вот он и меняет все, что подходит под паттерн(сиречь два и более пробелов) на один

Ответы43049

309 24 июля, 19:34 309 1441787

>>1406481
>countrys
>companys

310 25 июля, 20:10 310 1442478

Анон, привет, помогай-выручай.
Есть задача: логировать изменения отдельных атрибутов сущностей с которыми работает пользователь. С точки зрения пользователя выглядит так: открывается форма с атрибутами сущности, редактируются сущности, пользователь жмет "ОК" и, в случае изменения значений некоторых реквизитов, должна появляться еще одна форма, на которой пользователь выбирает причину изменений.Если от выбора отказывается, то изменения не сохраняются.

Причем БД? При том, что архитектура двухзвенная и при нажатии на "ОК" данные сохраняются в БД.
Тут вроде бы по классике можно создать триггер, но это решит проблему логирования изменений, но логирование и обновление экземпляра сущности должно происходит только после указания пользователем причины.
Как подойти к решению этой задачи?

Ответы4249942628

311 25 июля, 20:52 311 1442499

>>1442478
А ты не знал, что коммитить можно не только после DML?

Ответы42563

312 25 июля, 21:55 312 1442544

>>1406455 (OP)
Стоит в SQL Server вкатываться сейчас? На работе предлагают перейти и обучить. Чет в /б/ говорят, что эта вся хуйня уже устарела и со временем сойдёт на нет.

мимо-джун-фронтэнд

Ответы4263143439

313 25 июля, 22:47 313 1442563

>>1442499
Знал, более развернуто, пожалуйста, поясни.

Ответы42678

314 26 июля, 00:03 314 1442628

>>1442478
>Причем БД? При том, что архитектура двухзвенная и при нажатии на "ОК" данные сохраняются в БД.
Сделай, чтобы было не так.
Хули ты как маленький?

Триггеры и сложные схемы коммитов - решение неудачное. Потому что потом хуй найдешь, что у тебя в какой момент срабатывает, и почему.
Вообще хуярить в базу надо только после того, как у тебя ВСЯ информация уже есть.
Иначе у тебя будет транзакция неизвестной длины, и все такое.

Не будь мудаком, короче, сделай нормально сразу.

315 26 июля, 00:04 315 1442631

>>1442544
Правильно говорят в /б.
Продолжай кнопки рисовать на аяксе.

316 26 июля, 01:52 316 1442678

>>1442563
Имеется в виду, что нужно либо написать так, либо поправить (если есть), чтобы коммит был не сразу после инсерта/апдейта, а после поверки на корректность.

317 26 июля, 11:03 317 1442737

>>1440776
>а о цели
Хранить большие объемы данных из которых надо быстро вытаскивать объемы поменьше?

Ответы42746

318 26 июля, 11:24 318 1442746

>>1442737
Как этому помогает СУБД? Ускоряет работу диска? Или объём его увеличивает?

Ответы4274842762

319 26 июля, 11:25 319 1442748

>>1442746
Да.
Теперь иди нахуй.

320 26 июля, 11:47 320 1442762

>>1442746
СУБД помогает это структурировать.
Давай рассказывай как ты без субд будешь копаться в условном ляме текстовиков каждый из которых хранит по 5-10 условных строчек инфы.

Ответы4276542767

321 26 июля, 11:49 321 1442765

>>1442762
Просто и без задней мысли, ты же программист.

Ответы42768

322 26 июля, 11:53 322 1442767

>>1442762
>как ты без субд будешь копаться в условном ляме текстовиков каждый из которых хранит по 5-10 условных строчек инфы
100500 способов. inb4 все они и есть СУБД, заведомо. Всё хорошее назовём СУБД. Остальное - не СУБД. Ага.

Ответы4277143660

323 26 июля, 11:54 323 1442768

>>1442765
Вот теперь точно иди нахуй.

Ответы42771

324 26 июля, 11:59 324 1442771

>>1442767
>100500
Школодебил, ты?
Да, ты.
>>1442768
Ебать ты медленный, конечно.

Ответы42779

325 26 июля, 12:10 325 1442779

>>1442771
>Школодебил, ты?
Ты о чём, вообще?

Ответы42780

326 26 июля, 12:12 326 1442780

>>1442779
Мало того что он школьник - так еще и тупой тавтология, хаха

Ответы42782

327 26 июля, 12:14 327 1442782

>>1442780
Нет. Не школьник. к сожалению, наверно С чего ты взял. И какое это имеет значение?

Ответы42787

328 26 июля, 12:28 328 1442787

>>1442782
С того, что ты тупое быдло.
Очевидно же.

Ответы42788

329 26 июля, 12:30 329 1442788

>>1442787
Ясно-понятно.

330 26 июля, 19:09 330 1443049

>>1441763
я так и написал в итоге ( и изначально). Просто почему-то именно это решение все хвалили на sql.ru...
З.Ы тут есть разрабы бд или близкие к ним, шарящие в sql и немного и в[ b]pl/sql[/b]? А то я тут тестовое сделал (не сложное), отправил, должны были сегодня ответить до конца дня как сказала эйчарка, но нихуя не ответили. Хочу в общем чтобы кто-нибудь из бывалых посмотрел мое решение, неужели там все так плохо @heheloh - можно сюда писать ну или в тред

Ответы43129

331 26 июля, 21:45 331 1443129

>>1443049
Там я только забыл trim, чтобы удалить пробелы в начале и конце строки.
Там такое решение, я думаю, чтобы именно регуляркой убрать все, как бы показать свои умения. Но зачем так усложнять - не знаю.
Присылай, я разраб на pl/sql, глянем, чего у тебя там.

А если не звонят, то позвони сам, хули - это нормально.

Ответы43157

332 26 июля, 22:35 332 1443157

>>1443129
Кинь Контакты какие нибудь я тебе скину файл

333 27 июля, 16:15 333 1443439

>>1442544
в /b не обманут

334 28 июля, 00:24 334 1443660

>>1442767
Приведи три способа из 100500 хотя бы, как можно в многопользовательском приложении/сайте работать с данными на чтение/изменение/удаление/добавление, не используя субд,а то пока что складывается ощущение, что ты обычный тралл.

Ответы43694

335 28 июля, 04:41 335 1443694

>>1443660
>в многопользовательском приложении/сайте
Всё же concurrency-головного-мозга? А если нет concurrency, то и в СУБД смысла нет? Я, ведь, это и предполагал.

Ответы4369844545

336 28 июля, 04:59 336 1443698

>>1443694
Да, да. Все так.
Тебе не нужно. Не мучай жопу.

337 29 июля, 20:01 337 1444545

>>1443694
Жопой сманеврировал как портовая шлюха, а примеров так и нет.

338 29 июля, 23:07 338 1444698

>>1406455 (OP)
Есть ли задачники с ответами по разработке СУБД?
1) Например, разработать примитивную ER модель и в конце расписывается верное рассуждение и диаграмма. Как такое гуглить?
2) Есть ли годный материал по моделированию данных/мат моделированию на русском?

Ответы50187

3 Кб, 239x79
339 1 авг, 06:09 339 1445783

Помогите дебилу
Нужно получить все детали заказа, заменив названия столбцов на их порядковый номер
Я разобрался как переименовывать столбцы (пикрил)
А как вывести с нумерацией но в таблицу изменения не вносить?

Ответы4581845822

340 1 авг, 09:38 340 1445818

>>1445783
Row_count

341 1 авг, 09:50 341 1445822

>>1445783
Еееебать.
Погугли алиасы. Я крайне сомневаюсь, что тебе необходимо было вносить любые изменения в таблицу.

Ответы46150

342 1 авг, 18:48 342 1446103

Пытаюсь перенести базу данных с локалки на mongo atlas

Создал dump, пытаюсь передать его через команду mongorestore

mongorestore --host pricingtoolcluster-shard-0/pricingtoolcluster-shard-00-00-u2jv8.mongodb.net:27017,pricingtoolcluster-shard-00-01-u2jv8.mongodb.net:27017,pricingtoolcluster-shard-00-02-u2jv8.mongodb.net:27017 --ssl --username admin --password <PASSWORD> --authenticationDatabase admin

пишет Failed: error connecting to db server: no reachable servers

Кто-нибудь сталкивался?

У меня похожая проблема с npm. Могу скачивать пакеты только через прокси (tor bundle)

Ответы4629946366

73 Кб, 585x600
343 1 авг, 20:26 343 1446150

>>1445822
spasibo

344 2 авг, 00:03 344 1446299

>>1446103
Ахахахахаха

>реляционки не нужны!
>sql - говно
>поцаны, я не осилил, как свою модную базу перенести

Ожидаемо.

345 2 авг, 06:56 345 1446366

>>1446103
Может у тебя dns не настроен?

Ответы47170

346 3 авг, 03:20 346 1447170

>>1446366
Инет нормально работает (если не считать проблем с вышеперечисленным)

Ответы47178

347 3 авг, 04:02 347 1447178

>>1447170
Раз днс работает нормально, может, в днк проблема?

348 5 авг, 13:36 348 1448381

>>1406455 (OP)
Друзья, почему шапка не ньюби-френдли?

Вкатываюсь в погроммизды (c# web), пока учебники полистываю и задачки порешиваю, хотелось бы получить основательную базу по БД, а тут нихуя нет=((

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

Ответы4847648886

349 5 авг, 16:36 349 1448476

>>1448381
>Посоветуйте годноты
google.com

350 5 авг, 19:22 350 1448547

>>1406455 (OP)
Что обычно подразумевается под пунктами "продвинутое знание sql" и "proficient in sql" в вакансиях дата саентиста/инжинёра?

Ответы48589

351 5 авг, 21:05 351 1448589

>>1448547
Знания аналитических функций, думаю, будет достаточно для дата сайнтиста.
Если их знаешь, то все остальное, связанное с селектами, тоже наверняка знаешь.

Ответы50911

352 6 авг, 14:33 352 1448886

>>1448381
Сергей Тарасов. СУБД для программиста. Хороша для ознакомления с предметом, список литературы в конце неплох.

Ответы49086

353 6 авг, 19:59 353 1449086

>>1448886
Благодарю

354 8 авг, 16:23 354 1449868

Реально найти удаленную работу на PL/SQL?

Ответы50186

355 9 авг, 00:53 355 1450186

>>1449868
Очень даже. Правда обычно это либо от 3+ лет опыта, либо будешь получать штук 60-80

356 9 авг, 00:57 356 1450187

>>1444698
Такого нет. Можешь проектировать базу на любую предметную область и сюда ERD на проверку кидать. В чем проблема? Я помогу

357 9 авг, 21:12 357 1450649

>>1406455 (OP)
Откуда можно скачать бигдату финансовых рынков?

358 10 авг, 16:12 358 1450911

>>1448589
Есть чего-нибудь почитать по ним? Понятным языком.

Ответы50966

359 10 авг, 18:00 359 1450966

>>1450911
https://oracle-base.com/articles/misc/analytic-functions

Все разобрано с примерами на Оракле.

360 12 авг, 02:21 360 1451752

Пасаны, если у меня запрос содержит фрагмент типа "where object.id in (select object.id from object where ...)", то нужно ли мне во вложенном запросе писать ORDER BY id? Я не очень шарю в выборке типа IN, поэтому мне непонятно, вырастет ли производительность при сортировке, или наоборот упадёт из-за ненужной сортировки.

Ответы51811

361 12 авг, 11:17 361 1451811

>>1451752
Открой планировщик запроса и посмотри как будет с ордером и без.

30 Кб, 1034x218
362 13 авг, 10:23 362 1452239

Уважаемые знатоки, подскажите пожалуйста:
Есть список сотрудников и список оборудования. Нужно построить модель БД, так чтобы по каждому сотруднику можно было посмотреть какое оборудование находится у него на балансе в текущий момент, и какое было раньше. Когда он его получал, и когда сдал назад.

Сперва я думал что получится что-то типа пикрил, но теперь сомневаюсь. Ведь тогда получится что один сотрудник не может брать одно оборудование два раза. Типа взял, попользовался, сдал. Потом взял еще раз. Или я ошибаюсь?

Мудрые аноны, подскажите как правильно сделать?

Ответы52259

363 13 авг, 11:02 363 1452259

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

Ответы5226952462

364 13 авг, 11:22 364 1452269

>>1452259
Спасибо огромное! Насчет первого варианта понял, а вот насчет второго не очень если честно.
Если тебе не трудно, не мог бы ты нарисовать как это выглядит в плане связей и ключей? Я просто первый раз сталкиваюсь с БД где больше двух таблиц с типичными связями и мой мозг никак не хочет это воспринимать.

365 13 авг, 16:20 365 1452462

>>1452259
Правила буравчика: всегда использовать суррогатные ПК.
Сегодня тебе кажется, что в качестве ПК можно использовать атрибут данных, завтра окажется, что он подвержен изменению или не уникален.
В крайних двух таблицах ты так и сделал.
А в средней - нет.
Не еби мозги, сделай в ней суррогатный ПК
Правила оформляй индексами и триггерами (ща наверняка еще подскажут, чем)

366 14 авг, 20:56 366 1453441

Есть табличка
id(PK), c1, c2(NN), c3(NN)
мне нужно найти дубли, совпадающие по c1 и c2, но отличающиеся по с3 и, естественно, id.
запрос я написал, но, мне кажется, пздц неоптимизированный

SELECT FROM mytable t1 WHERE
(SELECT COUNT() FROM mytable t2
WHERE t1.id != t2.id
AND (t1.c1 = t2.c1 OR (t1.c1 IS NULL AND t2.c1 IS NULL))
AND t1.c2 = t2.c2
AND t1.c3 != t2.c3
) > 0;

может кто нибудь посоветовать, как это оптимизировать?
если я разделю этот запрос на штук 30, в каждом сделаю WHERE c2 = some_const, и объединю их UNION ALL, это будет лучше для бд на проде? или я так просто еще больше загружу бд?
доверь джуну скл писать...

Ответы5346953595

367 14 авг, 21:57 367 1453469

>>1453441
Да епту.
Select t1.звизда
From table t1
Where (t1.c1, t1.c2) in
(Select t2.c1, t2.c2
From table t2
Group by t2.c1, t2.c2
Having count(звизда) > 1);

Ответы53470

368 14 авг, 22:04 368 1453470

>>1453469
Мне нужно обязательно шобы t1.с3 != t2.c3

Ответы53480

369 14 авг, 22:06 369 1453471

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

Ответы53514

370 14 авг, 22:18 370 1453480

>>1453470
Тогда в подзапросе добавь джойн к самой себе по c1 и c2 и фильтр, где t2.c3 <> t3.c3.

371 14 авг, 23:16 371 1453514

>>1453471
>О ваших постах на двача может может знать ваш будущий hr
Да она, блядь, кончит фонтаном от моих постов.
Скорей бы.

372 15 авг, 07:20 372 1453595

>>1453441

select id, c1, c2, c3
from (
select
a.,
count(case when first_c3 <> c3 then 1 end)
over (partition by c1, c2
order by c3
rows between unbounded preceding and unbounded following) as diff_c3
from (
select
mytable.,
first_value(c3) over (partition by c1, c2 order by c3) as first_c3
from mytable
) as a
) as b
where diff_c3 > 0

373 15 авг, 11:45 373 1453679

Почаны, в шапке нихуя нет, на ваших http://sql-ex.ru и http://www.sql-tutorial.ru сразу начинают с синтаксиса, а где все это тестить (если не брать консоль на сайтах), установка и настройка ms sql и прочие базовые вещи для вкатывальщиков где взять?

Ответы5377053930

374 15 авг, 13:48 374 1453770

>>1453679
В гугле забанен?

Чтобы тестить на, например, ms sql, тебе потребуется
- ms sql server developer edition
- sql server management studio

375 15 авг, 17:18 375 1453930

>>1453679
http://sqlfiddle.com/

Ответы53932

376 15 авг, 17:19 376 1453932

>>1453930
Ну это если кому консоль на сайтах подойдет.

377 18 авг, 00:37 377 1455415

Крч, устроился джуном на проект в бигдату.
Мой стек - python (написание ETL), mpp СУБД и один из ETL-фреймворков. Мне кажется, что проекты могут завершится, а бигдата как направление нужно лишь очень крупным компаниям, и у меня гораздо больше шансов полететь на улицу чем у рандомного фронтендера.
Насколько мои предположения правильны, и стоит ли вообще пытаться строить карьеру инженера данных?

378 18 авг, 23:39 378 1455927

Ребят, кто шарит в nosql бд? Я короче почитал про всякие и пришел к выводу, что Foundationdb самая пездатая, гибкая и все такое. Ща читаю по ней доки, сорцы. Оч хочу вкатиться в распределенные приложения в будущем, именно с этой бд. Только напрягает, что по ней одна вакансия всего на весь дс. В основном всякие кассандры, hbase и прочее говно мамонта. Скажите, велика вероятность, что ситуация изменится в ближайшем будущем? Учитывая, что порог входа для использования данной бд довольно высокий, т.к. по сути это очень сырое отсортированное key-value хранилище и нужно позалипать в доках недельку другую, чтобы разобраться, как с ним работать.

379 19 авг, 18:19 379 1456360

У нас в базе в качестве ID записи вместо простого порядкового числа используется строка формата sha1.
Олды говорят, что это дает равномерное распределение данных по кластеру в процессе хранения и обработки.
Как это понимать и для чего это нужно? Влияет ли это на скорость доступа или еще на что-то?

Ответы56382

380 19 авг, 18:55 380 1456382

>>1456360
Это в принципе правильное решение, потому что за счетчик айдишников обычно большая конкуренция в кластере. Как это вот все синхрогизировать, чтобы две записи с одинаковым ключом не сгенерились? Проще использовать UUID и проверять перед вставкой, чтотакого ключа в базе еще нет. С растущим интом такое тоже возможно, но в зависимости от степени конкуренции большая часть транзакций будет ретраится на этапе проверки, что такого ключа еще нет и производительность просто в 0 упадет.

Ответы56457

381 19 авг, 19:37 381 1456457

>>1456382
>Как это вот все синхрогизировать, чтобы две записи с одинаковым ключом не сгенерились
Ставим триггер на добавление в таблицу записи - храним переменную со сцетчиком и увеличиваем. Разве это все не решается на уровне базы?
>большая часть транзакций будет ретраится
Кажется я понял, спасибо, анан. Типо появится очередь за новым id'шником?

Ответы56607

sage 382 19 авг, 20:42 382 1456563

Подскажите как можно реализовать такую логику mysql. Есть таблица с полями id/user_id/token. При регистрации в этой таблице создается поле для пользователя. Если он решит выйти и снова авторизироваться, вместо новой записи в таблице должна обновляться старая запись. Я пробовал сделать это через
INSERT INTO t8rv0_mobile_tokens (user_id, token) VALUES (:user_id, :token) ON DUPLICATE KEY UPDATE user_id = values(user_id), token = values(token)
Но, видимо из-за того, что токены различаются, оно создает новую запись вместо обновления старой.

Так же вопрос. Сам объект пользователя сохраняется в другой таблице. Если я слинкую user_id двух таблиц, оно создаст мне записи под все id? Тогда можно было бы заменить INSERT на UPDATE и пофиксить проблему

Ответы56617

383 19 авг, 21:13 383 1456607

>>1456457
Мы вообще сейчас о распределенной бд говорим? Если нет, то это действительно просто и решается на уровне базы (по сути обычный AtomicInteger). В распределенной бд все сложнее намного. Нужна либо лочка по счетчику (а для этого нужен консенсус, который сильно бьет по производительности), либо optimistic concurrency control, который и будет ретраить большую часть транзакций. Допустим у тебя 20 транзакций одновременно вставляют строку в базу, только одна из них пройдет. Потом из 19 только одна пройдет и т.д.

Ответы56612

384 19 авг, 21:22 384 1456612

>>1456607
Все понятно.
У меня не распределенная. Вообще, зачем нужны распределенные базы?
Типа когда у нас сервера разбросаны по всему миру для высокой скорости доступа всех пользователей и на каждом один экземпляр базы?

385 19 авг, 21:27 385 1456617

>>1456563
Не стал вникать в твою проблему, сейчас стрельну вслепую, может попаду
>ON DUPLICATE KEY
Посмотри что у тебя выставлено в качестве ключа

Ответы56623

sage 386 19 авг, 21:35 386 1456623

>>1456617
И ты угадал. Удалил поле id и поставил user_id как primary key.
Спасибо

387 20 авг, 00:26 387 1456714

Есть 2 вопроса

Полгода работаю "Дата инженером " - в основном трансформирую данные с 2х баз данных, а также разбираю созданные экселевские отчеты / цсвшные репорты которые мне присылают в новые базы. Иногда в юпитер ноутбуке разбираю и чищу данные -> скидываю ноутбук чуваку

Я занимаюсь говном, то есть это и есть тот самый дата engineering? - это первый вопрос

Почитал вакансии - вон, люди красиво визуализируют данные и в табло, я на начальном уровне какой-то дешборд построить могу, есть чему учиться

А чем ещё дата инженеры занимаются? - собсна вот такой второй вопрос

Ответы58126

388 20 авг, 19:24 388 1457034

Кто-нить знает как впараше поиск людей работает? Ну типо, можно написать имя человека, город, возраст, пол и еще хуеву тучу другой инфы. Не стоит же у них индекс на каждую вариацию? Или стоит? Ну скажем если я ищу людей по универу, с какими-то доп. параметрами, то можно сначала найти всех из этого универа и уже их линейно просканировать на соответствие другим параметрам. Но скажем я ищу олегов из дс, которым 31 год. Олегов дохуя, людей в дсе дохуя и тех, кому 31, тоже дохуя. Как вот это сделать?

Ответы57277580425812563407

389 21 авг, 03:12 389 1457277

>>1457034
Может партицирование по регионам?
Если указываешь вузик, то регион по нему изи определить.
Ну, а если просто возраст, то рандомных Олегов 31 летних.
Хотя как количество записей так быстро воззращается.
хз, кароч

390 21 авг, 15:21 390 1457648

Дайте, пожалуйста, ссылку на рабочий скрипт создания Northwind на MySQL. Всё, что нагуглил - у меня не работает, постоянно какие-то ошибки. Спасибо

Ответы57724

391 21 авг, 16:57 391 1457724

>>1457648
Короче, у меня вылазит ошибка
ERROR 1366 (HY000) at line 175: Incorrect string value: '\xF3n 222...' for column 'Address' at row 1
Пробовал делать то, что гугл советует - не помогло (или не так искал). Надеюсь на помощь местных гуру.

392 21 авг, 23:36 392 1458042

>>1457034
>Не стоит же у них индекс на каждую вариацию?
Индекс разве не просто на поля ставится без перебора вариаций?

393 22 авг, 01:58 393 1458125

>>1457034
Колоночный индекс

Ответы60255

394 22 авг, 02:04 394 1458126

>>1456714
Etl, отчетность, администрирование субд - вот и все, собсна.
Однажды приходит понимание, что этого мало, например, нужно тебе по апи что-то откуда-то скачать, учишь язык какой-нибудь, хотя бы PowerShell.
Потом оказывается, что какие-то данные хотят не загружать к тебе в бд, а редактировать прям в ней - понимаешь, что нужно приложуху для этого запилить, да чтоб у всех работало - учишь фронт, чтобы нашлеать формочек.

Потом данных уже много, хотят по ним прогнозы строить - вкатываешься в эконометрику (или как ща модно называть - МАШИН ЛЕРНИНГ), делаешь всякие там регрессии на ПАЙТОНЕ

395 22 авг, 18:32 395 1458639

А по nosql вопросы тоже тут задавать?

Ответы58663

396 22 авг, 18:51 396 1458663

>>1458639
Ну попробуй.

Ответы58706

397 22 авг, 19:31 397 1458706

>>1458663
Как работает $or в монге? Сильно он запрос замедляет?

398 24 авг, 00:41 398 1459669

>>1406495
> Сущности называются единственным числом.
Разве?
Где почитать про правила именования?
мимо

Ответы59718

399 24 авг, 03:32 399 1459718

>>1459669
В гугле
Если твоя сущность - жопА, то называешь таблицу ЖопА
Если твоя сущность - жопЫ (явно указывает, что список жоп, а не одна), называешь таблицы ЖопЫ

В любой нормальной книжке про ДБ это будет где-нибудь написано. Откуда я это взял, я уже не помню, но весь мой опыт (20+ лет) показывает, что множественное число там, где сущность описывает ОДИН объект, - признак говеной системы (от ЕРД до кода).

остальные конвенции - кэмелКейс или подчеркивания - это внутренние соглашения.

и да, характерный признак пидора - использование зарезервированого слова в названии таблицы или поля

другой характерный признак пидора - неименованные констрейнты (фк без имен и пр.) - ты их потом не удалишь нормально.

Ответы5995760099

400 24 авг, 14:35 400 1459957

>>1459718
А может быть табличка, где всего одна жопа?
Как ты это видишь? Одна строчка в ней хранится?

Ответы5995960045

401 24 авг, 14:39 401 1459959

>>1459957
Очевидно же, что нет.
Если в одной строке твоей таблицы хранится информация об одной жопе - то таблица называется "жопа".
Если сразу о нескольких - то "жопы".

Ответы59963

402 24 авг, 14:41 402 1459963

>>1459959
Приведи пример, в котором у тебя в табличке хранится информация для одной жопы. Непонятно, что ты имеешь в виду.

Ответы60175

403 24 авг, 16:40 403 1460041

Анончики, а в этом треде уместно задать вопрос по запросам SQL?

Ответы60048

404 24 авг, 16:45 404 1460045

>>1459957
>А может быть табличка, где всего одна жопа?
Двачер познает мир, бля.
Может быть табличка, где вообще ни одной жопы нет.
Если тебе это непонятно, то рановато за соглашения об именования браться.
Надо что-нибудь попроще

405 24 авг, 16:46 405 1460048

>>1460041
Ну что ты, анончик!
Вопросы по сиквелу надо задавать в питоно- и жс-тредах.

Хули ты издалека заходишь?
Есть вопрос - задавай.

Ответы60053

166 Кб, 1576x620
406 24 авг, 16:55 406 1460053

>>1460048
Загадали мне загадку, которую никак не могу раздуплить. Основная сложность в том, что если человек перемещался между станциями в последовательности 1-2-3-1, то как вот отловить минимальное время второго захода на станцию 1?

Ответы600696009660158

407 24 авг, 17:08 407 1460069

>>1460053
Графы в помощь

Ответы6007360091

408 24 авг, 17:11 408 1460073

>>1460069
ОМГ, даже не знаю, как это гуглить, но спасибо за подсказку в любом случае

Ответы60097

409 24 авг, 17:51 409 1460091

>>1460069
Какие, блять, графы, не путай его.
Все решается обычным SQL.

Ответы60094

410 24 авг, 18:01 410 1460094

163 Кб, 1218x72877 Кб, 672x746

>>1460091
Че делать то, анон? Я пока нафигачил вот так. Верно хоть иду? Дальше, поди надо какие-то сравнения сделать через CASE? Или я вообще хуйни наворотил, и решать надо не так?

411 24 авг, 18:03 411 1460096

>>1460053
lag lead должны решить твою проблему.

412 24 авг, 18:03 412 1460097

>>1460073

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

Попробуй рекурсивные запросы, почитай про LAG/LEAD, можешь попробовать решить с подзапросами - способов тут несколько.

Ответы60101

413 24 авг, 18:07 413 1460099

>>1459718
Самый пиздец - это названия по-русски транслитом.

Ответы60162

414 24 авг, 18:09 414 1460101

>>1460097
Посмотрел про LAG/LEAD - похоже, то, что надо, спасибо

Ответы60107

415 24 авг, 18:18 415 1460107

>>1460101
Запости потом что получилось.

Ответы6011060315

416 24 авг, 18:20 416 1460110

>>1460107
Это будет не скоро, потому что мой SQL исключительно базовый. Пока разберусь, как это работает, несколько часов точно пройдет, но как решу, запощу. Или если не решу, завтра опять приду помощи просить. Надо решить к понедельнику мне эту загадку

417 24 авг, 19:13 417 1460158

>>1460053
Что там написано про "необязательно решать за один"?
Не обязательно одним запросом?
Хули тогда, отсортируй данные по юзеру, времени, потом в процедуре цикл напиши

В результате требуется _построить таблицу_

Ответы60181

418 24 авг, 19:17 418 1460162

>>1460099
Нет. Это не пиздец.
Если все понимают, что означает Cheburashka, то так и надо называть. А не пытаться искать перевод.

Самый пиздец - названия по-русски БЕЗ транслита. Просто по-русски.
Видел оракловую базу в солдиной компании, где половина таблиц называется "пользователь" и "счет", а другая половина - по-английски латиницей.

419 24 авг, 19:37 419 1460175

>>1459963
Да блядь, таблица о сущности "жопа".
А если это таблица, в которой несколько столбцов вроде "ширина", "глубина", "количество хуев", то называть ее верно будет жопа_properties.
Но если ты решишь сделать её вертикальной и у тебя в этой таблице свойств будут строки типа "жопа, глубина, 15", "жопа, ширина, 10", "жопа, хуи, 42", то назвать ее надо "жопа_property".
Верно тебе говорил анон, что ты просто ещё не дошел до этого, раз не понимаешь такие простые вещи.

420 24 авг, 19:52 420 1460181

>>1460158
Ага, не обязательно решать за 1 запрос, возможны промежуточные таблицы. Он и так вроде отсортирован по юзеру и времени. Посмотрю и про циклы, спасибо

421 24 авг, 21:55 421 1460255

>>1458125
Ну окей, поставил ты индекс на город, имя и т.д. И вот тебе приходит запрос:
Найти всех Олегов из ДС которым от 31 до 35 лет. И че блять? С этими индексами ты можешь быстро найти либо всех Олегов (а ВК еще как - то учитывает написание, то есть там Олег, Олежко, Олеган это все одни имена), либо всех, кто живет в ДС, либо тех, кому от 31 до 35 лет. После этого тебе надо линейно сканировать весь результат на соответствие другим фильтрам. Понятно, что это пиздец как медленно учитывая кол-во пользователей Впараше. Плюс у них еще распределенная БД, поэтому добавляется еще задержка на передачу пакетов от кластеров БД к серверу. Как у них так получается быстро сука все искать блять? Я тоже так хочу уметь. Понятно, что у них как - то еще пагинация юзается, то есть они не возвращают тебе сразу весь результат (и не считают его разом на сервере). Но блин, даже допустим если у нас пагинация в 50 элементов. Сервер находит всех Олегов (допустим), начинает бежать по результату поиска, пока не наберет 50 Олегов, соответствующих фильтру (ДС и возраст 31-35). Это все равно будет пиздец как долго мне кажется. Ну а скажем если я поменяю в запросе ДС на мухосрань. Тогда наверное выгоднее будет в начале найти людей из мухосрани и уже их линейно сканировать.

Короче, я думаю, что они действительно юзают индекс на каждую колонку. Но они не просто тупо его применяют как в sql запросе (WHERE a=x AND b=y AND c=z), а ведут какую - то статистику по каждой из колонок. Наверное, в эту статистику входит кол-во записей, у которых в этой колонке стоит такое - то значение. Допустим людей из ДС дохуя, а из мухосрани мало. Тогда БД уже может в начале применить индекс, который максимально сузит круг поиска (то бишь индекс по городу, в случае мухосрани). А потом уже просканирует этот результат и вернет 50 людей. Или допустим я ищу какого - нибудь Лаврентия из ДС, тогда можно в начале применить индекс по имени.

Но все равно непонятно, как это работает в случае с такими городами как ДС. И у этого решения я уверен есть куча граничных случаев, которые могут сильно загрузить сервер и ему придется сканировать весь результат, пока он не найдет 50 людей. Короче хз...

421 24 авг, 21:55 421 1460255

>>1458125
Ну окей, поставил ты индекс на город, имя и т.д. И вот тебе приходит запрос:
Найти всех Олегов из ДС которым от 31 до 35 лет. И че блять? С этими индексами ты можешь быстро найти либо всех Олегов (а ВК еще как - то учитывает написание, то есть там Олег, Олежко, Олеган это все одни имена), либо всех, кто живет в ДС, либо тех, кому от 31 до 35 лет. После этого тебе надо линейно сканировать весь результат на соответствие другим фильтрам. Понятно, что это пиздец как медленно учитывая кол-во пользователей Впараше. Плюс у них еще распределенная БД, поэтому добавляется еще задержка на передачу пакетов от кластеров БД к серверу. Как у них так получается быстро сука все искать блять? Я тоже так хочу уметь. Понятно, что у них как - то еще пагинация юзается, то есть они не возвращают тебе сразу весь результат (и не считают его разом на сервере). Но блин, даже допустим если у нас пагинация в 50 элементов. Сервер находит всех Олегов (допустим), начинает бежать по результату поиска, пока не наберет 50 Олегов, соответствующих фильтру (ДС и возраст 31-35). Это все равно будет пиздец как долго мне кажется. Ну а скажем если я поменяю в запросе ДС на мухосрань. Тогда наверное выгоднее будет в начале найти людей из мухосрани и уже их линейно сканировать.

Короче, я думаю, что они действительно юзают индекс на каждую колонку. Но они не просто тупо его применяют как в sql запросе (WHERE a=x AND b=y AND c=z), а ведут какую - то статистику по каждой из колонок. Наверное, в эту статистику входит кол-во записей, у которых в этой колонке стоит такое - то значение. Допустим людей из ДС дохуя, а из мухосрани мало. Тогда БД уже может в начале применить индекс, который максимально сузит круг поиска (то бишь индекс по городу, в случае мухосрани). А потом уже просканирует этот результат и вернет 50 людей. Или допустим я ищу какого - нибудь Лаврентия из ДС, тогда можно в начале применить индекс по имени.

Но все равно непонятно, как это работает в случае с такими городами как ДС. И у этого решения я уверен есть куча граничных случаев, которые могут сильно загрузить сервер и ему придется сканировать весь результат, пока он не найдет 50 людей. Короче хз...

Показать весь текст
Ответы603216036863501

422 24 авг, 23:42 422 1460315

>>1460107
Решил. В числе прочего пригодилась функция lead, спасибо! Двач - воистину помогач

Ответы60343

423 24 авг, 23:51 423 1460321

>>1460255
>Ведут какую-то статистику по каждой из колонок
Здравствуйте, вы только что оптимизатор.

424 25 авг, 01:12 424 1460343

>>1460315
Ну дык пости запрос сюда. Для истории.

Ответы6228671469

425 25 авг, 05:39 425 1460368

>>1460255
>учитывает написание, то есть там Олег, Олежко, Олеган это все одни имена
Ты не поверишь, но бывают и индексы на функцию

А еще бывает тейбл-партишенинг

А еще бывает кэширование

Короче, до хера всего бывает.

Вылези уже с двача, да почитай про оптимизацию хранения и оптимизацию выборки

426 26 авг, 10:57 426 1461001

Норм ли юзать триггеры, процедуры для логики помещения записей в таблицу историй?

Ответы6103061888

94 Кб, 1360x768
427 26 авг, 11:11 427 1461012

https://jsfiddle.net/leomac/vhy04phz/ Помогите с тестовым, не врубаюсь как вывести последние 3 вопроса.

Ответы61021

428 26 авг, 11:22 428 1461021

>>1461012
1) select p.name, p.surname
from people p
where exists (select 1 from people_nationalities pn where p.person_id = pn.person_id and pn.nationality = 'RU')

2) select a.name, a.surname
from actors a
where a.age = (select max(aa.age) from actors aa)
fetch first 1 row only;

fetch first - это оракловый синтаксис, у других вендоров свой.
актеров с макс. возрастом может быть много.

3) select p.name, p.surname
from people p
join people_nationalities pn on p.person_id = pn.person_id
group by p.name, p.surname
having count(pn.nationality) > 1;

Ответы61022

429 26 авг, 11:24 429 1461022

>>1461021
Спасибо.

430 26 авг, 11:30 430 1461030

>>1461001
Разве что для проектов уровня лаба.
В промышленном коде триггеры для этого не используются, исторические записи создаются в прикладном коде в нужных местах.

Ответы61049

431 26 авг, 11:56 431 1461049

>>1461030
https://stackoverflow.com/questions/17872691/sql-history-table-and-triggers

Какая тогда их сфера применения?

Ответы61220

432 26 авг, 15:20 432 1461220

>>1461049
Во-первых, тот анон тебя наебал.
Потому что за "прикладной код" он считает только то, что пишет лично он на своем сраном питоне.
Процедуры вполне могут быть частью прикладного кода.
Триггеры вполне могут использоваться для целей, что ты указал.
С очевидными ограничениями (например, триггер, в общем случае, не узнает, какая сволочь удаляет запись).

Во-вторых, триггеры могут использоваться для обеспечения целостности данных. В тех случаях, когда правила сложнее, чем просто ФК. Например, нельзя иметь четное число в поле А, если в таблице Х нечетное количество записей.
Конечно, такие правила должны быть реализованы на стороне клиентского кода.
Но все знают, что клиентский код пишут уебаны, не чурающиеся питона и пхп, поэтому доверять им нельзя.
Посему в нормальной базе максимально закрываются возможность в нее насрать. Констрейнт это самый очевидный и простой способ, триггер - более сложный и редко нужный.

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

Другое дело, что это не очень прозрачно.

Но, когда у тебя есть легаси система, где база одна, а прикладной код может быть написан не просто в разных архитектурах, но и на разных языках, у тебя особо и нет другого выхода - единственный общий знаменатель это именно база.

Ответы6155961578

433 27 авг, 01:49 433 1461559

>>1461220
спасибо,

я уже несколько дней думаю над такой штукой,

толи я чего то не понимаю, то ли еще что
managed//cloud DB действительно выходят в разы дороже чем если просто арендовать железные сервера и самим на них строить кластер?

Ответы6156162194

434 27 авг, 01:53 434 1461561

>>1461559
Дороже потому что они тебе гарантируют отказоустойчивость.
С тем что настроил сам и ебаться будешь сам когда упадет.

435 27 авг, 03:25 435 1461570

>>1406481
kursovaya1

436 27 авг, 03:30 436 1461571

>>1410061
Django со встроенной админкой

Ответы84720

437 27 авг, 04:40 437 1461578

>>1461220
Если все манипуляции с данными написать на хранимых процедурах, то легко можно обойтись без триггеров.

Ответы61831

438 27 авг, 14:23 438 1461831

>>1461578
Можно.
За исключением триггеров для обеспечения целостности.
Это относится к ЕРД, скорее, чем к прикладному коду. Как любой констрейнт.
Но, опять же, у тебя могут быть пять процедур, которые модифицируют какую-то таблицу, и от этого должна добавляться запись в историю. Сразу вопрос: что лучше, проще, надежнее и удобнее:
1. написать один и тот же код в пяти процедурах?
2. оформить этот код процедурой/функцие и вызывать ее из пяти процедур?
3. подвесить один триггер?
Для мне ответ очевиден, если триггер позволяет реализовать все, что мне надо в истории.

Ответы6186861888

439 27 авг, 15:18 439 1461868

>>1461831
Триггер не узнает кем было сделано изменение. А в хранимку можно передать такую инфу.

Ответы62029

440 27 авг, 15:59 440 1461888

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

Если идет речь об истории, то я бы выбрал вариант 2, т.к. это позволит не писать пять разных апдейтов. Кроме того, триггер не имеет доступа к переменным хранимой процедуры (в оракле точно, предположу, что и в других субд тоже), придется пробрасывать все необходимое окольными путями.
Но и тут не отрицаю, что в ином случае триггер может оказаться удобнее.

Если отвечать на вопрос анона
>>1461001
То да, нормально, есть такой подход и он вполне рабочий.

441 27 авг, 17:10 441 1461934

>>1406455 (OP)
Помогите, пожалуйста. Никак не могу придумать как нормально задизайнить таблицу.

Грубо говоря, есть объект Message и у него есть поле action_type т.е. возможные значения этого поля уже известны заранее). В зависимости от этого поля, меняется структура полей, которые нужно хранить.

Как нужно задизайнить схему, чтобы можно было хранить это все в каком-то связанном виде?

Ответы61975

442 27 авг, 18:18 442 1461975

>>1461934
Можешь завести нужные поля в Message для всех action_type, если их число жестко определено и не будет меняться. Можешь сделать EAV (см. Entity-Attribute-Value). Можешь оставить в Message общие поля, а остальные разнести по разным таблицам.

Зависит от природы данных и твоих задач - насколько велик справочник action_type (3 значения или 30), будет ли он изменяться пользователями,предполагается ли поиск по различающимся полям, участвует ли таблица в тяжелых запросах, будет ли изменяться структура полей. У каждого решения есть плюсы и минусы.

Ответы62039

443 27 авг, 19:13 443 1462029

>>1461868
Да. об этом я писал где-то выше.
Увы, нельзя все и сразу сделать хорошо. Чем-то где-то придется пожертвовать.

444 27 авг, 19:20 444 1462039

>>1461975
Я бы сказал, что если общее число уникальных для каждого типа полей невелико, то надо их все в одну таблицу пихать.
Оверхед на пусоту в записях будет невелик, а удобство написания и выполнения запросов вырастет в разы. Про адпейты и делиты не говорю уж.
Ну и, опять же, будет гораздо удобнее месседж одного типа превратить в месседж другого руками.

Есть одно но - как правильно поддержать целостность данных - not nullы требуемые лишь для одного типа, и как не насрать в поля, этому типу нехарактерные.

445 28 авг, 00:33 445 1462194

>>1461559
Суммарно за все время - конечно больше, в ближайшей перспективе - нет.
Как написал оратор выше, плюс ко всему облако подразумевает отказоустойчивость.

Ответы62237

446 28 авг, 04:13 446 1462237

>>1462194
>облако подразумевает отказоустойчивость
Пока оператор не обанкротился, ркн не закрыл доступ, хуй знает кто не влез в твои данные, и т. д.

Вам дай волю, вы и мамку свою в облако запихнете

Ответы62240

447 28 авг, 04:46 447 1462240

>>1462237
Два чаю этому реалисту.

448 28 авг, 08:27 448 1462286

>>1460343
На работу устроюсь сперва, потом обязательно запощу. Пока что могу сказать, что работу приняли, сказали "малаца", сегодня следущий этап собеседования

449 28 авг, 15:54 449 1462653

В одной таблице хранится два типа документов, которые связаны между собой. Нужно сделать селект по type1.status и type2.status. Как это сделать?

Ответы62707

450 28 авг, 17:35 450 1462707

>>1462653
Анончик, если хочешь получить хороший ответ - задавай хороший вопрос. Например, структуру таблицы напиши, что с чем связано и по какой колонке, что ты хочешь выбрать.
Имей уважение к людям, не пости несвязный бред.

Ответы62726

451 28 авг, 18:09 451 1462726

14 Кб, 452x16912 Кб, 452x169

>>1462707
Есть две таблицы. Все документы хранятся в DOCUMENT, а связи между ними - в BIND. Например, первая запись в BIND - это документ с id 333 из DOCUMENT, который связан с документом 111.

Мне нужно получить список связанных пар документов с определенными статусами. Пример: из пикрила мне нужно получить пару (или несколько пар) связанных документов, у которых у первого TYPE=ebalo, STATUS=vsrato, а у второго TYPE=hui, STATUS=tiny.

Надеюсь, понятно раскрыл вопрос.

Ответы63136

13 Кб, 513x146
452 28 авг, 18:18 452 1462728

Аноны, помогите кусок запроса составить. Вот кусок схемы таблицы. Нужно во вьюху вытянуть конкретный user_properties.key в качестве поля, а в качестве значения поля нужно вытащить user_properties.value.string_value из record user_properties.value

Ответы63146

453 29 авг, 12:55 453 1463136

>>1462726
Тебе нужно заджойнить document с bind по global_id, а затем bind снова заджойнить с document но уже по doc_id. Затем написать условие where для ведущих и связанных документов, различить их помогут алиасы.

Читай про inner join, where. В разборе join обрати внимание, как используются алиасы для таблиц. Пиши код, пробуй.

454 29 авг, 13:17 454 1463146

>>1462728
Какая у тебя СУБД? Как ты пробовал решить самостоятельно? Что именно вызвало затруднения? Документацию читал?

455 29 авг, 20:39 455 1463407

>>1457034
Бля, понял!
Они просто сливают всю инфу по пользователю в одну строку и ее индексируют. Вот так короче

Ответы6341563591

456 29 авг, 20:47 456 1463415

>>1463407
Ну и пагинация конечно, и перед этим мердж-джоин

457 29 авг, 21:50 457 1463501

>>1460255
Почитай, как работают колоночные индексы. Они строятся не по каким-то столбикам, а в целом меняют структуру хранения данных в табличке.

Ответы63580

458 30 авг, 01:10 458 1463580

>>1463501
>индексы меняют структуру хранения данных в табличке
Ооооооок

Ответы63698

459 30 авг, 01:55 459 1463591

>>1463407
Пощады, там в базе всего несколько миллионов строк(смехота), собранная статистика и хороший оптимизатор запросов - вот и работает все быстро.
Да и фетч происходит порциями, а не всех строк сразу.

460 30 авг, 10:42 460 1463698

>>1463580
Индексы columnstore — это стандарт хранения и запрашивания больших объемов данных в таблицах фактов. В этом индексе используется хранение данных и обработка запросов по столбцам, что позволяет практически в 10 раз увеличить производительность запросов к хранилищу данных по сравнению с традиционным хранилищем, в котором данные хранятся по строкам, и практически в 10 уменьшить размеры данных по сравнению с несжатыми данными.
https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/columnstore-indexes-overview?view=sql-server-2017

Ответы64302

461 30 авг, 17:59 461 1464055

Аноны, ньюфаг в треде, такая задачка, нужно вывести id предпоследнего нанятого сотрудника, используя подзапрос.
Наваял вот это, но не работает, так как типа ничего не известно о subQuery (какого черта, я же подписал). Помогите, кто чем может

SELECT EmployeeID
FROM (SELECT EmployeeID, HireDate
FROM Employees
WHERE HireDate < (SELECT MAX(HireDate)
FROM employees)) AS subQuery
WHERE HireDate = (SELECT MAX(HireDate)
FROM subQuery);

Ответы64085

462 30 авг, 18:46 462 1464085

>>1464055
Потому что нельзя обращаться в подзапросе к блоку запроса выше таким образом. К его полю - пожалуйста, но не селектить из него.

select coalesce(
(select id from
(select id from employees order by hiredate desc)
where rownum = 2),
(select id from employees))
--from dual

Мне после оракла кажется безумным такой запрос без from dual, но если бд другая - нужно без него.
Берешь второго по hiredate сотрудника, если такого нет - то он всего один, выводишь его.
Если задача подразумевает, что если сотрудник один, то ничего не выводить - то тебе нужен первый аргумент coalesce только.

463 30 авг, 18:55 463 1464092

>>1406455 (OP)
Господа, не подскажете, в каких случаях distinct работает быстрее group by в posgres?
Я читал где-то, что distinct всегда под капотом юзает group by, так ли это?
Есть у кого бенчмарки или примеры, линканите, плиз

Ответы64471

464 30 авг, 23:20 464 1464302

>>1463698
Цитаты из документации на русском языке...
Ооооок

Это, конечно, все очень хорошо. Только columnstore index это не индекс даже в понимании МС
Если ты там повыше поднимешься в этой доке, то увидишь, что

An index is an on-disk structure associated with a table or view that speeds retrieval of rows from the table or view. An index contains keys built from one or more columns in the table or view. These keys are stored in a structure (B-tree) that enables SQL Server to find the row or rows associated with the key values quickly and efficiently.

А в описании колумнсториндекса будет написано:
A columnstore index is a technology for storing, retrieving, and managing data by using a columnar data format, called a columnstore.

Так что слово "индекс" там только в названии. Типа "морской свинки".

Но ладно, настаивать, что ты не прав, не стану.

Ответы64913

465 31 авг, 09:08 465 1464471

>>1464092
Distinct - это group by по всем полям с сортировкой, потому работать будет дольше, тут и за тестами не ходи.
Union, minus, intersect - та же шляпа, по факту.

Ответы6463464675

466 31 авг, 14:34 466 1464634

>>1464471
Спасибо

467 31 авг, 15:45 467 1464675

>>1464471
>Distinct - это group by по всем полям с сортировкой
Конечно же, ты сейчас приведешь выдержку из документации, которая подтверждает это безумное утверждение, да?
Конечно, нет.

DISTINCT в ADODB и Management Studio 468 31 авг, 16:37 468 1464697

Анончик-программист, помоги разобраться. Ситуация:
Скрипт на VBS отправляет запрос Q к MS SQL Server 2008R2 посредством ADODB (Provider = "SQLOLEDB"
).
Q = "SELECT DISTINCT A FROM Table"
В результате исполнения ADODB.Recordset возвращается пустой.

Этот же запрос Q, исполненный в MS SQL Server Management Studio возвращает 51 строку.

Таблица содержит кириллицу и в наименовании столбцов и в полях.

Момент: если из Q убрать DISTINCT, ADODB.Recordset возвращается непустым.

Вопрос: почему реакция ADODB на ключевое слово DISTINCT кардинально отличается от реакции самого SQL Server?

469 31 авг, 18:43 469 1464804

Тут давеча на хабре нашел статейку, там чел с пруфами вроде как пояснил, что UNION быстрее будет отрабатывать, нежели OR. Правда шоль?

Ответы64821

470 31 авг, 19:02 470 1464821

>>1464804
От случая к случаю. Если у тебя в OR стоят условия на индексированные поля и оптимизатор может раскрутить этот запрос на union с этими условиями, то да, это будет быстрее и он выберет этот вариант. То есть пишешь OR, а на самом деле получится два чтения индекса.
А если поля не индексированные, то в одном случае у тебя два чтения таблицы и проверка одного поля, а во втором одно чтение таблицы и проверка двух полей - больше затрат CPU.
Если таблица широкая, то вариант с OR предпочтительнее, чтобы ценой вычислительных затрат уменьшить количество чтений с диска, если в таблице 1-2 столбца(условно, конечно - может, в пределах 10-15 столбцов в зависимости от типов данных), то в самом деле будет быстрее прочесть дважды таблицу и сделать union.

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

471 31 авг, 22:30 471 1464913

>>1464302
Вопрос был в том, как у вк устроен поиск. Есть термин - кологочный индекс. Ты доебался до его названия, умница. По существу есть, что сказать?

Ответы64988

472 1 сен, 04:54 472 1464988

>>1464913
>По существу есть, что сказать?
Конечно: ты тупой мудак, который не понимает, о чем говорит с умным видом.
Ты даже на дваче умудряешься обосраться, знаток баз данных.
Послезавтра к первому уроку, не проспи.

473 1 сен, 22:09 473 1465452

Дата-инженеры тут сидят, м?

Ответы6549166015

474 1 сен, 23:55 474 1465491

>>1465452
Тут тоже сидят, но, вообще, отдельный тред есть про нейроночки и машобчик

Ответы65495

475 2 сен, 00:04 475 1465495

>>1465491

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

Ответы65611

476 2 сен, 10:52 476 1465611

>>1465495
Спрашивай тут, в таком случае.
Если вопрос про SQL, то скорее всего тебе помогут.

477 2 сен, 21:31 477 1466015

>>1465452
Есть начинающие, что хотел?

Ответы67244

478 4 сен, 19:16 478 1467244

>>1466015

Какие знания нужно иметь, чтобы попасть джуномидлом к вам? Во всяких спарках и хадупах дома полноценно не поразбираешься.
Есть пара лет опыта в бэкенд-разработке

Ответы6777667904

246 Кб, 1280x1004
479 5 сен, 15:04 479 1467746

Анонче, на что он ругается? Я уже голову сломал.

CASE CP_LastInstallationError
when '8007045D' then 'Delete all SCCM folders and rebuilt wmi Repository'
when '-2147023174' then 'Check out firewall or AntiVirus'
when '2147024891' then 'NONE'
END AS 'SOLUTION'

ERROR: Conversion failed when converting the value '' to data type .

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

Ответы6775767776

480 5 сен, 15:21 480 1467757

>>1467746
ты уверен, что в CP_LastInstallationError у тебя строка, а не число?

Ответы67759

481 5 сен, 15:23 481 1467759

>>1467757
У меня там и числа, и просто значения, вроде 8007045D.

Ответы67915

482 5 сен, 15:57 482 1467776

>>1467244
помимо хадупчика с питончиком есть и дургие технологии:
MS SQL + SSIS, например.
Куда приятнее и понятнее лично мне, используется для наполнения хранилищ данных.

>>1467746
>Conversion failed when converting the value '' to data type .

to data type КАКОЙ? нахуя ты обрезал последнее слово из ошибки?

Ты уверен, что проблема, вообще, в этой части запроса? Пробовал выполнить запрос с селектом только одного этого кейса?

Ответы67789

483 5 сен, 16:19 483 1467789

>>1467776
Там ошибка такая, он астериски не показал, просто.
Изначально, выглядело это так: the value to data type .
Пробовал кейсы по одиночке, а результат был тем же.

Ответы67790

484 5 сен, 16:20 484 1467790

>>1467789
Понятно, борда преобразовала с двух сторон слов в шрифт.

485 5 сен, 18:35 485 1467904

>>1467244
На чем писал бэкэнд?

Ответы67966

486 5 сен, 19:00 486 1467915

>>1467759
на хуя тогда ты их в кавычки берешь?

Ответы67936

487 5 сен, 19:26 487 1467936

>>1467915
А как надо?

488 5 сен, 20:01 488 1467966

>>1467904

На php и MySQL

Ответы67990

489 5 сен, 20:46 489 1467990

>>1467966
Тебе к нам нельзя.

Ответы68003

490 5 сен, 21:03 490 1468003

>>1467990

Я ещё на Си пишу (есть код в опенсорсе)

491 6 сен, 23:41 491 1469131

Ребята, вы тут самые нормальные, так что у вас спрошу:
Где на этой борде аналитики сидят?

Ответы6921469475

492 7 сен, 04:42 492 1469214

>>1469131
в жопе

493 7 сен, 16:43 493 1469475

>>1469131
Тут спрашивай, что хотел.
Аналитики, которые рисуют отчеты, тут.
Сам такую должность занимал пару лет назад, да и сейчас этим занимаюсь факультативно.

Ответы6948369912

494 7 сен, 17:18 494 1469483

>>1469475

Как к вам перекатиться из разработать?

Ответы69484

495 7 сен, 17:19 495 1469484

>>1469483
> из разработать

Из разрабов. Ебучий т9

Ответы70151

496 8 сен, 08:51 496 1469754

Извечный вопрос об оптимизации запросов.

Что лучше: сделать 2 SELECT в SQL и программно ужать в программе, или сделать один SELECT + JOIN?

Интересует именно нагрузка на SQL

Ответы69756

497 8 сен, 08:54 497 1469756

>>1469754
При выборке в 100 элементов и при выборке 100к

Ответы69764

498 8 сен, 09:29 498 1469764

>>1469756

Второе. Потому что СУБД может знать о твоих данных такие вещи, о которых ты со своим кодом не подозреваешь.

Ответы69770

499 8 сен, 09:51 499 1469770

>>1469764
Только эффект может проявиться при накоплении статистики, поэтому ньюфаги с синтетикой на чистой базе могут объебаться.

Ответы69771

500 8 сен, 09:51 500 1469771

>>1469770
Так что нужно самому проверять на конкретных выборках...

501 8 сен, 14:38 501 1469912

>>1469475
Как в таких аналитиков вкатиться?
Я двухмесячный курс на курсере по анализу данных прошёл, но на собеседованиях меня нахуй посылают. Вот только и пишу постановочки-таски

Ответы70149

502 8 сен, 23:15 502 1470149

>>1469912
Нужно уметь 3 штуки:
1. Понимать требования и быстро вкатываться в то, что от тебя хочет заказчик. На собеседовании могут предложить решить алгоритмическую задачку, чтобы это чекнуть. Без шуток они бывают сложными. Есть 2 яйца и 100-этажное здание, яйца бьются с какого-то определенного этажа (один и тот же этаж для любого яйца). За какое минимальное количество бросков яиц можно понять, какой это этаж?
2. Уметь в язык запросов, самое распространенное - SQL. На собесе 100% дадут решать запросы: для каждого менеджера выберете 3 самых продаваемых товара.
3. Уметь визаулизировать данные - PowerBi, Tableu, SSRS и т.п.
На собеседовании никак не чекают.

Ответы7015170800

503 8 сен, 23:16 503 1470151

>>1470149
>>1469484

504 9 сен, 19:47 504 1470580

В общем, подаюсь на работу.

В вакансии основным и жирным выделенным были SQL и Power BI

Какие бы Ты, Анон, поставил мне вопросы?

Позиция для начичнающего.

Ответы70800

505 10 сен, 00:46 505 1470800

>>1470580
Первым делом я бы дал тебе тест на знание скл с вопросами типа этого (п.1, п.2)
>>1470149

Всякие там join, apply, union

Потом бы поспрашивал про PowerBi, раз ты его жирным выделил:
Какие есть режимы работы отчетов, чем они отличаются.

Собственно, все. От рисователя отчетов много и не требуется.

Ответы71038

506 10 сен, 14:43 506 1471038

>>1470800

> Собственно, все. От рисователя отчетов много и не требуется.

А денег сколько платят такому рисователю?

Ответы7116471503

507 10 сен, 17:38 507 1471164

>>1471038
300к/сек

Ответы71403

508 10 сен, 21:27 508 1471403

>>1471164
Да ну? Чет не верится, что на 9 порядков от программерской отличается!

509 10 сен, 23:15 509 1471469

>>1460343
Кароч меня берут. Как обещал, выкладываю решение

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

WITH rank_data AS(
SELECT
id,
bs,
time,
RANK() OVER (PARTITION BY id, bs ORDER BY time) AS bs_hit, -- Проранжирую каждый хит пользователя на каждой станции
RANK() OVER (PARTITION BY id ORDER BY time) AS user_activity -- Проранжирую все хиты пользователя по всем станциям
FROM `database.test.bigdata`
ORDER BY time
),

sessions AS (
SELECT id,
bs,
time,
bs_hit,
user_activity,
user_activity - bs_hit AS session_id -- Получу уникальный идентификатор сессии пользователя на станции
FROM rank_data
ORDER BY id, time
),

/ Соберу в отдельную таблицу время начала каждой сессии на каждой станции /
session_start AS (
SELECT
DISTINCT(id),
bs,
MIN(time) OVER(PARTITION BY id, bs, session_id ORDER BY id, time) as time
FROM sessions
ORDER BY id, time),

/ Соберу в отдельную таблицу время последнего появления пользователя на станции,
последнее время сессии мне не интересно по условиям задачи /
leaving_station as (
SELECT DISTINCT(id), bs,
MAX(time) OVER(PARTITION BY id, bs ORDER BY id, time DESC) as time
FROM sessions
ORDER BY id, bs)

/ Вывод требуемой траблицы /
SELECT
session_start.id as ID, -- идентификатор пользователя
session_start.bs as BS, -- базования станция
session_start.time as time_start, -- начало сессии на станции
CASE
WHEN LEAD(session_start.id) OVER(ORDER BY session_start.id, session_start.time) = session_start.id
/ Если идентификатор пользователя на следущей строке тот же, что и на предыдущей,
то конец его сессии на одной станции равен началу сессии на следующей /
THEN LEAD(session_start.time) OVER(ORDER BY session_start.id, session_start.time)
ELSE
/ Иначе: конец сессии - это конец активности пользователя на станции /
leaving_station.time
END AS time_end
FROM session_start
LEFT JOIN leaving_station
ON session_start.id = leaving_station.id AND session_start.bs = leaving_station.bs

509 10 сен, 23:15 509 1471469

>>1460343
Кароч меня берут. Как обещал, выкладываю решение

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

WITH rank_data AS(
SELECT
id,
bs,
time,
RANK() OVER (PARTITION BY id, bs ORDER BY time) AS bs_hit, -- Проранжирую каждый хит пользователя на каждой станции
RANK() OVER (PARTITION BY id ORDER BY time) AS user_activity -- Проранжирую все хиты пользователя по всем станциям
FROM `database.test.bigdata`
ORDER BY time
),

sessions AS (
SELECT id,
bs,
time,
bs_hit,
user_activity,
user_activity - bs_hit AS session_id -- Получу уникальный идентификатор сессии пользователя на станции
FROM rank_data
ORDER BY id, time
),

/ Соберу в отдельную таблицу время начала каждой сессии на каждой станции /
session_start AS (
SELECT
DISTINCT(id),
bs,
MIN(time) OVER(PARTITION BY id, bs, session_id ORDER BY id, time) as time
FROM sessions
ORDER BY id, time),

/ Соберу в отдельную таблицу время последнего появления пользователя на станции,
последнее время сессии мне не интересно по условиям задачи /
leaving_station as (
SELECT DISTINCT(id), bs,
MAX(time) OVER(PARTITION BY id, bs ORDER BY id, time DESC) as time
FROM sessions
ORDER BY id, bs)

/ Вывод требуемой траблицы /
SELECT
session_start.id as ID, -- идентификатор пользователя
session_start.bs as BS, -- базования станция
session_start.time as time_start, -- начало сессии на станции
CASE
WHEN LEAD(session_start.id) OVER(ORDER BY session_start.id, session_start.time) = session_start.id
/ Если идентификатор пользователя на следущей строке тот же, что и на предыдущей,
то конец его сессии на одной станции равен началу сессии на следующей /
THEN LEAD(session_start.time) OVER(ORDER BY session_start.id, session_start.time)
ELSE
/ Иначе: конец сессии - это конец активности пользователя на станции /
leaving_station.time
END AS time_end
FROM session_start
LEFT JOIN leaving_station
ON session_start.id = leaving_station.id AND session_start.bs = leaving_station.bs

Показать весь текст

510 11 сен, 00:33 510 1471503

>>1471038
В ДС ~ 100к/месяц

Сам участвовал в составлении вакансии.

Тока sql надо правда хорошо знать, а не врать, что хорошо знаешь.

Ответы71632

511 11 сен, 08:52 511 1471625

>>1406455 (OP)
Анон, есть одна таблица в бд на mssql2016, в ней varchar(1000) поле, внутри которого json, по полям которого нужно искать с помощью json_field(column, '$.someField').

Но такая функция появилась только в mssql2016, а нам на один из новых боевых контуров могут дать только mssql2014.

Нет ли у тебя реализации чего-то вроде json_field на чистом tsql?

Ответы72083

512 11 сен, 09:16 512 1471632

>>1471503

Это на джуна-недомидла?

Ответы72083

513 11 сен, 13:45 513 1471755

Аноны, бизнес/системные аналитики тут водятся?

Я закончил год назад вуз по прикладной информатике в экономике и это вроде как раз оно - основной упор на автоматизацию бизнес-процессов с помощью баз данных. Был во время учебы и олимпиадный опыт на командном всеросе, когда за несколько дней по данной условием теме стартапа моделировали бизнес-процессы as-is, оптимизировали и придумывали to-be с проектом автоматизации, потом проектировали БД и реализовывали прототип и представляли "якобы инвестору".

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

Вопроса основных два (спасибо, кто прочитал до конца):
1. Как примерно строится обычно рост?
2. Насколько всё хуёво с возможностью переезда по сравнению с разработчиками? Я пока никчёмный хуй с горы, но когда-нибудь очень хочется завести трактор, может лучше сразу пытаться перейти на разработчика или, упаси Боже, дата саентиста? (кстати, очень похожая на дата саенс математика у меня в обилии была в вузе, только я многое уже забыл)

Спасибо, аноны, заранее за ответы. Нахуй тоже схожу, если пошлёте.

Ответы7183671838

514 11 сен, 16:21 514 1471836

>>1471755
>Я пока никчёмный хуй с горы, но когда-нибудь очень хочется завести трактор, может лучше сразу пытаться перейти на разработчика или, упаси Боже, дата саентиста?

Вы приняты
Свободная касса

515 11 сен, 16:22 515 1471838

>>1471755
Бизнес/системные аналитики это документная хуита, где описывать словами программы в 100 раз больше, чем строчек кода в твоей работе

16 Кб, 791x255
СТАЖЕР 516 11 сен, 22:29 516 1472048

Сап, аноны, нужна помощь с хитрым (для меня) запросом.
Нужно вывести таблицу, содержащую имя курса (course.name) и кол-во человек, прошедших соответствующий курс за условный период.
Дата окончания хранится в history.cend, если history.status = 1, то курс считается пройденным. Т.е. сосчитать такие history.history_id, что history.cend=x и history.status = 1 для каждого course.name. Собственно на этом и застрял. Помогите пожалуйста. Структура бд пикрилейтед.

Ответы72181

517 12 сен, 00:35 517 1472083

>>1471632
Вакансия называется аналитик. Не еби себе мозги джунами мидлами и т.п.

>>1471625
>Sql Server 2014
Поддерживает CLR.
Так что советую написать на C# парсер джейнсона и встроить получившуюся либу в SQL Server в виде сборки (Assembly). Получится то же самое, что умеют функции JSON_VALUE и JSON_QUERY в Sql Server 2016. Если с этим проблемы, могу помочь.

Ответы72088

518 12 сен, 01:26 518 1472088

>>1472083
> CLR
Посмотрел и отказался - усложнит и без того неидеальные сборку и деплой с версионированием. Но все равно спасибо.
Решил написанием скалярной фции, которая работает только с моим частным случаем.

Ответы72206

519 12 сен, 11:02 519 1472181

>>1472048
Я бы сделал вот так:

select c.name, COUNT(h.trainee_id)
from history h
left join course c
on h.course_id = c.course_id
where h.cstart = my_start_date and h.cend = my_end_date
and h.status = 1
group by c.name

анон, учти - я полнейший нуб. завтра иду на собес. надеюсь, что меня не обоссут с ТАКИМИ ЗНАНИЯМИ SQL

Ответы721927220172207

520 12 сен, 11:33 520 1472192

>>1472181
Анон, спасибо, ты чудо, все работает.

521 12 сен, 11:47 521 1472201

>>1472181
А не подскажешь ещё, как вывести ВЕСЬ список курсов (course_id) в первом столбце, а во втором все так же?

522 12 сен, 12:15 522 1472206

>>1472088
Ну да. Тока скалярные функции у тебя убьют многопоточность навсегда и твои запросы будут работать миллиард лет.

А CLR позволит работать в многопоточном режиме.

523 12 сен, 12:15 523 1472207

>>1472181
Все нормально, бро, желаю удачи!

524 12 сен, 19:21 524 1472405

Хай БД, нужна литература по созданию реальной БД для клиент-серверного приложения (тупа в C# накидаю формы). А то создаю БД, но все не то (MYSQL).

Ответы72467

525 12 сен, 20:59 525 1472467

>>1472405

В чем конкретно проблема?

Ответы72502

526 12 сен, 22:14 526 1472502

>>1472467
Бд для турфирмы.
Условно базы отдыха могут предоставлять жилье и развлечения и еще что нибудь (по прайс листам), цена на жилье может быть варьироваться от дня недели, каникул и т.д.
Есть музеии которые просто предоставляют что-то одно.
А некоторые турбазы предоставляют вертолет самолет параход и нужно знать что за модель и сколько вмещает эта техника людей.
Питание как и жилье может быть при парке как услуга или в отдельном заведении.

Ответы76582

527 13 сен, 10:57 527 1472698

>>1412057
Почитай «реляционные базы данных» там очень хорошо основы описанв

528 13 сен, 15:30 528 1472841

>>1412057
Можно, если в фап-тредах и рулетках не сидеть, а заниматься.

529 13 сен, 16:06 529 1472856

Какой нормальный софт есть для рисования UML и ER диаграмм. Чтоб бесплатно (не возиться с кряками), не тяжелый (гигабайты качать-ставить нет желания), не онлайн (ну или чтоб веб-версию можно было сохранить и использовать автономно) ? Генерация sql желатеьна но не обязательна.

В интернетах сотни решений, но либо онлайн, либо платное монстроузное. А пробовать все подряд - времени нет.

530 15 сен, 12:30 530 1473634

Почему все так обожают Oracle DB?
Обычная бд как бд, как postgresql или Mysql
Просто дороха.
Это ведь как бренд Apple

Ответы736737367976583

531 15 сен, 14:05 531 1473673

>>1473634
Чем она как мускул или постгре?

Ответы7378476584

532 15 сен, 14:18 532 1473679

>>1473634
А ты еще, небось, с ксияоми пишешь, да?

Ответы73785

533 15 сен, 17:23 533 1473784

>>1473673
Также запрос делаешь - так же быстро отвечает.
Главное, бд посадить на SSD

Ответы73789

534 15 сен, 17:24 534 1473785

>>1473679
Ты это говоришь так, как будто это что-то плохое!

535 15 сен, 17:29 535 1473789

>>1473784
Земля тебе пухом.

Ответы73793

536 15 сен, 17:43 536 1473793

>>1473789
ты из ТЕХ админов 2003го года, у которых ссд умирают через месяц работы, да?

537 15 сен, 18:38 537 1473820

Посоветуйте книги. Я полный ноль в бд

Ответы74378

538 16 сен, 15:29 538 1474378

>>1473820
Книги по русскому языку, помогают.

539 18 сен, 22:42 539 1476463

Никто тред перекатить не хочет?

540 19 сен, 03:58 540 1476582

>>1472502
Тебе не нужна литература по БД
Она тебе не понадобится до тех пор, пока ты не сможешь на человеческом языке хотя бы для тебя сформулировать задачу
Просто садишься и расписываешь на бумажке, что и как бывает у тебя в жизни, и что с чем связано

541 19 сен, 04:00 541 1476583

>>1473634
>Oracle как mysql
Ахахахахахаха
Все так, анон, все так.
Вообще на монгу переходи, все классные поцаны уже ее пользуют

542 19 сен, 04:03 542 1476584

>>1473673
Ну, посмотрим правде в глаза, у оракла много общего с постгресом.
Ну, кроме цены.

Ответы76600

543 19 сен, 07:51 543 1476600

>>1476584
Ой, все

544 20 сен, 11:45 544 1477475

Может ли быть 2 FK на одну и ту же таблицу? Нопример:

Table Battle
battle_id: bigint
player1_id: bigint
player2_id: bigint
map_id: bigint
begin_time: timestump
end_time: timestump
result: enum("player1_won", "player2_won", "draw")

Вот если мне надо чтобы 2 игрока были оба из таблицы(но разные записи) "player". Так можно?

Ответы7770177722

545 20 сен, 17:05 545 1477701

>>1477475
Это MySQL ?

Можно:
create table Battle (
...
b_player1_id INT NOT NULL,
b_player2_id INT NOT NULL,
...
foreign key(b_player1_id, b_player2_id)
references player(player1_id, player2_id)
)

Вполне возможно, что я обосрался. Тут уже извини

Ответы77778

546 20 сен, 17:33 546 1477722

>>1477475
Почему нельзя? Можно, конечно.
Можно даже чтобы таблица имела FK на саму себя.

547 20 сен, 19:48 547 1477778

>>1477701
Не, это постгрес. Но там тоже походу можно.

548 21 сен, 05:32 548 1478187

Хотел спросить тут. Вычитывал понятие "Хорошое знание маскуэл/постгресс". Вот вопросы: в чем сложность баз данных? Что там изучается такого на отдельную категорию? Что отличает хорошего базданщика от плохого?
Ну хранится там инфа по столбцам и что дальше?

Ответы78221

549 21 сен, 10:26 549 1478221

>>1478187
Ничего, в принципе, смело можешь идти на собеседование.
Главное, что ты знаешь, что в базе хранится инфа по столбцам, в 99% этого хватает, чтобы взяли.

550 21 сен, 12:00 550 1478244

Я не понимаю, почему обычный индекс для текстовых полей в монге работает медленно, а текстовый индекс для полнотекстового поиска работает быстро.

Ответы78315

551 21 сен, 14:37 551 1478315

>>1478244

Запрос покажи, зая.

Ответы78317

552 21 сен, 14:41 552 1478317

>>1478315
Вообще запрос выглядит как $or по всем полям с каким-то текстовым значением. Про медленные индексы в интернете пишут.

553 22 сен, 03:53 553 1478790

Нужно в монгоДБ отсортировать инфу по минутам.
Как это сделать?

554 22 сен, 20:50 554 1479389

По hbase сюда писать?

111 Кб, 650x920
555 23 сен, 16:28 555 1479912

Господа, такой сертификат ведь говно, да..?
http://sql-ex.ru/certification/certification.php

Ответы80066

556 23 сен, 18:27 556 1480066

>>1479912
За эту цену - говно.
Я в резюме на хх просто ссылку на профиль вставил 7 лет назад, кому надо было - смотрели сами.

557 24 сен, 21:34 557 1481026

Привет!
Есть учебная задача: реализовать базу данных на ~20 таблиц + клиент-серверное приложение для доступа к ней.
Язык важен, концепция (реляционная бд или NOsql) тоже.

Пока что есть идея сделать реляционную базу данных и приложение на питоне в силу его простоты (работал с питоном немного, но бд на нем не трогал). Насколько я знаю, в питоне есть встроенная поддержка SQLite. Стоит ли пользоваться им или лучше накатить какую-нибудь SQLAlchemy и делать через нее?

У кого есть опыт такой разработки? Какие подводные? Какие можете дать советы?
Буду рад любой критике/комментариям, спасибо.

558 25 сен, 20:42 558 1481709

Сап, датабазычи.
Есть один проект в котором надо хранить реальный граф (пока маленький, около 10-15к строк). В процессе появления первой версии, родилось решение и использованием Postgres, и для уже сейчас DAO слой вышел достаточно нагруженным - граф вытягивается по 4 таблицам (таблица с метаданными по графу, таблица с гранями, таблица с узлами, таблица с метаданными по узлам), вместе с кучкой промежуточных преобразований в коде. В последствии будет ещё больше, например n2n связь между узлами и графами или вложенные графы

Возникла идея перевести все на графовую БД (пока смотрю на neo4j и dgraph). Есть здесь у кого-нибудь опыт использования такой вуду-техники? Был бы рад увидеть сравнения или отзывы

Ответы8171381781

559 25 сен, 20:49 559 1481713

>>1481709
Fix. В начале речь идёт не о размере графа, а о размере проекта. Собственно, графы большого размера не ожидаются, так что в произвольность постгри я скорее всего не упрусь. Другое дело - сложность поддержки кода

560 25 сен, 22:38 560 1481781

>>1481709
использовал нео4ж в связке с реляционной базой
хранил деревья: информацию о графе в нео, всю информацию об объектах - в реляционной
как только выяснил, что деревья у меня не могут быть глубже 5 уровней, выкинул на хер нео
в паре мест пятиэтажные селекты (был какой-то мускл, поэтому без иерархических запросов)
зато все аккуратно с транзакциями, не надо вытирать сопли за нео4ж, который время от времени что-то терял

561 28 сен, 23:43 561 1484166

Может кто нибудь за 2 килорубля помочь с тестеком по SQL?

Ответы84181

562 28 сен, 23:56 562 1484181

>>1484166
Тест для более - менее шарящих людей будет не сложным.
Вряд ли потратите на него более двух часов (а скорее всего лишь час)
Писать сюда soulesswRTformANUSgma0T&ilPUNCTUMcoq=%m

563 29 сен, 18:55 563 1484720

>>1461571
Двачую этого господина.

10 Кб, 504x87
564 3 окт, 10:09 564 1487711

USE testdata;
DECLARE @i INT;
SET @i = 0;
WHILE @i < 10 DO
SET @i= @i + 1;
END;
SELECT @i;

Почему ругается на вторую строку? MariaDB

Ответы8771988312

565 3 окт, 10:39 565 1487719

>>1487711
Насколько помню в этой уебищной субд инту тоже надо длину в скобках указывать.

Ответы87722

566 3 окт, 10:51 566 1487722

>>1487719
INT(100) что-ли? Да там даже просто DECLARE @i; ругается без инта

567 3 окт, 23:05 567 1488312

>>1487711
https://mariadb.com/kb/en/library/declare-variable/
Первая ссылка в гугле

А у тебя синтаксис скл сервера, если что

Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 7 октября 2019 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion