Этого треда уже нет.
Это копия, сохраненная 5 августа 2022 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Универсальный баз данных тред v1.4 /sql/ 2227895 В конец треда | Веб
Прошлый >>2128337 (OP)

Туториалы на русском для тех, кто не умеет гуглить, не может в английский и вообще готов жрать что угодно:
SQL:
- MySQL, Postgres, SQL Server: https://metanit.com/sql/
- Синтаксис SQL кратко: https://learnxinyminutes.com/docs/ru-ru/sql-ru/
- Плейлисты по разным СУБД: https://www.youtube.com/c/SQLDeveloperBI/playlists
- Тоже плейлист, сортировка хуёвая: https://www.youtube.com/watch?v=EHvzvwAv7RU&list=PLY7PmJJFH5nT-lbFKxfbp3rw5BBuq5Azo[РАСКРЫТЬ][РАСКРЫТЬ][РАСКРЫТЬ]
- https://www.youtube.com/c/SQLDeveloperBI
NoSQL:
- MongoDB: https://metanit.com/nosql/mongodb/
- Cassandra: https://proselyte.net/tutorials/cassandra/

На инглише:
SQL:
- https://www.w3schools.com/sql/

Литература:
- Прибыл Фейерштейн. Oracle PL/SQL. Для профессионалов - если уметь исказть, можно найти бесплатно без СМС и на русском.
- Алан Бьюли. Изучаем SQL. - про MySQL, тоже легко находится. Довольно старая, но базовые вещи не сильно меняются.
- К. Дж. Дейт. Введение в системы баз данных - талмуд на овер 1000 страниц.
- Томас Кайт. Oracle для профессионалов - тоже талмуд.

Задачки для оттачивания sql-скилов:
- https://www.sql-ex.ru
- http://sql-tutorial.ru/
- https://www.codewars.com/?language=sql

ETL, OLAP, DWH и другие умные слова:
- https://www.youtube.com/watch?v=WPZuzDJXs-Q&list=PLhhjwMYxzolhP29LSPPwORVQxJX5OjYix[РАСКРЫТЬ][РАСКРЫТЬ][РАСКРЫТЬ]
- OLAP DAX Power BI: https://www.youtube.com/playlist?list=PLhhjwMYxzolhXuySjLR2_n-xb6VvWnjju

Прочее:
- https://dbdb.io/
- https://db.cs.cmu.edu/
- https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA/playlists
- Сравнение диалектов SQL: http://troels.arvin.dk/db/rdbms/
- Как БД работают изнутри: https://habr.com/ru/company/mailru/blog/266811/

FAQ:
Q: Нужно ли знать английский?
A: Да.

Q: Что лучше, SQL или NoSQL?
A: Как обычно, зависит от задач. Нужна любой ценой скорость - бери NoSQL, нужна согласованность данных - SQL. У всего свои плюсы и минусы, и в обозримом будущем ни один подход не заменит другой полностью.

Q: Вопросы с лабами и задачками
A: Смело спрашивай, с вероятностью больше 50% ответят, но могут и обоссать.

Здесь мы:
- Негодуем, почему шапка - говно, и предлагаем коллективному ОПу идеи, как её улучшить.
- Разбираемся, почему PostgreSQL - не Oracle
- Пытаемся понять, зачем нужен Тырпрайс, если есть бесплатный опенсурс
- Обсуждаем, какие новые тенденции хранения данных появляются в современном цифровом обеществе
- Решаем всем тредом лабы для заплутавших студентов и задачки с sql-ex для тех, у кого завтра ПЕРВОЕ собеседование
- Анализируем, как работает поиск вконтакте
- И просто хорошо проводим время, обсирая чужой код, не раскрывая, как писать правильно
2 2227951
Когда уже нормальная пикча треда с Sql Server будет? Заебали хуйню постить
1.jpg63 Кб, 600x449
3 2227978
>>227951
чел...
# OP 4 2227979
>>227951
Не будет.
photo2021-10-1320-33-35.jpg14 Кб, 610x396
5 2227981
>>227895 (OP)
Я тебе картинку принес.
6 2227985
>>2227635 →
Спасибо конечно, но эту книгу я уже приметил . Расскажи лучше как сам вкатывался, что проблемы вызывало, как начинал.
image.png120 Кб, 676x384
7 2227986
>>227981
Пофиксил
8 2227992
>>227978
хуево у тебя с пеинтом, попробуй еще раз
9 2228465
Аноны, шо на пиндоском можно почитать, а то

>SQL:


- https://www.w3schools.com/sql/
хуже гайдов с метанита, но чет я теряюсь в метаните, там просто все прочесть?
10 2228507
>>228465
На O'Relly можно крабить бесплатный триал, выбирай на свой вкус.
11 2228764
У нас один программер начитался книжек по sql и решил, что нам точно нужно секционирование таблиц, чтобы ускориться.
Как мне его мягко убедить, что у нас не те объемы и тормозит все из-за говнокода и кривой модели данных?
Таблицы еще маленькие, по логике не имеет смысла, и врядли в ближайшие годы этот смысл понадобится но он потестил и с партицированием быстрее((
Или не париться и пусть делает, раз так хочет?
12 2228820
>>228764
Сколько строк в таблице? Индексы есть? Сколько за раз выбираете?
13 2228934
>>228764
1. Бизнес готов давать деньги на "ковыряние в табличках"? Обычно средства на это выделяются, когда все нахуй падает или приходит запрос от клиента, что у вас все хуево. Тем более партиционирование повлечет еще немалые изменение в коде апликухи, что тоже бьет по карману бизнеса;
2. Сравни время выполнения через СУБД и через апликуху. Если все так, как ты написал, то есть смысл тогда ковыряться в коде.
14 2228942
15 2229293
>>228764
Умный человек может любые цифры представить как ему выгодно (и обмануть самого себя).
Придется тебе быть умнее.
Почитай книги.

Нет, оперировать и переставлять местами термины из гугла не достаточно. Выдвигай гипотезы. Измеряй. Делай выводы.

Совсем измельчал программист нынче
изображение.png143 Кб, 254x199
16 2229564
Забавно наблюдать за подходов анонов к решению задачи

>>228820
джун

>>228934
синьёр-помидор

>>229293
далбёб которые вобще не имеет представления о разработке и только пиздеть горазд
17 2229933
>>229564
Ой, бери на себя поменьше.

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

Вот в данном обсуждении взвешенный научный подход плохо представлен, поэтому я это и написал.
И да, в тот момент когда программистишки совсем запутываются, они приходят ко мне.
18 2230318
>>228764
Какой хороший программер. Если БД хоть немного склонна к росту, то заложить секционирование в модель данных - это ОЧЕНЬ хорошая практика.
Ну и по-человечески, людей надо подбадривать. Если хочет человек что-то хорошее сделать и у него по остальным пунктам не полный безотлагательный пиздец, то пусть делает.
19 2230524
>>230318
СПРАВОЧНИК
@
50 ЗАПИСЕЙ
@
СЕКЦИОНИРУЕШЬ
20 2230865
Есть таблица "события", в ней есть, помимо прочих, столбцы "район", "улица", "номер дома". Извлечь эти столбцы в таблицу "адреса событий", ссылающуюся на таблицу "события" - бест практис?
21 2230886
>>230865

>ссылающуюся на таблицу "события"


По один-к-одному.
фикс
22 2230901
>>230865
в чем дилемма ? не понято.
Что в твоей задаче нужно делать - то и делай.
Нет никакой "бест практис". Мозг включать - вот бест практис.
23 2230907
>>230901
Как там смена на заводе?
24 2230961
>>230865
Ну улицу и район точно нужно извлекать, номер дома хз, т.к как справочная информация не особо имеет смысл, но с другой стороны оставлять в фактах так как есть, тоже не дело. Извлекайте, шура.
25 2231109
>>230901
да знаешь, как-то получше чем зумерков без иннициативы.

Между прочим, я Дейта цитирую.
26 2231157
>>230886
Ну и какую проблему ты решишь таким извлечением? Смысл был бы, если бы адрес был не у всех событий, а так при любых действиям с событиями придётся делать лишний джойн, писать один лишний инсерт/аплейт, ебаться с объединением данных на уровне приложения. Можно хоть для каждого столбца завести по таблице, чтобы они все форенкеились с таблицей событий, где единственный столбец - ID, но что это тебе даст?
27 2231261
А как быстро пробегать по базе типа
Номер транзакции Отправитель Получатель Сумма
1 Кабан Сычев Сотыга
2 Сычев Пориджная 0.5сотыги
3 Кабан Сычев 0.5сотыги
4 Сычев Пориджная 0.3сотыги
5 Пориджная Кабан 0.8сотыг

чтобы узнать сколько денег у Кабана, Сычева и Пориджной?
28 2231303
>>231261
читай мануал по group by
29 2231331
>>231261
transactions (debit_acc, credt_acc, amount)

select debit.debit_acc, credit.credit_amount - debit_amount balance
from (
select debit_acc, sum(amount) debit_amount
from trans debit
group by debit_acc
) debit
join (
select credit_acc, sum(amount) credit_amount
from trans credit
group by credit_acc
) credit on debit.debit_acc = credit.credit_acc;
30 2231333
>>231261
>>231331
Разумеется, это при условии, что все счета у тебя активные, для пассивных ставь "минус" перед суммами в зависимости от синтетики.
31 2231378
>>227895 (OP)

Вот тебе свежие тиктоки для шапки
32 2231383
>>231157
Даст быструю аналитику по район/улица.

>Можно хоть для каждого столбца завести по таблице, чтобы они все форенкеились с таблицей событий


Ну так обычно в реляционных бд и делают, все кроме самих фактов выносят в отдельный справочник. Адрес это явно справочная информация.
33 2232449
В Postgresql есть таблица, в которой у каждой записи есть колонка created_ts - как могли догадаться это timestamp создания записи. На данный момент я создаю этот таймстемп внутри моего приложения и передаю с sql запросом INSTERT, есть ли способо добавлять таймстепм средствами постгрес?

И второй момент: у меня есть задача которая раз в час проходится по этой таблице и удаляет из нее все записи старше 90 минут (чтоб таблица не захламлялась старыми записями). Для этого сейчас на поле created_ts навешен обычный betree индекс, можно ли заюзать что-то более подходящее?
34 2232473
>>232449

>insert into tab values (1,now());


так не можешь чтоль?

>можно ли заюзать что-то более подходящее?



Заюзывай, разрешаю.
Узнать что же на самом деле подходит в твоем случае, тебе придется самому.
Но ты можешь по своему зумерскому методу решения проблем копировать всякую хуйню с Двача и Stackoverflow.
Давай. Мы ждем.
35 2232503
>>232449
1) Проставь default now() для строки нужной.
2) Я бы такие говна вобще в кеше хранил, в каком-нибудь redis
123.jpg114 Кб, 1440x767
36 2232883
Что из этого качать?
37 2233176
>>232503
Суть вот в чем: есть таблица где хранятся: user_id, idem_key, created_ts
Это (очевидно) айдишник юзера, ключ идемпотентности и таймстемп. Когда юзер проводит транзакцию на перевод внутренней валюты другому юзеру, мы сохраняем в таблице строчку с соответствующими данными, на пару (user_id, idem_key) установлен индекс уникальности, так что если сохранится вторая такая пара, БД выдаст ошибку которую обработает приложение - это сделано для избежания дублей запросов с клиента. Эту идею я подсмотрел спиздил из статейки https://habr.com/ru/company/yandex/blog/442762/
По факту туда можно прикрутить Редис, но как его использовать в таком случае? Как очищать устаревшие данные в кеше?
38 2233214
>>233176
Редис умеет в time to life
39 2233260
>>232883
постгрес качай
40 2236274
Сап, кто может пояснить за TRANSACTION ISOLATION LEVEL? Зачем нужны, где используются? И что по Rollback / commit? Нахуй это говно нужно? Никто же IMPLICIT_TRANSACTIONS ON не будет включать, чтобы играть с ролбэками. Или я чего-то не знаю?
images.jpg11 Кб, 250x201
41 2236314
>>236274
Когда ты пердолишся таблицой как правило происходит её блокировка, чтоб пока ты читаешь/пишешь туда данных не напиахли
для этого и нужен TRANSACTION ISOLATION LEVEL .

Их 4(или 6, в зависимости от реализпации):
1) READ UNCOMMITTED - читаем как есть ничё не лочим. Если кто-то вставляет/удаляет, можем прочитать хуйпойми что.
2) READ COMMITTED - лочим только строки которые читаем, чтоб их не изменили.
3) REPETABLE READ - это когда в рамках одной транзакции нам надо сделать несколько чтений, если уровень изоляции ниже этого условно каждый селект будет накладывать свою блокировку. При этом режиме блокировка действует в рамках всей транзакции.
4) SERIALIZABLE - накладывает блокировку на строки ПЛЮС запрещает делать инсерты в таблицу. Т.е. в п3 мы залочили строки, но если нам напихали инсертов, появились новый строки.
42 2236446
>>236274
Разумеется, ручной откат транзакций людям нужен. На каждую ситуацию есть свой потребитель.

Кроме того, serializable - самый тупейший, но рабочий способ избежать некоторых логических ошибок в приложениях.
Но ты так не делай. Изучай.
43 2236922
>>236314
>>236446
спасибо, но это я и так знал, я не понимаю реального применения. У меня есть несколько потребителей Sql базы (см. приложения), каждый из них делает по 200-300 CRUD реквестов в секунду, на каком они уровне это делают, READ COMMITTED?
И хотел бы узнать хоть один реальный пример отказа транзакций. Единственное, что приходит на ум - это снятие дедлока/транзации с каскадным откатом (типо удаление зависимых данных).
44 2237155
>>236922

> READ COMMITTED


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

>И хотел бы узнать хоть один реальный пример отказа транзакций


1) Запись большого блока данных, чем делать 100 инсертов, лучше сделать одну транзакцию и в рамках неё исполнить все инстерты, и если у нас один инсерт фейлится, отменяем всю транзакцию.
2) Надо записать связанные данные, с одного счета списать на другой положить.
45 2237321
>>236922
ты блядь совсем тупой? прочитал 5 раз и ничего не понял?
Представь ситуацию, когда ты два раза нажал в интернет-магазине кнопку Оплатить, а магазин писал такой тупень как ты и он исправно отправил два запроса в банк, но на карте у тебя только N денег, но товары стоят 2*N.
46 2237322
>>237321
Ключ идемпотентности
47 2237401
В базе есть колонка с UNIQUE - как делать так чтобы в случае если данные вставляются повторно, то БД просто шла бы дальше, не выбрасывая никаких ошибок?
48 2237408
>>237401
on duplicate key update col=col
49 2237492
У меня есть множество записей (Post) у каждого из которых есть набор тегов, как это все хранить в базе для быстрого доступа по тегам? РСУБД и искать через LIKE в строке? Mongo и делать то же самое? Или тут полнотекстный поиск с Эластиком нужен?
50 2237512
>>237492
Дополнительная табличка post_id - tag_id.
51 2237828
>>237321
это тебя в шараге такому учат, что 2 клика по кнопке создают 2 транзации? Пиздец тут советчики
2d7464b8d950e5af0f2bf54bf62c1f45.jpg13 Кб, 300x256
52 2237960
>>237828
Раз такой умный, почему на мейлачах спрашиваешь?
53 2238667
>>237960
потому, что тут есть адекватный анон, а не долбоеб, который не знает про дебаунсер
DsMrnDLWoAAYA2V.png123 Кб, 309x407
54 2242903
Анончики есть, ли в mssql bulk upsert?
Даже не так, как можно сделать bulk upsert средствами именно sql?

Я имею ввиду что в некоторых бд(например в марии), есть встроенные механизмы чтоб это сделать, а в некоторых нет, если универсальный способ?
55 2243952
Сап, появилась псевдонеобходимость в postgres хранить набор ключ-значений с динамической структурой этих значений, читал про eav, хуйня хуйнёй. Благо в pg есть jsonb решил его и использовать.

Вопрос в том, как происходит обновление данных в этом jsonb. Если нужно обновить 1 значение, как поведёт себя субд - будет переписывать весь столбец или есть какой то механизм, позволяющий апдейтить только часть? Судя по описанию jsonb_set() нужно обновлять весь столбец, но всё же я надеюсь на второй вариант.
56 2244204
>>243952
с чего это ты решил, что функции связанные с json каким-то образом поменяют внутреннее устройство postgress ?

Просто поле. Просто меняется все целиком. Но есть кое-какие дополнительные функции.

Я, кстати, документацию даже не открывал. И так все понятно. Революция так просто не делается.
57 2245023
Аноны, пожалуйста, помогите! Ситуация проста я 0 айкью+экономист, препод положил на всю группу хуй. При любом вопросе отвечает загадкой, а запросы делать надо, а то будет незачет. Так что если пишу не правильно какие-то вещи, то прошу простить
SQL Server, запросы звучат как:
1) Вывести средний срок доставки заказа для каждого месяца 2020 года. Заказ относим к месяцу по дате отправки.
Соответственно названия строк date_order_dispatch(дата отправки заказа), date_order_accepted(дата принятия заказа), Таблица с заказами orders
2) Для каждого склада вывести количество ожидающих выдачи заказов
Тут даже без понятия, что указывать, потому что есть просто таблица Склад, где только Название и Адрес
58 2245034
>>245023
У тебя есть картинка со схемой базы?
изображение2021-12-22134551.png37 Кб, 1575x905
59 2245053
>>245034
Да понимаю, полная хуйня, но надеюсь связи понятны
60 2245068
>>245053
Твоя картинка нихуя не соответствует тому что ты написал тут >>245023 у тебя есть возможность делать запросы к базе?
61 2245075
>>245068
Через management studio да, могу
А чем не соответствует? Просто логические на русском, а физические имена на английском
62 2245077
>>245068
Понял, путаница с таблицей Orders. Дата отправки и приемки вообще в других таблицах
63 2245083
>>245075
select trunc(дата отправления заказа,'mm'),avg(дата доставки на склад назначения-дата отправления заказа) from история перемещений where дата отправления заказа>to_date('01.01.2020','dd.mm.yyyy') and дата отправления заказа<to_date('01.01.2020','dd.mm.yyyy') group by trunc(дата отправления заказа,'mm')

попробуй вот эту хуйню переписать с нормальными названиями таблиц и полей.
64 2245087
>>245083
>>245077
вот второе какой же хуйнёй я занят в отпуске

select
склад.номер склада,count(*)
from склад join история перемещений on история перемещений.номер склада назначения=склад.номер склада left join выдача on склад.код адреса=выдача.код адреса выдачи and история перемещений.ID заказа=выдача.ID заказа where дата доставки на склад назначения<=sysdate and nvl(дата выдачи,sysdate+1)>sysdate group by склад.номер склада
65 2245096
>>245083

>select trunc(дата отправления заказа,'mm'),avg(дата доставки на склад назначения-дата отправления заказа) from история перемещений where дата отправления заказа>to_date('01.01.2020','dd.mm.yyyy') and дата отправления заказа<to_date('01.01.2020','dd.mm.yyyy') group by trunc(дата отправления заказа,'mm')


Не распознал trunc:(
66 2245099
>>245087

>select


>склад.номер склада,count(*)


>from склад join история перемещений on история перемещений.номер склада назначения=склад.номер склада left join выдача on склад.код адреса=выдача.код адреса выдачи and история перемещений.ID заказа=выдача.ID заказа where дата доставки на склад назначения<=sysdate and nvl(дата выдачи,sysdate+1)>sysdate group by склад.номер склада


nvl не распознает теперь
67 2245100
>>245083
>>245087
Ну ты мастер в такую пикчу врубиться, за что там код адреса отвечает в разных таблицах, моё увожение. Чувствуются годы энтерпраза и прокачанный libastral.so.

>>245096
Попробуй заменить trunc на month(дата)
68 2245103
>>245083
>>245087
Так-то, анонче, спасибо большое, насчет ошибок буду до препода доебываться, вдруг поможет
А тебе желаю счастья, здоровья и хорошо отдохнуть в отпуске!
69 2245104
>>245099
Попробуй заменить nvl на ifnull с такими же аргументами. Если и ifnull не найдёт, замени на isnull.
70 2245105
>>245100
month помогло, только начали другие ошибки вылезать
В любом случае спасибо за частицу помощи
71 2245107
>>245096
>>245099

>Не распознал trunc


>nvl не распознает теперь


Ну я в основном с ораклом работал поэтому и написал на оракле, гугли аналоги функций в твоей СУБД.
>>245100

> годы энтерпраза и прокачанный libastral.so.


Полтора годика в банке всего.
>>245104
Скорее всего не проканает, функции выглядят как будто вернут буль а не значение, разые что через кейс переписывать.
>>245103

>насчет ошибок буду до препода доебываться


Препод выкупит что запрос под другую среду написан и написал его не ты, шанс быть обоссанным огромен.
72 2245108
>>245107
Погуглю, чтобы не обоссали, спасибо
73 2245109
>>227895 (OP)
Всю голову уже сломал, потому как с SQL особо дела не имел никогда.
Суть: есть таблица с полем Time (временная метка). От условного клиента приходит запрос на выборку записей с Time >= From и Time <= To. Первую и последнюю запись в этой выборке будем называть граничными, если Time == From или Time == To, иначе - внутренними (Time > From, Time < To). Также клиент передает флаг IncludeBounds, действующий следующим образом: если IncludeBounds == True и крайняя запись (первая или последняя) - внутренняя, то необходимо включить в выборку запись с временной меткой прямо перед ней/прямо после нее (для первой и последней записи соответственно). Диалект - PostgreSQL. Очень хочется выполнить всё это средствами запроса в SQL и не прекладывать фильтрацию крайних записей на клиента.
С меня сотни нефти, если подскажете, в какую сторону смотреть. Видел оконные функции в мануале по pgsql типа lag и lead, но никак не могу ввернуть их в свою развесистую логику.
БЛЭЭЭЭЭЭТ 74 2245341
Делал кто нибудь винтаж-анализ с помощью SQL?
75 2245464
Нужна книга или плейлист индуса PostgreSQL для профессионалов, плиз посоветуйте что-нибудь без духоты типа "что такое update и select".
76 2245569
>>245109
Сделать view в котором уже будет lag и lead, и выбирать из него.
77 2246337
Можно ли в postgre использовать WITH в хранимой процедуре?
78 2246516
>>246337
конечно
79 2246531
Какие подводные у sqlite?
80 2246549
81 2246566
>>246531
1. С параллелизмом всё плохо, транзакции выполняются последовательно.
2. Нет хранимых процедур

Но если использовать sqlite по назначению, никаких подводных.
82 2246834
>>246566
Что такое хранимые процедуры?
83 2246860
>>246834
Это процедуры, и они хранимы.
84 2246866
>>246834
На них можно программировать прямо в БД, это как функции/методы в обычных языках. Впрочем, некоторыми это считается плохим тоном.
85 2246897
>>246866
То есть написать десктоп софтину с sqlite для своего офиса из 10 человек с небольшим количеством запросов это норм и проблем не будет?
86 2246944
>>246897
Смотря что за софтина, но скорее всего норм.
87 2247028
88 2247057
>>247028
Можно WITH RECURSIVE использовать
https://postgrespro.ru/docs/postgresql/14/queries-with
89 2247063
>>247028
Вроде такие ебалы на sql не пишут, а обычно делают sql-запрос с вытягиванием данных в нужном формате для BI-тулзы типа Power BI Desktop. Есть ещё любители подушить своего питона с Pandas.
Если нужен sql, то советую писать не сразу весь огромный запрос, а итеративно через кучу промежуточных представлений на with ... as... Например, сначала рассуй свою основную сущность, от которой всё производится (инфа о кредитах одного человека, видимо) по месяцам, потом на основе этого представления делай ещё представление с уже конкретно интересующей сущностью (взятый в этом месяце краткосрочный кредит по месяцам), потом ещё представление с нужными параметрами для рассчёта интересующего параметра (например, количество краткосрочных кредитов в месяц, если нужно посчитать их процент), потом на основе всего уже финалочку: месяц есть, размер когорты есть, количество краткосрочных кредитов за месяц есть, осталось посчитать процент. Ну ты понел идею, и постгресовская рекурсия не понадобится.
90 2247066
>>247057
У меня чуть кишка не выпала писать простенькую рекурсию с пересечением периодов просрочки по одному контрагенту на разных сделках, тут логика сложнее, вообще ёбнуться можно.
91 2247078
>>247063
Да, я так и думаю по кусочкам данные вытащить. После загнать их в Excel или Power BI.
Power BI хорош, но у меня железо не может его переварить если там много данных.
92 2247909
Как записать в БД набор чисел типа 1 3 10 100 и тд
На каждую создавать колонку?
93 2247974
>>247909
В общем случае для каждого значения создаётся по новой записи в таблице:
id | value
1 | 1
2 | 3
3 | 10
4 | 100
Ещё некоторые СУБД поддерживают коллекции в колонках (массивы, json и т.д.), но там есть свои проблемы.
94 2248128
>>246897
Живой пример файрфокс, с ублюдским зависанием при обращении к истории или закладкам
95 2248889
Реквестирую гид для даунов, в котором будет описано, как на винде сделать синхронизацию между двумя базами данных.
Я так понял, что это называется репликацией, но не нашел нормального пошагового гайда.
96 2248999
Хочу научиться создавать и приложения всякие, погромировать (только пайтон). Из того что умею, писать какие-то сложные SQL запросы с достаточно сложной логикой, с большим количеством данных, и с хуевым качеством модели данных, знаю о моделировании хранилищ данных для крупных предприятий, и разбираюсь немного в оптимизации, короче SQL аналитик. Какие подводные?
97 2249046
Кто-нибудь может пояснить за динамический sql?
98 2249155
>>248889
Для тебя - никак. Просто купи самый дорогой и большой сервер который можешь себе позволить. Не надо масштабировать СУБД (по крайней мере тебе)
99 2249159
>>248999
Узнаешь что такое Настоящее АЙТИ, с легаси-фреймворками и выгоришь. Ты легко отделался, т-щ sql-аналитик.

Кстати, ты apache superset уже поставил? Зачем тебе вообще приложения писать, если есть apache superset ?
100 2249161
>>249046
это просто формирование текста запроса на ходу, вплоть до формирование текста sql средствами sql.

Нихуя интересного. Кто-то сдался без боя не смогши написать обычный SQL иди написать приложение.
101 2249213
Как понять подзапросы?
102 2249281
>>249213
А что не понятно?
103 2249571
>>249155

>Для тебя - никак.


Что ж ты так категорично, лол.
Мне для запуска двух WoW серверов надо было. Разобрался, кстати.
104 2249625
>>248999
Да в частности никаких подводных, за 2–3 месяца наглаживания питона сможешь свободно свои данные вертеть в каком-нибудь пандасе. Питон вообще нужен только для датасатанизма и говноскриптов. А вот для погромирования в целом тебе такая прорва знаний понадобится, что охуеть не встать, лучше сначала выбери один стул из трёх: десктоп, мобилки или веб. Ну и долби эту область до посинения, там везде фрактал технологий, на всю жизнь хватит. Если ты ради денег всё это затеял, выбирай жабаскрипт и веб, бонусом потом получишь говнокод на мобилках. И как языки javascript и python это два брата-акробата. Питон, конечно, лучше задизайнен, но склонность к говнокоду они развивают одинаковую. Если же погромировать хочется из любви к искусству, то я бы брал десктоп и дотнет, туда Хайльсберг натаскал столько фич из разных языков и парадигм, что потом сможешь перекатиться куда душе угодно и всё тебе будет казаться знакомым.
105 2249724
>>249281
все
106 2250278
С фронта приходит список строк по типу
["maryland", "prowler", "twitterpluck"]

Мы выбираем из таблицы entity только те строки где name равняет одному из тех что оказались в списке. Как это правильно сделать? Ебануть switch-case? Какой-то индекс к колонке стоит добавлять?
107 2250309
>>250278
select * from entity where name in ('maryland', 'prowler', 'twitterpluck')
Для генерации списков такого вида и передачи их в запрос в твоём языке наверняка есть что-то готовое.
Индекс по name, конечно, нужен.
108 2251662
доброго, аноны. решаю тут задачку одну и немного запутался.

цель - построить модель БД, отобразить связи между сущностям.
задание такое - каждому студенту выдают базовый набор при поступлении на первый курс:
один учебник по истории;
один учебник по экономике;
один учебник по высшей алгбере;
один учебник по матанализу.

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

Вопрос такой, какие связи тут использовать? изначально построил многие ко многим, но засомневался. сомневаюсь, потому что по сути один студент и одна книга по каждому предмету. не должно быть тут один ко одному?
есть у кого какие мысли?
109 2251674
>>251662
students (id, name)
books (id, name, year)
book_copies (id, lib_number, book_id -> books.id, student_id -> students.id)
110 2251743
>>251674
спасибо! разобрался теперь. но один вопрос, для чего lib_number? не вдупляю
111 2251752
>>251743
У тебя ведь есть в задаче индивидуальный номер учебника в библиотеке, это он и есть. Его можно было бы использовать как первичный ключ вместо book_copies.id, но если он не считается простым инкрементом счётчика и должен быть в определённом формате наподобие "2017/А/453-нд", лучше его хранить отдельно.
112 2251828
>>249159

>Кстати, ты apache superset уже поставил? Зачем тебе вообще приложения писать, если есть apache superset ?


А в чем связь?

>>249625

>датасатанизма и говноскриптов


Учитывая что я собственно и не умею писать говноскрипты и не работаю в пандасе, то думаю начать с этого, чтобы освоиться немного.
Веб звучит интереснее
113 2251830
>>251752

>"2017/А/453-нд"


А в чем смысол таких названий? чтобы получать максимум информации просто взглянув на название, и знать к какому модулю программы это относится, или что?
мимо
.png869 Кб, 800x507
114 2251833
>>251830
Подобные номера появились задолго до программирования, в каких-нибудь бумажных картотеках и документах часто такая нумерация, потому что нет удобной централизованной базы данных, которая бы нумеровала по счётчику, и приходится придумывать, как обеспечить уникальность номеров так, чтобы было более-менее удобно упорядочивать и искать. Такое юзается везде - учётные карточки в библиотеке, серия/номер паспорта, банковский счёт, номер телефона и т.д.
115 2251839
>>251833
То есть даже в каких-то современных системах, это сделано для удобной системы карточек (если вдруг понадобится)?
116 2251845
>>251839
По-разному делают, не только для удобства. Часто там, где внедряют ПО, уже есть классический учёт на бумажках, и приходится для сохранения "обратной совместимости" добавлять его поддержку. Где бизнес-процесс организуется с нуля, иногда могут обойтись без этого.
117 2251940
>>251839
>>251845
В современых системах на TB+ данных такое внедряется специально, напирмер partitions в Hadoop (ага, зумеры переизобрели то что деды веками использовали...), что бы про селектах тянуть только нужные данные.
118 2251994
>>251662
1. Таблица где все студенты
2. Таблица "виды учебников"
3. Таблица, где все учебники с номерами и ссылка на вид учебника
4. Таблица, где связано когда, кому и что выдано / возвращено. Ссылка на студента и ссылка на учебник.

С такой системой ты сможешь посчитать остатки учебников в библиотеке, узнать какие учебники на руках у конкретного студента в любой момент времени, узнать каких учебников студент недополучил/переполучил и т.д.
119 2255288
>>227895 (OP)
Нужно изучить postgres, так как формат степика ближе всего, нашел там https://stepik.org/course/97207/promo?next=
Нормально ли изучить по нему будет? Не попаду ли на косарик?
120 2255293
>>255288
Зачем? Если так невмоготу читать книги, есть куча бесплатных курсов.
121 2255349
Добрый вечер, аноны. Встала задача оптимизировать долгие запросы с таймаутами, но опыта почти нет, кроме как собрать старую статистику, либо ебануть индекс. Подкиньте плиз разных книг по оптимизации запросов в бд oracle или индексов, желательно не совсем старье. В гугле много чего нашел, но может у анона завалялись хидден джемы о которых мало кто знает?
123.png18 Кб, 770x466
122 2255496
Что не так сделал?
123 2255497
>>255496
category.amount либо product.amount, укажи явно откуда выбираешь
1234.png19 Кб, 794x489
124 2255501
12345.png13 Кб, 440x425
125 2255503
>>255497
для полной картины
123456.png13 Кб, 755x371
126 2255507
надо было id поставить
127 2255586
>>255507
Нет, указание имени должно было работать, и хардкод айдишника с точки зрения читабельности - говнокод. Хуй знает что там за проблема, эта хреновина же нормальные сообщения об ошибках не выдает.
128 2255698
>>255586
>>255507
Там Seafood с маленькой F, дегенераты
129 2255734
>>255698
Иди нахуй, шиз
130 2255752
>>255507

>2255734


этот прав, тебе надо привести сначала было в один регистр
where upper(category.name)='GOVNO'
131 2255839
>>255349
ты старьем называешь "Кэри Миллсап, Джефф Хольт. Oracle: Оптимизация производительности"?
там вроде не поменялось нихуя. Как 20 лет назад он зумеров обоссывал и сейчас все актуально.
bandicam 2022-01-04 23-36-50-850.mp42,1 Мб, mp4,
1864x720, 0:30
132 2255899
Смотрите, как можно.
Написал генератор простых чисел на чистом sql. За 11 секунд строится последовательность до 1 миллиона.
.png5 Кб, 319x208
133 2255913
>>255899
Можно компактнее.
dog-bubble-puppy.gif5,8 Мб, 640x640
134 2255930
Что нынче на собеседованиях спрашивают?
На ум приходят только транзакции какие-нибудь
135 2255967
>>255913

>Значение 1000000, указанное для параметра MAXRECURSION, превышает допустимый максимум 32767.


MSSQL. Стек вызовов не бесконечный.
Вроде в каких-то можно числовую последовательность функцией просто сгенерить. В postgres generate_series есть например.

Но я упор на быстроту делал.

А так переделал Having в краткий вариант c минимумом, вроде на секунду быстрее, показывает всегда 10 секунд так милионную последовательность. Но всё остальное оставил, как было. Так как так быстрее работать будет.

Надо рассматривать только цифры, которые оканчиваются на 1, 3, 7 или 9 и в условие соединения поставить делимость на 2 3 5 7. По этой причине лучше через UNION граничные условия отработать, так как числа 2 3 5 7 не попадут туда. А разница в производительности большая, если убрать это условие.

Еще числа надо проиндексировать, поместив во временную таблицу, так как оно потом само с собой соединяется.
Я проверял, что при установке индекса на колонку с числом во временной таблице, где все числа лежат, быстрее в 1,5 раза работает.
Без индекса 16 секунд, а с ним под 10.
136 2256203
>>255839

>ты старьем называешь "Кэри Миллсап, Джефф Хольт. Oracle: Оптимизация производительности"?


Да.

>там вроде не поменялось нихуя


Хз, конечно, книга 2006 года, уже экзадаты хуедаты появились у которых свои фишки в оптимизации. Но если основы особо не поменялась, то спасибо, почитаю её.
137 2256356
>>255913
ловко
бля пчел, тебе делать нехуй?
138 2256647
>>256356
Я со стака взял, самому лень.
139 2256922
Аноны, выручайте
С помощью анонов выше, я написал работающий вроде запрос. Препод сказал, что логика хуйня, но не суть. Мне нужно поставить правильное условие where.
Суть условия в том, что, если в таблице История_перемещений в строке Дата_доставки_на_склад_назначения есть заказ, а в таблице Выдача вообще нет этого заказа, то нужно его вывести.
То есть нужно вывести заказ, который приехал на склад (о нем есть запись в таблице История_перемещений) и у которого нет записи в таблице Выдача. Как это сделать?
Я всё ещё тупой, если что-то неправильно пишу сердечно прошу простить
140 2257074
Хранить json в базе норм практика?
141 2257156
>>257074
в зависимости от задачи, просто хранить да, искать в нем, нет.
142 2257170
>>256922
Соединить таблицы левым соединением (где слева будет таблица выдача) и в where прописать "Выдача.<какое-то поле> is null"?
143 2257204
>>257156
А что норм хранить,однообразные записи,типа набор чисел?
144 2257209
>>257204
Норм хранить одно атомарное значение.
145 2257333
>>257209
Пример
146 2257376
>>257204
Ну смотри, вот получил ты джейсон с внешней системы, тебе его надо распарсить и разложить по столбцам, это будет правильный реляционный подход. Хранить же в отдельном столбце весь джсон имеет смысл, только если там какая-то дополнительная информация, например исходный не распаршеный джсон, или там комментарии и тех параметры, или например схема, т.е. данные которые возможно пригодятся пользователю, но поиск в которых ты не планируешь. Есть механизмы позволяющие работать джсонами внутри бд, но я более чем уверен работает этот медленно как говно, да если ты дотсанешь сначала 100 строк, потом заглянешь в джсон и как-то их отфильтруешь\выведешь только части джсона, да это валидный сценарий, а если ты достнёшь сто тысяч строк, и полезешь что-то искать в жсоне, то ты сам себе в жопу только выебешь.
147 2257418
>>257376
а монга?
148 2257454
>>257376
Все так. Но можно сделать индекс по вычисляемому полю и заебись залетает.
Стандартный программист конечно охуеет от такого...
149 2258749
>>257170
Спасибо, только почему-то корректно сработало is not null
150 2258828
Сколько получают аноны шарящие хорошо в SQL (включая db modeling, dwh, сложные бизнес логики, оптимизация запросов) и по минимуму процедурных расширений. Короче способные осилить почти любую поставленную задачу в банке/телекоме/it каком-нибудь связанную с sql, но именно с такими скиллами.
151 2258831

>2258828


Ну это в компетенции data-инженера. Таких персонажей я не встречал тут
152 2258833
153 2258834
>>258831
Не знаю как это называется. Но я почему-то считаю это миксом бизнес аналитика и SQL девелопера, потому что нужно нихуево так разбираться в бизнес логиках, в том как устроены все данные, в качестве данных, в том, чтобы скрипт работал охуительно быстро и чтобы к бизнес логике даже самый прошаренный управленец не смог бы придраться. Ну пусть будет дата инженер, похуй.
Надоело горбатиться за копейки.
154 2258886
>>258831
Это я, 150к получаю. И это не дата инженер, это ДВХ разработчик
155 2261553
Приветик. Пишет вам макакен.
Смотрите. Вот у меня есть таблица Clients. В ней есть всякая информация. Но есть поле(колонка) Port. Думаю можно догадаться, но я поясню. Port - это TCP-порт(1-65535) по которому с подключенным клиентом можно коммуницировать через мое приложение. Но не суть. А суть вот в чем. Я хочу, чтобы при добавлении в БД нового клиента этот порт присваивался. Порт должен быть уникальным, но с условиями: есть табличка ForbiddenPorts в которой, как нетрудно догадаться из названия - перечислены порты. Есть табличка: ServerSettings где есть всегда запись: StartPort - это минимальное значение порта который можно использовать и ServerPort - порт который использует сервер для подключения клиентов(может быть больше стартового, потому его тоже нельзя использовать).
Как на текущий момент делаю я. Я на уровне своего приложения все разруливаю. Но меня это смущает. Во-первых, пришлось жуткий велосипед с очередями реализовывать. Во-вторых, мне кажется, что с этим БД должна справляться быстрее.
Я знаю, что в большинстве СУБД - есть такая штука как триггеры. Вот я и хочу намутить триггер на вставку нового клиента. Вот только я чет не совсем понимаю как это делается.
156 2261592
>>261553
если ты какую-то ебалу сетевую с длинным сроком жизни пишешь, то лучше сразу проектировать "порто-независимый" протокол, иначе клиенты все равно потом хлебнут горя с nat-ом и корпоративными админами.

Все это весело выглядит, но несерьезно.
157 2261607
>>261553
Если это постгря, то собираешь все свои занятые порты через union и выбираешь из серии что-то не из них.
http://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/42458

Всю это ебалу можно завернуть в скобки как значение при вставке.
158 2261718
>>261553
чот это говно затея, архитектурное решения уровня б, так никто не делает.
159 2262321
>>261718
Что конкретно-то? Выделять порты клиентам - это фича, которая в любом случае нужна. Выносить это на сторону базы, ну, да, я как-бы не хочу, но суть в том, что иначе - пришлось делать очень уродливый велосипед, с очередями и прочим и этот велосипед меня бесит своим наличием. Хочу чтоб в коде приложения просто было:
if(isNewClient){db.Add("ClientsTable", clientFactory.CreateNewClient(registrationRequest));}
А вместо этого там огромный уродливый монстр, который все равно лезет в базу, проверяет кто уже зарегался, ищет дырки, лезет смотреть кто заблокированные порты. Единственный плюс на стороне приложения, что я могу еще проверить что там система юзает в данный момент и если юзает - пропустить данный порт и пойти к следующему.
160 2262332
Ананасы, вопрос такой по структуре таблиц.
Значит затеял небольшой проект для себя - анализ аукциона в вов. Уже сейчас понимаю предметы отслеживаемые надо как-то группировать их по нужным мне критериям: количество, цена, если предмет можно переделать в другой которой можно продать дороже, если у предмета падает цена в течении какого-то периода, его давно было на ауке и тп.
Пока у меня только одна таблица с айдишником предмета и указанием по какому полю его фильтровать наличие\цена\количество и тд.
Как вот такое можно сделать нормальным способом? Запилить таблицу "Группы" где одно из полей отвечает за условие и потом айдишник записи присваивать отслеживаемым предметам?
161 2262384
>>262321
*охуевает по-девопски

давай сначала.
Зачем ты выделяешь порты клиентам?
Что есть клиентское приложение?

Ты знаешь значение таких терминов как : http, json, websocket ?
162 2262536
>>262384

> Зачем ты выделяешь порты клиентам?


Чтобы, сокет открыть. Что тут может быть непонятного?

> Что есть клиентское приложение?


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

> Ты знаешь значение таких терминов как :


Знаю. Но эти технологии к тому что я делаю - не относятся.
163 2262562
>>262536
если ты какой-то железячник и впервые пишешь БД - просто не лезь в триггеры.
Никакого ускорения (которое ты считаешь важным) не будет.

у тебя уникальность порта подтверждается в момент его открытия для прослушивания. ну вот ориентируйся на это
164 2262572
>>227895 (OP)
Как эффективнее всего выучить уровни изоляции транзакций, когда я работаю с базой через Hibernate или Spring Data? Может быть есть какое-то мнемоническое правило?
165 2262578
>>262572
Мнемоническое правило такое: READ COMMITED.
166 2262620
>>262578
SERIALIZABLE
REPEATABLE READ
READ COMMITTED
READ UNCOMMITTED

Их как минимум 4 вида. На собеседовании всегда спрашивают какую и когда использовать и начинают ворошить кишочки всяких спринг дат и прочих хибернейтов, плавно переходя к работе PostgreSQL
168 2262648
>>262644
Спасибо. Нужно как-то заучить эти правила. Карточки в Anki создать что ли...
169 2262732
>>262648
у меня есть видео по теме, на днях залью куда-нибудь
170 2263458
>>262648

их не надо учить.

их надо понять

основное везде READ COMMITTED

c остальными хер ты встретишься.
171 2263581
>>263458
Серриалайз при апдейтах юзают
172 2264173
>>263458
На собеседованиях попускают и смеются в лицо, когда я не могу объяснить где какую использовать.
173 2264492
накидайте фактов, почему аналитика в 1с - говно
sage 174 2264585
>>264492
Почему говно, идеальная система: дружелюбный интерфейс, высокая надёжность, лёгкость настройки отчетов. Рекомендую записаться на курсы от Нетологии!
175 2264602
>>264492
Очевидно потому-что само 1с негибкое говно, работающая с БД через залупу, да и вобще это не аналитическая система. Ты же не задаёшься вопросом почему в валенках не бегают кросс?
176 2264613
>>262732
>>262648
Вот залил, 3-5 и 3-6 день про транзакции
https://rutracker.org/forum/viewtopic.php?t=6164123
177 2264735
>>264492
ты хоть базу 1с открывал? там нет аналитики. Ни о каких кросс-запросах и речи нет. Работать быстро это в принципе не может.
Там с большим трудом можно разобрать все файлы словаря чтобы добраться до самих значений. А таблицы они называют "регистры" (Не спрашивай откуда я это знаю.)

Короче, это днина.
178 2264810
>>264735
Однажды Эрнест Хемингуэй поспорил, что напишет самый короткий рассказ, способный растрогать любого. Он выиграл спор, написав всего 3 слова: «Аналаитика в 1С»
179 2264894
>>264735

>Ни о каких кросс-запросах и речи нет


Да ладно ?! Можно подкллючать внешние источники через ODBC.

Там проблема в том, что отчеты слабо интерактивны. Мы данные с 1Са в BI выгружали все равно для более серьезной аналитики.

>А таблицы они называют "регистры"


Регистр - это один из видов объектов. Чё ты несешь.

> Работать быстро это в принципе не может.


Я базу и 4ТБ видел на 1Се (в связке с MSSQL). Дело не только в 1С, а в кривых руках.
180 2264898
>>264735
П.С.
И называют они их регистрами, потому что прикладной разработчик оперируют объектными терминами, а не реальными таблицами СУБД. Не так часто на урокень СУБД приходиться опускаться. Обычно это задачи производительности, когда план запроса надо анализировать, который в реальности выполняется.
Внезапно, также как и в любых других технологиях.
Это по сути тот же ORM в нормальных ЯП, но не совсем.
181 2264906
>>264735
П.С.П.С.П.С.
А аналитикой там как таковой не занимаются.
Это в первую очередь система для получения первичных данных, сводных отчетов и регламентированных.
А производить какую-то АНАЛИТИКУ ДАННЫХ с поиском закономерностей, крутить кубы и вот это вот всё - это не задача баз на системе 1С в принципе.
Есть дочерний продукт 1С:Аналитика (это не относится к платформе 1С - это стороння BI система от фирмы 1С) - вот там пытаются какое-то подобие сделать.
А аналитиками в 1С других людей называют.
Проблема терминов и не понимания, что для чего используется.
182 2265037
Сап двач, представь следующую ситуацию. Есть какие-то сущности, которые соотносятся как предок-потомок. Запрос может включать различные параметры фильтрации и пагинации для обоих. Вопрос, как достать результат, отфильтрованный по потомкам, но пагинированный по предкам, не запрашивая всех потомков?
183 2265038
>>265037
Сущности одного типа и лежат в одной таблице. Фильтры применяются ко всем сущностям, пагинация только по предкам.
184 2265154
>>264898

>И называют они их регистрами, потому что прикладной разработчик оперируют объектными терминами, а не реальными таблицами СУБД. Не так часто на урокень СУБД приходиться опускаться. Обычно это задачи производительности,



Причем, если бы они это делали как средние разработчики изначально, сейчас бы любая дура с PowerBI наклепала бы отчетики - закачаешься.
185 2265356
>>227895 (OP)
Можно ли извлечь значение из таблицы, и сразу же сравнить его с имеющимся значением, чтобы получить true или false и выполнить, либо не выполнить следующий запрос?
Если да, то как?
186 2265364
>>265356
if exist
187 2265396
>>265364
Ну и как это в sqlite применить?
188 2265405
189 2266738
Как правильно: keyset pagination или seek pagination?
190 2267276
https://groupby1.substack.com/p/data-engineering
Судя по всему, пизда дата инженерам скоро
191 2267283
>>267276
Куда выкатываться?
192 2267285
>>267283
В 1С, битрикс.
1642389600031.mp48 Мб, mp4,
854x480, 0:05
193 2267381
>>267276

>Дата сеанс все


> Статья начинается со слов trigger warning

Азарёнок.mp46,6 Мб, mp4,
1280x720, 1:15
194 2268116
Анон, в чем необходимость запускать базы SQL от имени другого пользователя? И тем более использование MSA
195 2268336
>>268116
так уж повелось в айтишечке. Операционная система разграничивает процессы на основе идентификатора юзера.

Например ты мог бы сделать CREATE TABLE EXTERNAL FILE '/etc/passwd' и потом сделать select * from .
И это реально работавший случай в базах данных великого прошлого
196 2268351
>>268336
А гранты для чего?
197 2268559
>>268336

>Например ты мог бы сделать CREATE TABLE EXTERNAL FILE '/etc/passwd' и потом сделать select * from .


Что произойдет? Какие-то пароли извлечет?
198 2268772
>>268559
Ты как-то неправильно понимаешь информационную безопасность. Любая извлеченная информация повышает вероятность взлома.
Например, ну там будет юзер anna с очевидным паролем anna123.

А вообще в былые времена дельфятники (эта конструкция из Firebird) легко могли под root запускать бд на линупсе.
Люди простые и незнакомой среде не разбирались.
199 2268774
>>268351
гранты обрабатывает БД оперируя своими объектами.
Вот только эти объекты из реальной жизни, а не теоретические. Они позволяют и файлы читать и внешние программы запускать.
200 2268948
>>268772
Да я к бд отношения особо не имею. Я админиню домен как могу и хочу понимать смысл всего этого
201 2269791
>>268116
Потому-что по дефолтным пользвотелем несекьюрно, и если тебе нужен доступ к информации на другой машине, отгребешь проблем.
202 2269793
>>268559
Через мсскуль можно получить доступ к командной строке
203 2269825
Привет, анон.

Есть несколько сотен тысяч географических точек (широта/долгота). И они хранятся в БД.

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

Есть ли что-то такое же на мускуле/постгрессе?
Если нет, то сильно ли сложно накрутить и будет ли это влиять на перформанс?

Не спрашиваю, "как" - я примерно представляю, как это может быть реализовано, просто у меня стоит выбор: либо реляционная БД, чтобы связывать мочу с говном, либо конкретно для геопоиска сделать чё-то вроде микросервиса с отдельной бд.
204 2269827
>>269825
В мускле точно нет, в постгресе вроде что-то было.
206 2269936
>>269934
а бля в глаза долблюсь mysql, а mssql
207 2270585
Есть запрос, выводящий запись, которая чаще всех встречается в столбце.
Но как сделать так, чтобы запрос в случае, если несколько разных записей больше всех встречаются одинаковое кол-во раз, выводил бы их все?
208 2270716
>>269825

>постгрессе


Постгис
209 2271111
>>270585
А что у вас вместо квери сейчас, разрешите полюбопытствовать?
image.png7 Кб, 570x84
210 2271129
Нужно продублировать строки, в mssql это можно сделать джоином на статичные значения(пикрелейтед). Как такой же трюк провернуть в оракле?
211 2271244
>>269825
В постгресе есть огромный модуль работы с геоданными
212 2271392
>>269825

>Есть ли что-то такое же на мускуле


ДА.
https://dev.mysql.com/doc/refman/5.7/en/spatial-analysis-functions.html

Неделю не заходил в тред - сутулые вообще от рук отбились.
213 2271393
>>269825

>будет ли это влиять на перформанс?


будет. все подобные функции крайне хуево оптимизируются, но есть еще вот это : https://dev.mysql.com/doc/refman/5.7/en/create-table-secondary-indexes.html
214 2271522
Поясните за применение sqlite3 в вебе.
Насколько она пригодна для использования в бекенде при написании небольших проектов или это вообще не ее область?
215 2271551
>>271522
Смотря что за проект. Для небольших проектов вполне пригодна.
В принципе, здесь расписано всё: https://www.sqlite.org/whentouse.html
216 2271566
>>271522
Не пригодна. Работать будет но зачем удивлять коллег? У нас тут на бал-маскарад, а серьезный бизнес.

но допустим, zabbix ее использует для хранения промежуточных данных на proxy и всем норм. Оффициальная (tm) конфигурация
217 2271570
>>271566
Тут кого не пни, каждый первый - йоба хайлоадер, пилит проекты мирового уровня, ага.
218 2271912
>>271570
дело не в этом. повторюсь еще раз: НЕ НАДО УДИВЛЯТЬ КОЛЛЕГ
219 2272283
>>227895 (OP)
Как согласовывать обновы кода с изменениями базы данных?

Вот есть у меня джанго-приложуха, я в ней меняю схемы БД на удаленном тест-серваке через миграции, затем через какое-то время на этот сервер я заливаю другой код, из более ранее ветки, и там же сцуко схемы БД будут другие из-за чего могут вылезать занятные ошибки на NOT-NULL CONSTRAINT и прочее. Как с таким справляться?
220 2272695
>>272283
Обычно держат несколько тестовых серверов, каждый со своей схемой, и если накатили миграции, приложение на более старое обычно уже не обновляют, если надо что-то потестить со старым приложением, юзают другой сервер, который ещё не обновляли. Или восстанавливают дамп тестовой схемы, но это влечёт за собой последующую еблю с восстановлением тестовых данных.
221 2273011
>>272695
this
Плюс контейнерезация
222 2273448
Подскажите, как поменять хост постгреса с винды? И чтобы к нему могли подключаться с других айпишников?
223 2273652
Парни и не парни(со штучкой), тут такое дело.
Я наконец-то начал изучать веб-погроммирование, скачал купил книжку, дошло дело до темы баз данных. И на разделе с ознакомлением с SQLite я решил пройти метанит. Не потому, что считаю его крутым или потому что русек, а просто для чуть более детального ознакомления,в книге там совсем мало(оно и понятно). Не питаю иллюзий по поводу качества материала, просто, чтобы иметь представление на базовом уровне, что это вообще такое. Так вот, мне что-то это так понравилось, намного больше, чем дрочить код, что я решил у вас узнать, а есть ли вообще отдельная профессия для тех, кто любит дрочить бд? Я вроде слышал что-то такое, но к базам никогда не прикасался особо, поэтому не знаю. Какой вообще нужен стек знаний, нужно ли программировать на каком-то языке и если да, то на каком уровне, существуют ли джуны у вас, какой минимум знаний, есть ли сайты с рейтингом за решение задачек и т.д. Понятное дело, что скорее всего у меня потечёт жижа из анала, когда я столкнусь не с игрушечными примерами базового синтаксиса, но меня это не особо пугает.
224 2273737
>>273652
Системных аналитиков вакансии посмотри, можно с голым SQL ебланить сидеть.
225 2273739
>>273652

> а есть ли вообще отдельная профессия для тех, кто любит дрочить бд?


Есть администраторы баз данных (настройка, мониторинг, обслуживание и т.д.) и ещё разрабы на PL/SQL, T-SQL, PL/pgSQL. Админство лично мне представляется скучным и рутинным занятием, хотя кому как. PL/SQL и прочее - это в основном легаси из нулевых, когда бизнес-логику приложения писали целиком на хранимых процедурах, потихоньку уходит в прошлое, хотя вряд ли умрёт полностью.
Ну и тестировщики с аналитиками, но для них это прикладной инструмент, а не основное занятие.
226 2273746
>>273448
Он по дефолту слушает localhost (127.0.0.1), а надо * (0.0.0.0)
https://manifold.net/doc/mfd9/enable_network_access_to_postgresql.htm
227 2273794
>>273746
Понял, спасибо.
228 2275565
>>273011
Для контейнеров дефолта ситуация когда БД хранится в томах
229 2276429
>>227895 (OP)
Посоветуйте пожалуйста хорошую книги по БД/SQL и тренажер по SQL задачкам, чтобы на собеседованиях не обсираться.
231 2276806
>>276804
Посоветуй книги, а не место, где их спиздить.
232 2276824
>>276806
Хороший академический курс https://www.youtube.com/playlist?list=PLXPbT_PYOiRipfX8zrv_9EpnSOpK9P__j
раздражает как у чела микрофон о свитер трется
233 2276832
>>276824
Там кстати, профессор советует книжку, которая тебе нужна https://www.amazon.com/Database-Management-Systems-Raghu-Ramakrishnan/dp/0072465638
234 2276838
>>276832
Ебать, рагу рама кришна.
Таких чисто теоретических книг дохуя, кстати. Я все не соберусь такую попробовать читнуть.
235 2277018
>>227895 (OP)
Можете объяснить разницу, чем EXISTS отличается от обычного подзапроса IN например вот такой запрос:

SELECT company_name, contact_name, customer_id
FROM customers
WHERE EXISTS (SELECT customer_id FROM orders
WHERE customer_id = customers.customer_id
AND freight BETWEEN 50 AND 100)

Подзапрос тут делает выборку или просто ищет один совпадающий условию? Но как потом работает внешний WHERE если WHERE EXISTS вернул true?
236 2277101
>>277018
да вроде ничем с точки зрения результата.
Очевидно, что может отличаться планами выполнения и скоростью.

Это важно для тебя? Вы там устроили сутулое побоище из-за SQL?
237 2277169
>>277101
Ну как бы да, мне уже объяснили на стаке, надо стараться вникнуть в то что изучаешь и с чем работаешь разве нет?
238 2277281
>>276838
Не советую. В них дохуя воды и/или слишком очевидные вещи описаны хотя может только для меня
239 2277305
>>277169
а в случае с SQL - не надо.
планы выполнения постоянно меняются от версии к версии.
240 2277514
>>277169

>мне уже объяснили на стаке


ну так ты и нам объясни
241 2278286
Есть что почитать по моделированиею данных?
242 2278312
>>278286
Хуярь сериализуемые айдишники к каждой таблице, вот тебе и всё моделирование данных.
image.png157 Кб, 800x383
243 2278630
>>227895 (OP)
Правильно ли я понимаю, что в некотороых случаях (например десктопное приложение на ограниченное кол-во компьютеров) "сервером" в схеме может выступать СУБД?
Скажем, просто задать в постгрес количество подключений в 1000 пользователей и пусть данные из их клинтских программ обмениваются с БД.
244 2278682
>>278630
Да, это называется двухзвенная архитектура. Так делали в девяностых и нулевых, сейчас редко так делают.
245 2279182
Есть какие-то материалы по разработки структуры БД с примерами, желательно не интернет магазина?
246 2279212
>>279182
ну так если ты магазин уже освоил, то остальное по образу и подобию, ты же не бездумно скопировал, а понял, почему так? ну а более редкие случаи тут уже сам думай на основе полученных знаний, ну и просто по архитектуре общие сведения читай, книжек полно
247 2279655
>>278630
братан, кажется тебе нужно разобраться чем Appication Sarvar отличается от Web Sarvar !
Я ждал этого момента 7 лет
Посмотри вот это видео :
https://www.youtube.com/watch?v=BcmUOmvl1N8&t=200s
248 2282031
А это нормально, что постгрес тратит по 30сек на поиск по текстовому полю в 20гб базе?
Подозреваю, что должна быть какая-нибудь команда "ЗДЕЛОЙ ЗОЕБИСЬ", которая многократно ускорит поиск, но я о просто не знаю.
249 2282034
>>282031
Нет такой команды, всякие эластиксёрчи изобрели не от хорошей жизни. Но что-то сделать можно.
https://www.lateral.io/resources-blog/full-text-search-in-milliseconds-with-postgresql
https://www.alibabacloud.com/blog/optimizations-with-full-text-search-in-postgresql_595339
250 2282084
>>227895 (OP)
Пытаясь в проектирование баз данных,
чет взбрела в голову следующая мысль...
А что если взять, да и сгенерить все возможные модули различных моделей данных, и на принципах модульного программирования - автоматизировать конструирование совершенно любой модели данных?
Можно так?
Если да, то что мешает заебенить на этих принципах - внезапно, МОДЕЛЬ ВСЕЛЕННОЙ?
251 2282095
>>282084

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


> Можно так?


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

> Если да, то что мешает заебенить на этих принципах - внезапно, МОДЕЛЬ ВСЕЛЕННОЙ?


Почему в этом треде такое засилье философов? Это не ты здесь регулярно спрашиваешь про наноборду и написание своей СУБД?
252 2282110
>>282095

>Нельзя. В базе данных хранятся данные, но не логика, которая тоже часть модели данных.


Ну вот, глядя на пикчи со схемами данных, https://www.google.com/search?q=базы+данных+схемы+данны&tbm=isch
я подмечаю, что они состоят, из одинаковых элементов, как-бы из модулей, расположенных в разном порядке.
Собственно, идея в том, чтобы сгенерить всевозможные эти вот модули, добавить триггеры всякие, и сделать как-бы полный и универсальный набор модулей, соединяя которые, можно было бы быстро сконструировать и породить любую модель данных.

>Можно сгенерировать код хранимых процедур, но такой генератор написать ещё сложнее, чем сами процедуры.


Ты имеешь в виду, под видом данных, хранить SQL-запросы, или чо? И написать генератор, генерирующий все возможные sql-запросы, так-сказать полный набор их, выбирая из которого отдельные - можно реализовать любую логику?
Может даже так было бы проще, написать генератор, вместо того, чтобы ебаццо с написанием КАЖДОГО запроса. Но это не точно.

>> Если да, то что мешает заебенить на этих принципах - внезапно, МОДЕЛЬ ВСЕЛЕННОЙ?


>Почему в этом треде такое засилье философов?


Дык реальная, вроде, тема, не?

>Это не ты здесь регулярно спрашиваешь про наноборду и написание своей СУБД?


Ой бляяяяеееееееть. Я пытался сделать базу, получилось вот что:
https://github.com/username1565/nanoboard/tree/nanodb-sqlite/nanodb.exe-source/Database - файл nanodb.sqlite3.sql
Дело за малым. Переписать целый файл PostDB.cs вписав туда опциональное использование sqlite3, через System.Data.SQLite.dll, компилируемую из открытого кода:
https://github.com/username1565/System.Data.SQLite
Но это слишком много ебалы, особого интереса пердолиться - нет, но наработки некие есть, но они разбросаны по куче папок так, шо яебал. Да и вообще интереса, как такового там нет, поэтому я предпочитаю сутками пипсовать криптоговно на наебиржах, вместо пердолинга с этой бородой. Хотите делайте сами. Может я и сам сделал бы, если бы у меня бабло не спиздили тупые дешёвые крысы. А так, приходится отвлекаться от подобного хобби, на всякую, более насущную поебнятину сраную.
252 2282110
>>282095

>Нельзя. В базе данных хранятся данные, но не логика, которая тоже часть модели данных.


Ну вот, глядя на пикчи со схемами данных, https://www.google.com/search?q=базы+данных+схемы+данны&tbm=isch
я подмечаю, что они состоят, из одинаковых элементов, как-бы из модулей, расположенных в разном порядке.
Собственно, идея в том, чтобы сгенерить всевозможные эти вот модули, добавить триггеры всякие, и сделать как-бы полный и универсальный набор модулей, соединяя которые, можно было бы быстро сконструировать и породить любую модель данных.

>Можно сгенерировать код хранимых процедур, но такой генератор написать ещё сложнее, чем сами процедуры.


Ты имеешь в виду, под видом данных, хранить SQL-запросы, или чо? И написать генератор, генерирующий все возможные sql-запросы, так-сказать полный набор их, выбирая из которого отдельные - можно реализовать любую логику?
Может даже так было бы проще, написать генератор, вместо того, чтобы ебаццо с написанием КАЖДОГО запроса. Но это не точно.

>> Если да, то что мешает заебенить на этих принципах - внезапно, МОДЕЛЬ ВСЕЛЕННОЙ?


>Почему в этом треде такое засилье философов?


Дык реальная, вроде, тема, не?

>Это не ты здесь регулярно спрашиваешь про наноборду и написание своей СУБД?


Ой бляяяяеееееееть. Я пытался сделать базу, получилось вот что:
https://github.com/username1565/nanoboard/tree/nanodb-sqlite/nanodb.exe-source/Database - файл nanodb.sqlite3.sql
Дело за малым. Переписать целый файл PostDB.cs вписав туда опциональное использование sqlite3, через System.Data.SQLite.dll, компилируемую из открытого кода:
https://github.com/username1565/System.Data.SQLite
Но это слишком много ебалы, особого интереса пердолиться - нет, но наработки некие есть, но они разбросаны по куче папок так, шо яебал. Да и вообще интереса, как такового там нет, поэтому я предпочитаю сутками пипсовать криптоговно на наебиржах, вместо пердолинга с этой бородой. Хотите делайте сами. Может я и сам сделал бы, если бы у меня бабло не спиздили тупые дешёвые крысы. А так, приходится отвлекаться от подобного хобби, на всякую, более насущную поебнятину сраную.
253 2282130
Что я делаю не так?
Почему в списке старые даты?
https://mariadb.com/kb/en/select-based-upon-date/
254 2282131
>>282130
'start' это строка, тебе нужны бэктики `
255 2282296
>>282084

>Если да, то что мешает заебенить на этих принципах - внезапно, МОДЕЛЬ ВСЕЛЕННОЙ?


>>282084

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



Количество объектов во Вселенной бесконечно.
Количество типов объектов - менее бесконечно.
количество ОТНОШЕНИЙ между объектами более бесконечно чем менее бесконечно количество типов.

Таким образом, это глупая идея. Не принесет тебе счастья, дорогая криптоманечька, воображающая себя программистом.
256 2282297
>>282110

>Но это слишком много ебалы, особого интереса пердолиться - нет, но наработки некие есть, но они разбросаны по куче папок так, шо яебал



Чтобы приблизиться к гордому званию программиста, тебе нужно изучить что такое ORM.
Обрати внимание, что это не чудо и проблем они только добавляют, но вот количество кода уменьшают, да.

Так же в обязательно порядке обрати внимание на эту статью:
https://en.wikipedia.org/wiki/Object–relational_impedance_mismatch
2ср.png2,2 Мб, 2048x1940
257 2282354
>>282110
Почему все залётные ебланы пытаются троить СВОЮ МЕГ ЁБА МОДЕЛЬ ВСЕЛЕННОЙ на sqlLite?
Верный признак шизофрении
image.png42 Кб, 727x758
258 2282397
Анонче, привет. Не подскажите как сделать так, что бы DISTINCT вытягивал всю строку целиком?
259 2282404
>>282397
select distinct * from workers
260 2282409
>>282404
Тогда уникальность столбца "salary" пропадает. Нужно что бы одновременно вытягивались уникальные значения и вся строка целиком.
261 2282413
>>282409
Какие значения брать? Первые попавшиеся? Вот вернёт запрос Петю с зарплатой 500, но Васю он не покажет, хотя у него тоже 500, тебя это устраивает?
262 2282422
>>282409
Короче, если устраивает, обычно это делают через оконные функции.
https://stackoverflow.com/questions/3800551/select-first-row-in-each-group-by-group
263 2282423
>>282413
Да устроит.
В этом и смысл. Что бы он отобрал все записи у которых зарплата уникальная.
И вернул все столбцы целиком, а не только зарплату.
Как на скрине я красным дорисовал.
264 2282987
>>227895 (OP)
Есть идея - сделать биржу для бартерного обмена.
Суть в следующем. Есть сайт. На сайте регаются много юзеров.
Эти юзеры попадают в таблицу Users, в базе данных.
Каждый юзер имеет уникальные вещи, с их описаниями, попадающие в таблицу Properties.
Для каждой вещи, каждый юзер, имеет свой уникальный акк.
Для каждого акка, есть разные балансы, ну там доступный баланс, залоченный баланс, баланс ожидания.
Баланс - символизирует долю права собственности владения вещью.
Разные юзеры, по разным вещам, имеют разные доли права собственности, как-бы являясь акционерами вещи, а каждая вещь - это как-бы акционерное общество.
Дальше, юзеры могут передавать права владения вещью - другим юзерам, или менять их на права собственности владения другими вещами, либо по договорным ценам (через объявления), либо размещая ордера, сортируемые по цене, и выводящиеся как на бирже, с перекрытием ордеров.
Совокупность пар вещей, равна числу уникальных сочетаний по паре. Торговля всех вещей за все вещи, и любую вещь можно обменять на любую вещь, как целиком, так и наполовину, скажем.

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

Собственно, как спроектировать ебучую БД, и все эти триггеры-хуиггеры?
265 2282992
>>282987
Продолжу идею.
Когда юзер открывает ордер на продажу части доли владения одной вещью, за какую-либо часть доли владения другой вещью (по указанной цене),
выставляемая на продажу часть доли владения первой вещи,
переводится с его доступного баланса, на его залоченный баланс, и висит, пока активен ордер.
Ордер - можно отменить. Тогда, с залоченного баланса, доля владения первой вещью, возвращается на доступный баланс.
Если юзер2 покупает долю влладения вещью1, за его долю владения вещью2, по указанной в ордере цене, и покупает, выставляя встречный ордер, то встречные ордера перекрываются, и происходит обмен долями владения вещью 1 и вещью2, между юзером1 и юзером2.
При этом, с залоченного баланса одного юзера, доля владения переводятся на доступный баланс другого юзера, и наоборот.
Всё это должно бы быть в виде одной обменной транзакции.
Юзер также может зарегистрировать право владения вещью (декларируя вещь, или подтверждая владение документами всякими, или тупо заводя бабло), и вывести - оформив заявку на вывод. При этом, с доступного баланса, право владения переводится на баланс ожидания, и висит там до окончания обнала права владения, и его материализации - то есть до обработки поданной заявки на вывод.
266 2283091
Пчел, по таким тз только за деньги.
267 2283427

>Невозможно выполнить команду DROP DATABASE пока существует хоть одно подключение к заданной базе. Однако можно подключиться к любой другой, в том числе и template1. template1 может быть единственной возможностью при удалении последней пользовательской базы данных кластера.


Блять, как нахуй отключиться от бд? Там сука отсутствует такая кнопка, а подключается к бд автоматически при входе в pgAdmin4
При этом при подключении через терминал, pgsl требует ввести пароль для пользователя с именем пользователя компа!!! Что за бред нахуй? К нему не подходит мастер пароль, который я сделал при установке postgres, и не подходит пароль пользователя компьютера. Что за бред нахуй?
268 2283431
Как в постгресе создать таблицу в конкретной бд?
Я создаю бд, потом создаю таблицу, но она создается в бд postgres.
269 2283433
>>283431
Ты к созданной БД хоть подключился?
\c DB_NAME
270 2283434
>>283427
блять, подключился, на линуксе у нас значит будет параметр -u, а на винде -U блять, как удобно.
И все равно ни работает ни DROP DATABASE имя;
ни dropdb dbname
Как блять отключится и удалить её?
271 2283435
>>283431
Вопрос снят, сукаЮ весть день проебался

>>283433
Я .sql скрипт запускал, не знал, что в нем можно так подключаться, думал, как-то в имени таблице нужно прописывать имя бд.
16330071844760.png176 Кб, 512x439
272 2283862
Сейчас в процессе перехода в другой отдел, а там новый стек. БД на Greenplum. Концептуально понимаю, что это наследие Postgre с которым я работал, но у чем отличия? Пока что понял что есть новое понятие ключей дистрибуции которые связаны с MPP. Но в целом в чем разница? Призываю всех гринпламовцев в этом itt треде.
273 2284015
>>282987

>Собственно, как спроектировать ебучую БД, и все эти триггеры-хуиггеры?


Не пихать всю логику приложения в БД.
how-to-monitor-ec2-instances-by-memory.png49 Кб, 505x368
274 2284042
Сап.
Есть MSSQL база доставшаяся в наследство.
Планировщик по таймеру периодически запускает хранимую процедуру.
Хранимая процедура выполняется 4 минуты, и при запуске грузит процессор на 100% на 30 сек, дальше спад до 40%.
Соответственно в этот промежуток времени база данных "неохотно" выполняет другие запросы, и для некоторых время отклика возрастает выше 30 сек (что вызывает эксепшен у вызвавшего эту процедуру веб-приложения).
Посему вопрос:
1. можно ли как-то "замедлить" выполнение хранимой процедуры?
2. можно ли как-то выставить высокий приоритет некоторым запросам, чтобы БД выполняла их сразу при вызове?
275 2284102
>>283091
хуеньги. Такая шняга просто обязана быть опенсорцной, и легкоподнимаемой, и шариться в открытом доступе через торренты в дарквебах.
276 2284130
>>284042
Никак, так как процiдурки, жрущие 100% процессора - фича майкрософтоподелий.
>>284102

>обязана быть опенсорцной


Опенсорц это не значит, что тебе пердолики будут нахаляву воплощать твою очередную биткоиномечту.

>легкоподнимаемой


Даз нот компют в контексте опенсурца.

>в открытом доступе


>в дарквебах


Прими таблетки, наркоман.
277 2284216
>>284102
Ну да щас мы побежим рисовать тебе схему хранения и на торренты выкладывать.
278 2284219
Аноны, что-нибудь можете про глоубайт? Захантили на джуна аналитика, за меньше моей текущей, зато обещали перспективы, насколько это правда?
279 2284222
>>284219
был собес по скайпу, отказали на след день. ВОООТ
280 2284233
>>284042
Можно попробовать разделить на процессорные группы и снизить фактор многопоточности
281 2284243
>>284222
Бля, охуенно. Расскажи про собес, что спрашивали, к чему готовиться?
282 2284244
>>284243
про БД общие вопросы
задачка на join
2 задачи на логику
ну и обычные эйчарские вопросы
283 2284245
>>284243
ЗАХОДИШЬ НА СОБЕСЕДОВАНИЕ
@
СИДИТ СЕНЬОР И ЭЙЧАРКА
@
СЕНЬОР НАЧИНАЕТ ДИКО ПРЫГАТЬ ВОКРУГ И ПРИГОВАРИВАТЬ ТИЛИ ТИЛИ ТЕСТО ЖЕНИХ И НЕВЕСТА
284 2284252
>>284244
денег то сколько?
285 2284255
>>284252
я просил 80к хех
286 2284261
>>284255
ну с 80к есть куда расти. Мне кажется до 150 вполне.
287 2284265
>>284222
Повезло, чел. Не знаю что там с ними делают, но у нас на собесах были двое после гловбайта (одного даже взяли на свою голову), и оба были отбитые.

Какое-то вечное суечение, все время требуют внимания к себе, какие-то блять инфантильные хотелки вечно: дай мне ментора ой а где у вас печеньки. Все время пытаются как-то тупо наебать: челик сливался на простейших вопросах про отличия hash от merge join под соусом ну это неинтересно просто))).

Как будто взяли аутистов-омежкиных и имплантировали им социоблядское шило в жопу, худшее из двух миров.
288 2284269
>>284265

> отличия hash от merge join


О, я как раз нихуя не понял нахуя мерж нужен, хеш понятно, 2 большие таблицы соединять, а мерж я сколько не пытался приткнуть везде только хуже делает.
289 2284280
>>284269
Если тебе нужен весь целиком результат джойна больших таблиц, особенно когда готовых индексов нет, то там мерж лучше за счет последовательного io.
290 2284303
>>284280
Да ёбаный в рот, я думал для этого хеш пизже, нахуя тогда он нужен?
291 2284310
>>284303
Мердж проводит сравнение по столбам по которым есть индекс, т.е. таблица должна быть упорядочена, и он по порядку сравнивает значения. При таком подходе, можно сравнивать только пары которые ещё не попадались.
Хеш джоин вычисляет хеш функцию, которая делит на группы таблицу и проводит сравнения в рамках эти
292 2284311
>>284303
Погодь, у тебя же хэш по достаточно большой таблице тупо в память не влезет.
293 2284318
>>284310
Спасибо, анон, буду знать, а то документация от моего гладкого мозга отскакивала как горох от бетона.
>>284311
Ну 2 исторических таблицы с 2002 года я хуй соединю в любом случае. А вот если предварительно фильтрануть по дате то там где нестед залупа задыхается хеш справляется.
294 2284331
>>284318

>Ну 2 исторических таблицы с 2002 года я хуй соединю в любом случае.



Ну да, я про кейсы когда нужно именно все поджойнить. Мерж тем и хорош что работает на любых размерах и любом количестве памяти за O(log n) сканирований.

Алсо, оказалось в википедии https://en.wikipedia.org/wiki/Hash_join приводятся решения для кейса когда хэш не влезает в память. Простое работает за O(n) сканирований что очевидно хуже на больших таблицах.

И там же есть Grace hash join, на первый взгляд там вообще ровно два скана, то есть О(1), кажется что вин и я пока не могу найти где подвох кроме ехидных перекосов. Интересно.
295 2286728
Анончи, пытаюсь установить Postgress на свою Шиндовс 10 (перепробовал дохуя версий от 10 до 14, в том числе 32-битный установщик пробовал скачивать), но какого-то хуя у меня в Пуске она не появляется, а попытки открыть shell зайдя в папку заканчиваются только моментальным закрытием консоли.
С чем эта хуйня может быть связана? Заебался уже
296 2286732
>>286728
Зайти туда не через проводник, а из командной строки, а лучше добавь эту папку PATH.
И пишешь команду: psql -U postgres
297 2286835
>>286732
Сэнк ю анонче, оно работает. Но всё равно интересно, какого хуя на других компах всё прекрасно и без консоли устанавливается и запускается, а вот именно мне приходится ебаться
298 2286837
>>286835
Ты небось какую-нибудь галку при установке пропустил.
299 2287193
анончики, подскажите можно ли заполнить табличку case'ом? и как собстна это сделать в оракле? спасибо доброанон что подсказал решение, я знал ты лучший!
300 2287205
>>287193
Если правильно понял, тебе нужен INSERT INTO YOURTABLE (<COLUMNS>) SELECT ...;
А в селекте любой запрос с case и CTE, генерирующий строки таблицы.
301 2287289
гайс, не подскажете как из первого запроса получить второй? из мыслей только заюнионить эту же табличку с запросами с null значениями по дню месяцу и году, и так же заебенить оконку с соответсвующим partition by по месяцу, году, продукту.
302 2287301
>>284331
Нихерасе вы тут развели.

Merge хорош когда, данные уже в отсортированном виде поступают после предыдущего шага. Как раз после скана по идексу btree можно такую ситуацию получить. Но!

1.Нужно учитывать, что сама сортировка также требует памяти, и если выборка не помещается в память, то начинается запись на диск промежуточных результатов с последующей подкачкой.
2. Для merge два входных потока данных должны быть отсортированы.

При прочих равных hash должен выигрывать в большинстве случаев, если одна из таблиц помещается в память.
Grace Hash Join - алгоритм в котром зная - что ни одна таблица в память не поместится - мы разбиваем их на куски по ключу хэша на часть которая помещается в память - и остальные - которые улетают на диск. Происходит это для обеих таблиц, далее куски с одинаковыми хэшами загружаются и сравниваются. Этот алгоритм оптимизировали до Hybryd Grace Hash Join, который при первом проходе по внешней таблице - сразу джойнит строки найденные в сформированном батче hash таблицы - те что не нашел - скидывает на диск. Один проход таким образом экономится. Точнее часть, которая сджойнилась.
303 2287426
>>287289
Загугли ROLLUP, CUBE, GROUPING
304 2287796
>>287301

>пук

305 2287798
>>287796

> среньк

306 2288360
Молю поясните тупому, как в постгресс работают рекурсивные запросы и глвное как и зачем в них использовать Join, который не Left/Right/Inner, просто Joinна сайте доки про этот Join две непонятнын строчки.
8690dc718ca8d996c4de8aa4618fd921.jpg61 Кб, 700x700
307 2288535
Здароф, анон.
Есть MSSQL база, в хранимой процедуре которой выполняется простой селект на таблицы, находящиеся на связанном сервере, который тоже MSSQL.
Таблицы на связанном сервере периодически пополняются новыми данными.
Хранимая процедура выполняется с некоторой интовой переменной для поиска, и зачастую первые вызовы ничего не возвращают, так как данных еще нет, а после добавления данных на связанном сервере хранимая процедура возвращает результат.
Но иногда случается какой-то затык, и процедура продолжает ничего не возвращать в то время как данные у таблицах связанного сервера уже есть.
Такое чувство что процедура закешировала результат выдачи запроса, и не хочет сбрасывать кеш так как не видит изменения таблицы(потому что те лежат на связанном сервере а не в своей бд).
Подскажи, MS SQL вообще умеет в кеширование результатов выдачи запросов?
Можно ли отключить кеширование для одного запроса / хранимой процедуры?
Может можно как-то не явно отключить кеширование, например сносить план выполнения или еще чего?
308 2290256
>>227895 (OP)
Как правильно взаимосвязывать данные?
309 2290261
>>290256
Через внешний ключ.
310 2290375
Как с помощью бд следить за часовым лимитом? Т.е. с 13:00 можно заинсертить 100 сущностей успешно, а 101ый и последующие инсертить с ошибкой. С 14:00 счетчик сбрасывается и снова можно успешно инсертить.
К бд обращаются несколько инстансов.
Seq? Таблица, которая инкрементирует счетчик? Что еще можно придумать?
311 2290442
>>284280
1. А сортировать за тебя Вася будет?
2. Нахуя тебе индексы для хеша (в оракле точно
http://www.dba-oracle.com/t_how_to_index_hash_join_operation.htm )

Если память позволяет и сортировать не надо, проще всегда хешем ебашить. Кейс, когда всё на всё надо, и при этом обе таблицы здоровые - ебать редко бывает.
312 2290446
>>287301
Тлдр: если хеш в память не помещается, то поместится по частям.
Если у тебя есть время на сортировки, значит и на хеш время будет.
313 2290766
>>290375
А если создать таблицу (id bigserial, time datetime, uid uuid) и дерево индекс по time.
А потом select count from xxx where date = текущий час, если результат подходит, то инсертить еще одну сущность, иначе ошибка. Это дорого получится?
314 2291240
>>290442

>Кейс, когда всё на всё надо, и при этом обе таблицы здоровые - ебать редко бывает.


Утенок, спок.
315 2291309
>>291240
Может попробовать перестать бессмысленную хуйню делать?

Такими темпами можно бизнесу 1 таблицу со всеми полями выводить и не ебаться.
316 2291656
>>282297

>Чтобы приблизиться к гордому званию программиста


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

Тащемта, я уже давненько занимаюсь быдлоговнокодингом года, эдак с две-тыщи-хуйнадцатого.

>тебе нужно изучить что такое ORM.


Да, я вижу схемы данных, в sqlite expert professional, но когда ебическое число таблица там, то хуй отследишь связи, они не помещаются уже, блядь, в экран.
Тем не менее, я вижу одинаковые паттерны, как-бы, и одинаковые куски из взаимосвязанных таблиц, в сложной схеме, поэтому и взбрела в башку, как-бы, вышеизложенная мысль. Проектирование баз данных, из таких модулей, чем-то напоминает мне соединение сложных схем из логических элементов. Чем-то похоже, но я пока не могу понять, именно, чем.
317 2291660
>>290261
А где его взять, и куда засунуть?
318 2292287
>>291660

>А где его взять


Из другой таблицы.

>куда засунуть


В таблицу.
319 2292552
Как правильно называется механизм расширения sql, когда в запросе указываются функции типа SELECT myFunc(x) FROM x? UDF? Шаблоны?
320 2292616
>>292552
В селекте можно вычислять выражения, а в выражении может быть что угодно, хоть вызов процедур и функций, умного названия у этого нет.
Реализация самих функций/процедур общего названия тоже не имеет, потому что не стандартизована и делается в разных СУБД по-разному, будь то "процедурные расширения SQL", UDF или что-то ещё.
321 2292837
>>292616
Добро, я тебя услышал.
322 2292844
>>292552
Тут ребятишки просто недавно в айти.
Когда это начало работать в Oracle, они назвали это pipelining functions.
image.png9 Кб, 565x283
323 2292991
>>292287
Спасибо, помогло.
324 2293078
>>290375
Таблица со счётчиком нормально, можно по дням партишнинг и дропать старые.
таблицы-articles.jpg33 Кб, 967x172
325 2294588
Подскажите как это делается SQL командой а дальше я уже сам
326 2294597
>>294588
Почти наверняка там где-то есть кнопка "Сгенерировать DDL", которая выдаст тебе готовую команду.
327 2295378
>>294588
Похоже на phpmyadmin. Найди там Экспорт и выбери sql. Открой как текст, и там где CREATE TABLE IF NOT EXISTS там эта таблица ебучая.
124.jpg109 Кб, 1440x767
328 2295919
Почему у меня нет поля дополнительно и по умолчанию?
1644760937.jpg40 Кб, 604x322
329 2296039
>>295919
Ты слепой блеат?
330 2296172
>>296039
У него тёмная тема. Вот и не видит нихуя.
331 2296620
Поясните за транзакционную модель и прочие вопросы на интервью для бэкендеров. Пиздец, работаю уже почти 10 лет, на пыхе клепаю говно всякое, а тут вдруг меня спросили, почему КОНКРЕТНО сбалансированное дерево, лежащее в основе индексов БД быстрее несбалансированного. Ну я и в лужу сел, конечно. Был посрамлён. Собираюсь изучать БАЗУ теперь.
332 2296634
>>296620
Чтобы O(log(N)) соблюдать. Например, если у тебя строится индекс по ID, который считается простым инкрементом, обычное дерево будет расти всё время вправо и будет по сути связным списком, поиск в котором за O(N). А так у тебя дерево каждый раз балансируется, и поиск будет намного быстрее.
333 2296682
>>296634
А если это GUID, например, то как оно балансируется? Ну или индекс из двух колонок с рандомными строками / числами.
334 2296702
>>296682
Через операцию сравнения.

> GUID


К примеру, лексикографически.

> индекс из двух колонок


Сначала сравнение по первой, а если равны, то по второй.
335 2296762
Олды
Я не понимаю, в чем проблема, данные в таблицы заносятся, но PHPAdmin не показывает их, не показывает структуру таблиц и ответ на mysql запросы.

Я посмотрел доступ у меня есть ко всему, пожалуйста, поясните.

Работаю на Wampserver
336 2296772
>>296762
Зашел с гугла в яндекс браузер все заработало, хуй поймешь.
337 2296774
Чё, пацаны, аниме?
kLBhhp73.gif63 Кб, 262x199
338 2299740
У меня платиновый вопрос, прошлый раз мне так и не ответили.
Какой индекс нужен если я планирую выбирать по data_start+data_end
339 2299811
>>299740

>Какой индекс нужен если я планирую выбирать по data_start+data_end


Если они в дате, а не в датетайм, то нужна партиция
340 2299846
>>299811
datetime
341 2299890
памагити, я попал в какой-то щизоидный загон!
одни спрашивают какие им индексы на все случаи жизни создать.
другие им отвечают невпопад.

Что тут происходит вообще?
Это такой уровень понимания баз данных у программистов?
342 2299902
>>299890
Тут фрондендеры которые лезут на бек
Создай стравполь strawpoll.com. Выяснишь что 90% программистов не знают теорию БД. Простенькие селекты максимум.
343 2299990
>>299890
Ты лучше спроси про уровни изоляции транзакций. Вангую, что 90% оподливятся в рейтузы, т.к. не понимают какой уровень изоляции выбрать, чтобы не положить прод при создании аккаунта, например.
344 2299997
>>299990
Read commited и блокировки.
345 2300004
о, теперь шизы узнали очередной единственно верный ответ - read commited.

ахуеть просто...прочь, прочь отсюда
346 2300006
Это и есть единственный верный ответ, иди нахуй.
347 2300008
Лол, удачи вам с рид комитед акуанты создавать.
348 2300036
>>300008
А что не таз? Представь пользовалель яросно дрочил кнопку sign-up. Создались две конкурирующие транзакции c одинаковым мейлом. В конце транзакции выполяют insert into users. При read commited транзакция закончившаяся первой вставит email в БД, другая при инсерте вставленое увидит и обламается, потому что на поле email установлено unique. Блокировки непричем.

мимо
349 2300350
>>299990
Read committed, естественно.
изображение.png80 Кб, 2103x1390
350 2300644
Надо получить трансформацию пикрелейтед:

Есть таблица с товарами каждому товару может соответствовать несколько локаций, мне надо не размножить товар по локациям, а все локации соответствующие одному товару поместить в строчку с товаром(можно либо в разные столбцы, либо в один, непринципиально), как это сделать?
351 2300888
>>299890

>Это такой уровень понимания баз данных у программистов?


Не проблема программистов, что в БД ходить в 2022-м можно только через строчные литералы или говно-ОРМ.
352 2300899
у
353 2301222
в программирование хочу вкатиться думаю выучить сначало C++ а потом SQL, норм идея для зароботка 300кк наносек?
354 2301284
>>301222
На плюсах много проектов, где вообще не используются реляционные СУБД. Изучать SQL нужно с чётким пониманием, что он тебе пригодится, иначе, если ты попасть на проект, где SQL не нужен, время будет потрачено впустую.
355 2301497
>>301284

>sql


>время, потраченное впустую


Звучит как "выбери одно", честно говоря. Но тут зависит от того, насколько глубоко спускаться в кроличью нору, если на уровне select * from movies, то это никогда не бывает бесполезно, если ты в принципе работаешь программистом, а если на уровне уровней изоляции и проброса предикатов, тогда да.
356 2302017
>>301222
чел ты совсем без мохгов в 22м20 вкатыватся через плюсы? Иди учи реакт и рисуй формочки. Тебе надо рынок труда для начала изучить, а не погромирование, валенок.
357 2303040
>>227895 (OP)
Есть где почитать про практики по переводу спредшитов в базы данных? Хочу какие-то направления посмотреть, обсуждения, не я же первый об этом подумал.
1645422158332.jpg85 Кб, 903x928
358 2303118
Бля, аноны, я получил оффер на Джуниор администратора бд, хотя у меня за спиной только книжка Грабера и 40 задач на скл ех.
Насколько реальные рабочие задачи отличаются от теории и головоломок? Чего ожидать? К чему гото6?
359 2303278
>>303040
нигде.

скажи кабанчику, что к использованию БигДаты и ИИ нужно 10 лет планомерно готовиться, как это произошло в X5, где в эксель прайс-лист просто не влезал, а не заебывать тебя экселем.

Нет никакой универсальной программы или методики
360 2303560
>>303278

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


>направления посмотреть, обсуждения


Че
361 2303593
>>303560
понятно, даун.
вот тебе код который ты искал:

import pandas as pd
df=pd.read_excel('123.xlsx')
df.to_sql()
362 2303688
>>303040
Ты в программировании вообще ни гу-гу? Это же элементарная задача.
Если это просто один файл, то читаем его построчно и помещаем данные в соответствующие колонки в БД, сохраняем.
Или у тебя куча файлов с перекрестными ссылками друг на друга? Тогда заебёшься просто парсить/записывать, нужно что-то типа CRM писать, либо готовую брать.
363 2303844
>>303688

>Или у тебя куча файлов с перекрестными ссылками друг на друга? Тогда заебёшься просто парсить/записывать, нужно что-то типа CRM писать, либо готовую брать.


О чём и разговор. Где про это почитать?
Но с пандасом мне ответ понравился. Чувствуется настоящий двачерский настрой.
364 2303963
>>303844
Если у тебя там реально вагон файлов, то тебе тот пчел правильно сказал: твой дон кабаньо – хитрожопый пидор, а ты – наивный долбоёб.
Что такое CRM можешь узнать у поисковика.
365 2305742
>>227895 (OP)
Подскажите, как лучше всего сделать базу данных наноборды. А то там вот такая ебанина в SQLite: https://github.com/username1565/nanoboard/blob/nanodb-sqlite/nanodb.exe-source/Database/nanodb.sqlite3.sql
Я уже сам запутался, блядь.
366 2305941
>>305742
В смысле как? Берёшь и переписываешь логику скулайтовых таблиц на условный постгрес. Если тебе ещё и данные перенести, то тут надо отдельный модуль на твоём любимом языке для миграции с одной бд в другую написать заодно. А если хочешь сделать форк с блэкджеком и шлюхами заместо бд, то и версирование этих миграций.
367 2306035
>>305941
А нафиг постгресс? Сиквелайт норм, но мне кажется я срукожопил с таблицами, оптимизировать бы структуру бд, штоле.
368 2306099
>>306035

>А нафиг постгресс?


Что ты там собрался оптимизировывать на скулайте? Он в конечном счёте синхронный, так что "оптимизировать" его можно только на уровне приложения.
369 2306617
>>306099
Я имею в виду саму бд, ну там таблички-хуички, я же как видишь в проектировании БД дуб дубом, блядь. Наплодил хуйни из кучи таблиц и запутался в ней, лол.
Снимок.JPG42 Кб, 916x272
370 2306891
Как мне из одной таблице получить такую матрицу
371 2307121
>>306891
все решил, ответ не нужон
372 2307125
>>307121
Обращайся.
373 2308019
>>307121
покеж решение
374 2308535
Ну что, господа базисты, релокейтится кто-нибудь куда-нибудь собирается?
375 2309605
>>308019
Кейсом создаешь агрегационное поле, потом по нему делаешь Group By, дальше всё тривиально.

select count(*), Date,
CASE
WHEN value = 0 THEN 0
WHEN value > 1 AND value < 10 THEN 1
ELSE 2
END AS Group_Count
Group by Group_Count, Date
16023989563701.jpg2,6 Мб, 3088x2048
376 2310355
>>227895 (OP)
Слушайте, я вот в методе бегу в базу за целой таблицей, а возвращаю из метода уже только 2 трети полей допустим. А можно брать из базы не целую таблицу, а сразу только нужные поля. Так вот, какой вариант лучше и почему?
377 2310359
>>310355
Конечно же, из базы не следует тащить лишнее, но если ты точно знаешь, что данных будет немного, можешь забить и тащить всё.
378 2310362
>>310359
Более высокая сложность запроса разве не повлияет на производительности? Или проще вытащить половину полей, чем все поля?
379 2310366
>>310362
Сложный запрос оптимизирует СУБД, а в коде ты будешь проделывать то же самое вручную + оверхед на перегонку данных из БД в твоё приложение.
380 2310517
>>310362

>Или проще вытащить половину полей, чем все поля?


В общем случае не сложнее. Хотя конечно никто не видел конкретно твой кейс, может у тебя данные отбираются не просто так, а с хитровыебанными неиндексированными условиями.
381 2310954
>>309605
Ты в какой субд запросы пишешь?
image.png52 Кб, 628x482
382 2311217
Как можно адекватно заполнить бдшку с пикрл на 10 000 строк?
К тому же не совсем понимаю как можно сгенерировать имена и фамилии... только если брать их из отдельного списка. Но если опустить этот момент и просто сделать заполнение рандомными символами
383 2311488
>>311217
На твоём любимом языке наверняка есть пакет для генерации имён и прочих значений.
384 2312158
Что такого есть в Oracle, что корпорации готовы платить за него?
385 2312166
>>311217

На питоне для этого есть целая отдельная библиотека https://faker.readthedocs.io/en/master/
1646735426763.jpg51 Кб, 1280x435
386 2312883
Аноны, помогите с этой хуйней, умоляю...
387 2312891
>>312883
По-моему тут через оконные функции sql делать надо
388 2312892
>>312891
Здесь 4 значения только вывести нужно, по условию задачи, оконные не подходят, ну или у меня не хватает ума для этого
389 2312988
>>312883
СУБД какая? Надо получить номер строки в подзапросе, если я это сделаю средствами оракла, а у тебя постгря например - тебя обоссут.
390 2313073
>>312988
Мускул
391 2313087
>>313073
Я придумал как можно без оконок изъебнуться.

with p_numbered as
(select p1.PeriodID,count(p2.period_id) num,avg(Value) Value from from period_table p1 join period_table p2 on p2.period_id<=p1.period_id group by p1.Period_id)
select pn2.Period_id from p_numbered pn1 join p_numbered p2 on pn2.num=pn1.num-1 where not pn2.Value=pn1.Value
392 2313089
Ну шо аноны, никому ЕТЛ инженер ненужен, за релокей из рашки и еду?
393 2313283
>>312883
>>313087
А вот так эту х-ню нельзя написать?
select value_1
(select Period_id, value as value_1, lag(value) over(order by Period_id) as value_2
from table) as a
where value_1<> value
394 2313290
>>313283
Точнее вот так
with table1 as
(
select 1 Period_id, 10 value union all
select 3, 10 union all
select 5, 20 union all
select 6, 20 union all
select 7, 10 union all
select 9, 40 union all
select 10, 40
)
select Period_id
from
(
select Period_id, value as value_1, coalesce(lag(value) over (order by Period_id), 123456) as value_2
from table1
) as a
where value_1 <> value_2
yoba.png10 Кб, 225x225
395 2313338
Ораклисты, а чем вы сейчас занимаетесь? Собираете бутылки? Работаете охранниками в "Пятерочке"? Учите 1С?
396 2313341
>>313338
Ничего не изменилось, как ебались с ораклом, так и ебёмся.
397 2313377
>>313087
>>313290
>>313290
Мускул не умеет в with, ну точнее до 8.0 не умел. Короче, я хуй знает как решить эту ебанину на скл, ничего лучше, чем сделать это в две строчке на питоне я не придумал.
Может и к лучшему, что я провалил этот собес, задача абсолютно не склевская.
398 2313382
>>313377
Так а что тебе мешало вместо with скопипастить эту залупу 2 раза?
399 2313477
>>311217
Есть такая хуйня
Filldb.info, видел аналоги, но гуглить лень. Там интуитивно понятно.
400 2313577
Бля, как заебали на собесах с вопросом "чем отличается датамаппер от эктив рекорд"...
401 2313599
>>313577
А чем же?
402 2313604
>>313599
Активе рекорд - это когда в один класс свалили дата маппер, саму сущность и связанную с ней бизнес-логику в лучших традициях ООП, где собака сама умеет лаять.
403 2313653
Господа, помогите!
Есть задача вывести из базы имя пользователя и его последний комментарий. Работающее решение получилось
https://sqltest.net/#1649233
но мне не нравится что блок кода повторяется.
Как это можно сократить? Если пытаюсь в SELECT MAX(id) FROM ... вставить вместо кода алиас comm он пишет что "Table 'sqltest_tmp_db.comm' doesn't exist"
404 2313699
пацаны, в универе закончился семестр DB, было весело и интересно. Мне зашло. Какие есть варианты дальше в этом направлении катиться?
Реально ли найти потом работу по этому направлению или базы данных - это лишь вишенка к какому-нибудь торту из разработки и сисадминства?
405 2313706
>>313699
Скорее всего когда выкатишься из универа, то из вакансий будут только полусисадминские РАБотки за мелкий прайс в рублях.
406 2313708
>>313706
understandable have a nice day, как говорится
А если по делу?
407 2313886
>>313699
Скинь какие-нибудь методички/список обзорной литературы, чтобы на собеседованиях на бэенд не обсираться.
408 2313927
>>313699
Чел либо учи иностранный язык украинский либо переквалифицируйся в каменьщика
(Автор этого поста был забанен. Помянем.)
409 2313964
>>313927
What happened to English though?
Спикаю, спикаю, на 8 баллов IELTS пару лет назад было
Дальше-то что?
sage 410 2313974
>>313927
Чел, либо съеби, либо перестань срать не по делу. Зарепортил.
411 2313988
>>313964
Дальше либо аналитик либо разработчик sql, как правильно вакансии в банках.
412 2313992
>>313988
Аналитик звучит круто!
Big Data, Data mining - это туда же? Что читать, чему учиться?
413 2313996
>>313653

Господа специалисты, вы тут?
414 2314187
>>313992
Питон учи.
415 2314229
>>313964
чо ж ты учиться не уехал взагран, раз такой весь умненький и аелтс есть?
эх, ты...
416 2314233
>>314229
хотел ехать в магу. Теперь не могу :)
эх жизнь...
6117307828.jpg595 Кб, 841x1200
417 2317041
А че там случилось с sql.ru и nosql.ru ?

Больше негде спросить
418 2317064
>>317041
Геополитические причины случилось.
419 2317074
>>317064
это понятно, но что конкретно?
их дудосят украинцы?
Немецкий пидорашка Деда хотя бы съебался?
420 2318628
>>313341
Пиратскими версиями пользуетесь что ли?
421 2318630
>>317074

>их дудосят украинцы?


Вероятно. Форум rsdn.org периодически лежит. Хотя на sql.ru вроде закрыли политический раздел, что не нравится хохлам?
422 2318642
>>318630

> >sql.ru


> закрыли политический раздел


Весь сайт что ли политический раздел?
423 2318867
Прошу помощи с запросом, вот к примеру запрос который выводит записи мне нужно дописать, чтобы те записи у которых один flight_id и flight_date соединялись, к примеру скринах видно flight_id = 39 и flight_date = '2017-06-01 12:05:00' таких записи 3, должна получиться 1 где будет qty(quantity) = 7, соедениться коды уникальные через запятую, то есть iata_code = CHM01,CHM11R1 и result_price = 6 119,23
image.png99 Кб, 556x340
424 2319447
>>227895 (OP)
Аноны, есть задача по пику:

Вывести имена сотрудников и количество их подчиненных, у которых в подчинении более 10 человек.

И решение:

select e1.name, count(1) from employee e1 join employee e2 on e1.ID=e2.chief_id group by e1.id, e1.name having count(e1.id) > 3

Объясните, пожалуйста, что за e1? Почему тут просиходит объединение одной и той же таблицы from employee e1 join employee e2? Или что это вообще значит?
425 2319879
Как MySQL хранит дату? Под нее отведено 4 байта. В последних двух хранится правильно день и месяц, а в первых двух не то, например, 2002-08-31 хранится как 210, 15, 8, 31.
2003-12-22 хранится как 211, 15, 12, 22.
Что за кодировка для года?
Мне нужно распарсить дату из сырых байтов в проге, не хочу писать "UNIX_TIMESTAMP(имя поля)".
426 2320803
Периодически отвечал анонам и решал задачи, и перекатывал тхреад, скажите спасибо этому пидору-вахтёру, лучше посижу в програмаче.
>>313974
427 2320811
>>320803
Вахтёр няша и всё правильно сделал, следи за языком, периодический ты наш.
sage 428 2320826
еос - есть один скрипт. Суть такова - в двух таблицах встречаются 3 юнита, он считает сколько раз они там встречаются и выводит те, которые встречаются больше заданного числа раз. И вот я решил добавить четвертый и мне надо корректировать скрипт. Как переписать его чтобы не хардкодить названия юнитов?

select * from (
select sum(count), 'one' as unit from (
select count(unit), 'one' as unit from test1 where unit = 'ONE'
union all
select count(unit), 'one' as unit from test2 where unit = 'ONE'
) as i
union
select sum(count), 'two' as unit from (
select count(unit), 'two' as unit from test1 where unit = 'TWO'
union all
select count(unit), 'two' as unit from test2 where unit = 'TWO'
) as j
union
select sum(count), 'three' as unit from (
select count(unit), 'three' as unit from test1 where unit = 'THREE'
union all
select count(unit), 'three' as unit from test2 where unit = 'THREE'
) as k
) as u where u.sum > 6
sage 429 2320827
еос - есть один скрипт. Суть такова - в двух таблицах встречаются 3 юнита, он считает сколько раз они там встречаются и выводит те, которые встречаются больше заданного числа раз. И вот я решил добавить четвертый и мне надо корректировать скрипт. Как переписать его чтобы не хардкодить названия юнитов?

select * from (
select sum(count), 'one' as unit from (
select count(unit), 'one' as unit from test1 where unit = 'ONE'
union all
select count(unit), 'one' as unit from test2 where unit = 'ONE'
) as i
union
select sum(count), 'two' as unit from (
select count(unit), 'two' as unit from test1 where unit = 'TWO'
union all
select count(unit), 'two' as unit from test2 where unit = 'TWO'
) as j
union
select sum(count), 'three' as unit from (
select count(unit), 'three' as unit from test1 where unit = 'THREE'
union all
select count(unit), 'three' as unit from test2 where unit = 'THREE'
) as k
) as u where u.sum > 6
sage 430 2320828
>>320827
>>320826
абу мать ебал
16067306032200.jpg92 Кб, 604x503
431 2320829
>>320811
Так вахтёр то анону так и не ответил, а я начал, но не успел прилетал фаршмарк от абу. Тхред и так почти сдох, и ещё вахтёры, ну раз вам ок, аривидерчи.
432 2321250
Есть тут умельцы в оракловскую хуйню?
В общем дело такое, есть процедура которая добавляет запись, у нее поле с созданным айдишником IN/OUT, значит она по идее должна я его возвращать.
Если принтить его через DBMS, то всё ок. Вопрос в другом, мне нужно чтобы после выполнения процедуры вернулась запись с этим айдишником.
SELECT между Begin и End использовать не дает, returning к процедурам не применим, я хуй знает что блять делать
433 2321506
>>319879
лечиться тебе надо.
если только ты не пишешь тулзу по восстановлению данных.
435 2322510
>>321506
Зачем мне лечиться? Я пишу на плюсах, поэтому у меня был выбор либо писать селект для каждой таблицы и захардкодить названия полей, либо написать селект для всех таблиц и предусмотреть функцию, которая распарсит дату потом.
>>321586
Я уже решил проблему виновата библиотека плюсовая, а не mysql, в самой бд дата это три инта, но спасибо
436 2322530
>>322510
Названия столбцов*
кому не похуй
437 2323678
>>322510
а я тебе говорю, лечиться

https://dev.mysql.com/doc/refman/5.6/en/libmysqld.html
438 2323849
psycopg2.errors.InFailedSqlTransaction: current transaction is aborted, commands ignored until end of transaction block

как лечить?
439 2323937
>>323849
Отлаливать ошибку и обрабатывать её.
image.png34 Кб, 1264x304
440 2324021
iRetnhHOl4.jpg582 Кб, 1440x1800
441 2324022
Ребят, такой вопрос. Есть бд на монго, крутится локально. Написал приложение не ноде, хочу все упаковать в контейнер, вопрос - как из контейнерной бд подрубиться к локальной? Я понял что надо делать том, но как в этот том запихнуть существующие данные?
442 2324026
>>324021
Ты случайно не из тех, кто учит питон для того, чтобы написать на нём бота для телеги?

Параметры в execute передаются не так. Вместо параметров ты должен писать %s, а вторым аргументом передать массив со значениями, и они поставляются в запрос сами.

> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", [100, "abcdef"])

443 2324049
>>324026

>Ты случайно не из тех, кто учит питон для того, чтобы написать на нём бота для телеги?


да

> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", [100, "abcdef"])


спасибо!
444 2324175
>>324049
Что за бот? Что делать будет?
445 2324215
>>324175
Рассылать правду о войне в Украине.
446 2324249
>>324215
это сродни разговора со стеной, да и я слишком ссу подобным заниматься. Бот уже рабочий для нужд университета, просто надо было базу прикрутить
447 2324671
На какую субд лучше всего начинать придрачиваться допом, если до этого дело имел только с MS SQL и СОВСЕМ чучуть с мускулом в студенческие годы?
448 2324701
>>324671
Очевидный постгрес.
449 2324749
>>324249
Ты не понял. Рассылать от имени заказанных акков, а потом сразу донос в гебню.
Сажаю русню на 15 лет за смешные деньги.
450 2324880
как удалить все ячейки в базе, подходящие под условие, а не только одну? У меня две одинаковых ячейки и удалилась только одна

>cur.execute("DELETE from users where chat_id=(%s) AND (button=(%s) OR floor=(%s) OR room=(%s) OR typeofproblem=(%s))", [message.chat.id, 'text', 1, 'text', 'text'])

451 2324918
>>324880
Как это у тебя две одинаковых ячейки?
image.png6 Кб, 482x49
452 2324921
>>324918
где? Разные, только данные в них могут быть одинаковые в виде сообщения "text"
image.png54 Кб, 768x522
453 2324922
>>324918
а, ты про это, вот они
454 2324923
>>324921
>>324922
>>324918
>>324880
а блять там айди сообщения другой, всё ок, забейте
455 2324989
>>324701
Чому очевидный? Там охуеть какое сходство с МСом?
456 2325000
>>324989
Смешно.
457 2325955
Cап двач, вкатываюсь в oracle sql и пришел к вам с просьбой
о помощи в решении задачки. Понимаю что нужно использовать конструкцию execute immediate и возможно задать loop через неявный курсор, но пока опыта мало в PL/SQL и осилить задачу не могу, буду благодарен если поможете разобраться.

Необходимо Во всех таблицах и вьюшках текущей схемы найти первые по алфавиту столбцы среди столбцов, имеющих типы данных не BLOB и не CLOB.
Найти минимальное значение, хранящееся в таком первом по алфавиту столбце каждой таблицы или вьюшки, привести его к строковому типу данных (в формате по умолчанию).
С помощью анонимного блока вывести в dbms_output отчёт о таблицах о вьюшках, их первых по алфавиту столбцах и минимальных значениях в этих столбцах.
Не использовать вспомогательных таблиц (не делать create table).
Минимальные значения столбцов следует определять непосредственно запросом к каждой таблице.
458 2325973
>>325955

>вкатываюсь в oracle sql


зойчем?
459 2326005
>>325955

> вкатываюсь в oracle sql


Ахахахах, ты че, ебанутый, они же тютю из РФ, все на попенсорсы переходят и отказываются от оракла.
Посвятил этой хуйне лучшие годы жизни, кстати, так что слушай.

>Во всех таблицах и вьюшках текущей схемы


Достаточно представления user_tab_columns, там сразу и с вьюх и с таблиц столбцы.

>первые по алфавиту столбцы среди столбцов, имеющих типы данных не BLOB и не CLOB.


min(case when data_type not in ('CLOB', 'BLOB') then column_name end)
group by table_name
Собственно, по полученной инфе ты слепишь селект вида «таблица — первый по алфавиту столбец».
Далее начинается pl sql часть

declare
v_str varchar2(32767);
begin
for z in (тут селект из прошлого пункта) loop
execute immediate 'select to_char(min('||z.column_name||')) from '||z.table_name into v_str;
dbms_output.put_line(v_str);
end loop;
end;

Был рад помочь, но на уточняющие вопросы не отвечу.
Все писано по памяти и не проверено в жизни, может быть придется немного погуглить.
Пока.
image.png304 Кб, 2854x825
460 2326302
Почему база не заливается на хероку? Использовал этот гайд https://www.educative.io/edpresso/how-to-push-a-local-postgresql-database-to-heroku
461 2326320
>>326302
а бля там кавычки <> не нужны
462 2326387
Блять, создал бд на хероку, экспортровал туда по этой >>326302
инструкции локальную базу (пикрил 2), с локальной базой код спокойно работал, а сейчас когда я вставил туда новый хост, пароль и имя бд (пикрил 2) на хероку бот не работает. Также если попытаться к бд на хероку подключиться с pgAdmin4, то там высвечиваются какие-то тысячи баз (пикрил 3) и все при попытке открытия выдают какую-то ошибку подключения (пикрил 4).
Как можно наиболее быстро решить проблему?
463 2326398
Есть таблицы Channel, User, Video, UserVideo.
UserVideo содержит записи о том, что конкретный юзер уже посмотрел конкретное видео.
Пик1 запрос выводит все видео на канале 666, "отмечая" среди них те, которые юзер 5 уже посомтрел.

Но как написать запрос, если нет айди юзера, а есть его юзернейм? Пытаюсь что-то типа пик2, но выводит только те видео, которые посмотрел юзер, не выводя все видео канала целиком.

SELECT FROM "Channel" c
LEFT JOIN "Video" v ON v.channel_id = c.channel_id
LEFT JOIN "UserVideo" uv ON uv.video_id = v.video_id
AND uv.user_id = 5
WHERE c.channel_id = 666
464 2326410
>>326387
смог подключиться через pgadmin благодаря этим ответам
https://stackoverflow.com/questions/11769860/connect-to-a-heroku-database-with-pgadmin
https://stackoverflow.com/questions/12663639/how-to-hide-databases-that-i-am-not-allowed-to-access/13298802#13298802
Понял, что на хероку моя локальная база экспортировалась нормально, тогда я совсем не понимаю почему у меня на компе к базе всё нормально подключается, а на хероку нет
image.png143 Кб, 1092x490
465 2326424
>>326398
Это норм чи ни?

SELECT * FROM "Channel" c
LEFT JOIN "User" u ON u.user_id = 5
LEFT JOIN "Video" v ON v.channel_id = c.channel_id
LEFT JOIN "UserVideo" uv ON uv.video_id = v.video_id
AND u.username = 'alex'
WHERE c.channel_id = 666
466 2326471
>>326410
короче с ноута к базе хероку подключиться получается, а если запускать бота на самом хероку то бот не работает почему-то, без базы работает и на ноуте и на хероку
467 2326496
>>326471
>>326410
>>326387
сука я просто забыл добавить в зависимости библиотеку psycopg2 для баз
468 2326524
Всем привет! Очень нужна помощь, нужно сделать скрипт который генерит много строк и есть одно поле в котором помимо букв есть важный айдишник (например 'Сделка NO-1488') и нужно чтобы он инкрементировался каждую итерацию на +1 от максимального числа в таблице. Вопрос как это можно реализовать?
insert into
table_name (work_id)
values (select max(work_id)+1 from table_name)
Не работает из-за того что строка(
469 2326719
>>326524
строку в число переведи просто
470 2326793
>>326719
Как это поможет? Тут сам столбец с типом varchar, или расскажи поподробнее.
изображение.png49 Кб, 1726x175
471 2327249
Помогите пожалуйста, поставил pgadmin4 на свою виртуалку, ( виртуалка на Hyper-v , debian).
мне он пишет - веб морда доступна по http://127.0.0.1/pgadmin4, но она недоступна! Из моего компа, на котором виртуалка крутится.
Как можно сделать так чтобы была доступна?
И как можно адрес поменять веб морды?
И как сделать чтобы эта веб морда была доступна из интернета?

Помогите пожалуйста.
472 2327296
>>327249
ну и залупа. Слишком много вариантов сломаться, чтобы угадать какой у тебя.
у меня, конечно, все работает в этой конфигурации, но я то Tier V Senior Devops. А у тебя не заработает.

может ты лучше docker desktop поставишь? там хотя бы все вопрос с маппингом портов не стоит, тк 127.0.0.1 по сути общий.

Кстати, чтобы подключиться ИЗ докера к сервису на компе, надо не "localhost:5432 указывать, а "host.docker.internal:5432"
473 2327297
>>327249
Найди в конфиге это
DEFAULT_SERVER = '127.0.0.1'
замени на
DEFAULT_SERVER = '0.0.0.0'
474 2327312
>>327296
>>327297
Вы хотя-бы примерно почувствовать можете название конфига в котором этот дефаулт сервер может быть?
475 2328976
>>227895 (OP)
Аноны, помогите, ебусь с этими базами целый день, как удалить все партиционирование с таблицы ? Так же, нужно еще б в INFORMATION_SCHEMA.PARTITIONS актуализировать данные, так как они почему-то не показывают правильно значение в TABLE_ROWS
476 2329057
>>328976
Смержи все партиции в одну.
477 2330170
Сап, аноны. Есть 5 mysql бэкапов, но при загрузке каждого руется на разную строку с ошибкой ERROR 1824 (HY000) at line 2: Failed to open the referenced table ИМЯ ТАБЛИЦЫ
Что ему нужно? Я не разбираюсь в БД
478 2330221
Объясните, почему когда я ставил postgreSQL на винде, то всё удалось сделать с помощью мастера установки и затем pgAdmin. Сейчас попробовал то же сделать в линукс и у меня жопа сгорела: pgAdmin калечная, в которой вырезано половина функционала, а в качестве замены надо в консоли вводить всё. У создателей postgreSQL какое-то негативное отношение к линуксам?
479 2330281
>>330170
Открыл базу в воркбенче, удалил ключи по другим таблицам. Там всего одна таблица грузилась на каждый бэкап. Все заработало.
480 2330326
>>330221
так подключайся через админ с винды, в чем проблема?
481 2330762
>>330221
Ты, похоже pgadmin разных версий попутал.
Был pgadmin3 , а сейчас парашный pgadmin4.

Впрочем, я ими обоими не пользуюсь.
482 2331811
Аноны, приветствую.
Где можно найти бд или эксельку с улицами и районами Москвы?
483 2332407
>>331811
туточки https://fias.nalog.ru/Updates

А потом просто нужно...
Выберите любую ячейку в диапазоне данных. Выберите Фильтр> данных. Выберите Текстовые фильтры или Числовое фильтры, а затем выберите сравнение, например Между. Введите условия фильтрации и нажмите кнопку ОК.

Выбери жизнь. Выбери работу. Выбери карьеру. Выбери семью. Выбери телевизор с большим экраном. Выбери стиральную машину,
484 2332614
что читать современное для в ката в sql? талмуд - что это за слово типо воды много?
485 2332615
>>332614
Талмуд - это когда тысяча страниц.
е4645656776568.jpg8 Кб, 214x235
486 2332617
>>332614

>талмуд - что это за слово типо воды много?

487 2332623
>>332614
делай задачки на sql-ex, там же есть подсказки
b7a05c01e2ab5ba1d7d9df1c07f4054e-imagejpeg.jpg35 Кб, 472x764
488 2333967
В запросе кучу-кучу раз использую конструкцию типа

where колонка in ('aa', 'bb', 'cc')

При этом содержание скобок везде одинаковое. Из-за этого запрос выглядит громоздко и его неудобно править.

Как мне в начале запроса один раз привести этот список, а далее просто на него ссылаться?

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

CREATE TEMPORARY TABLE code_table_temp(code_temp VARCHAR(80));
INSERT INTO code_table_temp VALUES
('aa'),
('bb'),
('cc)
...
...
...
with code as (select code_temp as code from code_table_temp)
select sum(case when колонка not in (select code from code) then...
489 2334039
>>333967
with code as (select 'aa' as cd from dual
union
select 'bb' as cd from dual
union
select 'cc' as cd from dual
)
попробуй так
490 2334147
>>333967
Интерполяцией строк должно заниматься приложение, а не БД.
491 2334285
>>334039
Можешь в двух словах пояснить, что это и чем отличается от описанного выше способа, пожалуйста?
>>334147

>Интерполяцией строк должно заниматься приложение, а не БД.


Да какое там приложение, я просто запросы для статистики делаю.
Если бы я это внутри какого-нибудь скрипта делал (что не умею), то там бы было понятно, как подстановку переменных сделать вместо тупого копирования.
492 2334366
>>334285

>Можешь в двух словах пояснить, что это и чем отличается от описанного выше способа, пожалуйста?


Что вызывает вопрос, union? Просто загугли чел, это база, источников миллиард. Идея была в том чтобы не создавать таблицу, я даже не ебу даст ли это какой-то эффект.
493 2335496
У меня вопрос к метрам Синьёры-помидоры на месте?
При использование SELECT ... INTO, строки вставляются в строгом порядке, или согласно именам, т.е. если мы хотим поменять порядок вставки, нужно менять алиас или порядок колонок в селекте?
494 2335894
Query result:
+----+---------+----------+
| Id | name_id | position |
+----+---------+----------+
| 1 | 1 | Master |
| 2 | 2 | Slave |
| 3 | 3 | Dude |
| 4 | 4 | Killer |
| 5 | 5 | Master |
| 6 | 5 | Dude |
| 7 | 6 | Slave |
| 8 | 3 | Master |
+----+---------+----------+
Affected rows: 8

Query result:
+----+---------+-----+
| Id | Name | Old |
+----+---------+-----+
| 1 | Tom | 12 |
| 2 | Lucy | 99 |
| 3 | Frank | 20 |
| 4 | Jane | 99 |
| 5 | Robert | 1 |
| 6 | Session | 20 |
+----+---------+-----+
Affected rows: 6

Query result:
+---------+-----+--------------------------+
| Name | Old | GROUP_CONCAT(s.position) |
+---------+-----+--------------------------+
| Jane | 99 | Killer |
| Lucy | 99 | Slave |
| Frank | 20 | Master,Dude |
| Session | 20 | Slave |
| Robert | 1 | Dude,Master |
+---------+-----+--------------------------+
Affected rows: 5

Есть две таблички, я их джойню, необходимо выбрать имя, возраст и роль всех одногодок.

SELECT n.Name, n.Old, GROUP_CONCAT(s.position)
FROM NAMES n
LEFT JOIN STATS s
ON n.Id = s.name_id

GROUP BY n.Name, n.Old
HAVING n.Old IN (

SELECT names.Old
FROM NAMES names
LEFT JOIN STATS stats
ON names.Id = stats.name_id
GROUP BY names.Old
HAVING COUNT(names.Old) > 1
)
ORDER BY n.Old DESC;

Но у меня выходит нечто громоздкое + если один и тот же человек встречается дважды - он становится одногодкой с самим собой.
Есть ли способ решить задачу, используя всего один селект? Предполагаю, копать надо в сторону селфджойна уже сделанного джойна?

SELECT * JOIN выглядит следующим образом

Query result:
+----+---------+-----+----+---------+----------+
| Id | Name | Old | Id | name_id | position |
+----+---------+-----+----+---------+----------+
| 1 | Tom | 12 | 1 | 1 | Master |
| 2 | Lucy | 99 | 2 | 2 | Slave |
| 3 | Frank | 20 | 8 | 3 | Master |
| 3 | Frank | 20 | 3 | 3 | Dude |
| 4 | Jane | 99 | 4 | 4 | Killer |
| 5 | Robert | 1 | 6 | 5 | Dude |
| 5 | Robert | 1 | 5 | 5 | Master |
| 6 | Session | 20 | 7 | 6 | Slave |
+----+---------+-----+----+---------+----------+
Affected rows: 8

Помогите, я в тупике
494 2335894
Query result:
+----+---------+----------+
| Id | name_id | position |
+----+---------+----------+
| 1 | 1 | Master |
| 2 | 2 | Slave |
| 3 | 3 | Dude |
| 4 | 4 | Killer |
| 5 | 5 | Master |
| 6 | 5 | Dude |
| 7 | 6 | Slave |
| 8 | 3 | Master |
+----+---------+----------+
Affected rows: 8

Query result:
+----+---------+-----+
| Id | Name | Old |
+----+---------+-----+
| 1 | Tom | 12 |
| 2 | Lucy | 99 |
| 3 | Frank | 20 |
| 4 | Jane | 99 |
| 5 | Robert | 1 |
| 6 | Session | 20 |
+----+---------+-----+
Affected rows: 6

Query result:
+---------+-----+--------------------------+
| Name | Old | GROUP_CONCAT(s.position) |
+---------+-----+--------------------------+
| Jane | 99 | Killer |
| Lucy | 99 | Slave |
| Frank | 20 | Master,Dude |
| Session | 20 | Slave |
| Robert | 1 | Dude,Master |
+---------+-----+--------------------------+
Affected rows: 5

Есть две таблички, я их джойню, необходимо выбрать имя, возраст и роль всех одногодок.

SELECT n.Name, n.Old, GROUP_CONCAT(s.position)
FROM NAMES n
LEFT JOIN STATS s
ON n.Id = s.name_id

GROUP BY n.Name, n.Old
HAVING n.Old IN (

SELECT names.Old
FROM NAMES names
LEFT JOIN STATS stats
ON names.Id = stats.name_id
GROUP BY names.Old
HAVING COUNT(names.Old) > 1
)
ORDER BY n.Old DESC;

Но у меня выходит нечто громоздкое + если один и тот же человек встречается дважды - он становится одногодкой с самим собой.
Есть ли способ решить задачу, используя всего один селект? Предполагаю, копать надо в сторону селфджойна уже сделанного джойна?

SELECT * JOIN выглядит следующим образом

Query result:
+----+---------+-----+----+---------+----------+
| Id | Name | Old | Id | name_id | position |
+----+---------+-----+----+---------+----------+
| 1 | Tom | 12 | 1 | 1 | Master |
| 2 | Lucy | 99 | 2 | 2 | Slave |
| 3 | Frank | 20 | 8 | 3 | Master |
| 3 | Frank | 20 | 3 | 3 | Dude |
| 4 | Jane | 99 | 4 | 4 | Killer |
| 5 | Robert | 1 | 6 | 5 | Dude |
| 5 | Robert | 1 | 5 | 5 | Master |
| 6 | Session | 20 | 7 | 6 | Slave |
+----+---------+-----+----+---------+----------+
Affected rows: 8

Помогите, я в тупике
495 2335896
>>335894

Запрос, если надо кому потыкать

CREATE TABLE NAMES(
Id integer PRIMARY KEY,
Name text,
Old integer
);

CREATE TABLE STATS(
Id integer PRIMARY KEY,
name_id integer,
position text
);

/ Create few records in this table /
INSERT INTO NAMES VALUES(1,'Tom', 12);
INSERT INTO NAMES VALUES(2,'Lucy', 99);
INSERT INTO NAMES VALUES(3,'Frank', 20);
INSERT INTO NAMES VALUES(4,'Jane', 99);
INSERT INTO NAMES VALUES(5,'Robert', 1);
INSERT INTO NAMES VALUES(6,'Session', 20);

INSERT INTO STATS VALUES(1, 1, "Master");
INSERT INTO STATS VALUES(2, 2, "Slave");
INSERT INTO STATS VALUES(3, 3, "Dude");
INSERT INTO STATS VALUES(8, 3, "Master");
INSERT INTO STATS VALUES(4, 4, "Killer");
INSERT INTO STATS VALUES(5, 5, "Master");
INSERT INTO STATS VALUES(6, 5, "Dude");
INSERT INTO STATS VALUES(7, 6, "Slave");

SELECT FROM STATS;
SELECT
FROM NAMES;

SELECT n.Name, n.Old, GROUP_CONCAT(s.position)
FROM NAMES n
LEFT JOIN STATS s
ON n.Id = s.name_id

GROUP BY n.Name, n.Old
HAVING n.Old IN (

SELECT names.Old
FROM NAMES names
LEFT JOIN STATS stats
ON names.Id = stats.name_id
GROUP BY names.Old
HAVING COUNT(names.Old) > 1
)
ORDER BY n.Old DESC;
495 2335896
>>335894

Запрос, если надо кому потыкать

CREATE TABLE NAMES(
Id integer PRIMARY KEY,
Name text,
Old integer
);

CREATE TABLE STATS(
Id integer PRIMARY KEY,
name_id integer,
position text
);

/ Create few records in this table /
INSERT INTO NAMES VALUES(1,'Tom', 12);
INSERT INTO NAMES VALUES(2,'Lucy', 99);
INSERT INTO NAMES VALUES(3,'Frank', 20);
INSERT INTO NAMES VALUES(4,'Jane', 99);
INSERT INTO NAMES VALUES(5,'Robert', 1);
INSERT INTO NAMES VALUES(6,'Session', 20);

INSERT INTO STATS VALUES(1, 1, "Master");
INSERT INTO STATS VALUES(2, 2, "Slave");
INSERT INTO STATS VALUES(3, 3, "Dude");
INSERT INTO STATS VALUES(8, 3, "Master");
INSERT INTO STATS VALUES(4, 4, "Killer");
INSERT INTO STATS VALUES(5, 5, "Master");
INSERT INTO STATS VALUES(6, 5, "Dude");
INSERT INTO STATS VALUES(7, 6, "Slave");

SELECT FROM STATS;
SELECT
FROM NAMES;

SELECT n.Name, n.Old, GROUP_CONCAT(s.position)
FROM NAMES n
LEFT JOIN STATS s
ON n.Id = s.name_id

GROUP BY n.Name, n.Old
HAVING n.Old IN (

SELECT names.Old
FROM NAMES names
LEFT JOIN STATS stats
ON names.Id = stats.name_id
GROUP BY names.Old
HAVING COUNT(names.Old) > 1
)
ORDER BY n.Old DESC;
496 2335962
>>335496
ты ебанутый? в SQL, как в практической реализации реляционной теории, не существует такого понятия как "порядок строк".

Как там оно вставляется ебать тебя не должно. Не используй это словосочетание.

В этом был смысл создания SQL и СУБД.

Но ты можешь написать к любому выражению ORDER BY.
497 2336011
Думаю использовать enum. Какие подводные?
498 2336015
>>336011
Если у тебя оракл, придётся отказаться от этой мысли.
2022-04-1423-11.png11 Кб, 420x93
499 2336033
>>335896
Решил сам в итоге селфджойном, красота. Теперь осталось только EXPLAIN потыкать и мб слоулогом
500 2336078
>>336015
В ORM же есть... пусть и создаёт строку с наиболее длинным значением
501 2336708
почему нельзя всё в одной таблице все данные держать, зачем их множить? так будет быстрее выполняться запрос?
502 2336710
я про join
503 2336723
>>336708
>>336710
Читай про нормализацию и денормализацию.
Если всё держать в одной таблице, некоторые селекты могут ускориться, но всё остальное замедлится.
sage # OP 504 2336744
ПЕРЕКАТ >>2336742 (OP)
ПЕРЕКАТ >>2336742 (OP)
ПЕРЕКАТ >>2336742 (OP)
ПЕРЕКАТ >>2336742 (OP)
ПЕРЕКАТ >>2336742 (OP)
505 2347853
>>264173
Они сами не знают
506 2353273
>>336708
Если у тебя огромная таблица где много повторяющихся данных то изменения в этой таблице начнут занимать слишком много времени.
Тред утонул или удален.
Это копия, сохраненная 5 августа 2022 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски