Этого треда уже нет.
Это копия, сохраненная 12 мая 2018 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
15014010310850.jpg109 Кб, 1061x973
ЕДИНЫЙ БАЗ ДАННЫХ ТРЕД 1086747 В конец треда | Веб
И снова это неиндексированный баз данных тред!
Тут мы решаем ультраважные вопросы о том, как правильно хранить динамические атрибуты сущностей: в полях или в строках,
Рассказываем, как работаем аналитиками и мечтаем стать разработчиками,
Строим АНАЛИТИЧЕСКИЕ отчеты в экселе, выгружая по миллиону строк, а потом фильтруя,
Дружно не понимаем, ЗОЧЕМ ЖИ НУЖИН ОЛАП, ЕСЛИ И ТАК ВСЕ РАБОТАЕТ ЗАЕБИСЯ,
Ищем ошибки в аббривиатурах MDX DMX XMLA,
Доебываемся до эс - ку - элей наших же потенциальных конкурентов

>Select id from tbl_table_with_id where id = (select max(id) from tbl_table_with_id)


>ЧТО НЕ ТАК-ТО У МЕНЯ?


Удивляемся, как за знания, приобретаемые за 4 месяца на sql-ex, могут платить по 100к, и бугуртим, что ниасилили и 100к не получаем.
А так же:
Постгре или постгрес?
Май эс ку эль или мускуль?
Эс ку эль или сиквел?

В общем, это очередной баз данных тред, поехали!

Награда светит не посмертною медалью, отнюдь
Это храм старого формата, так предали огню
И скоптили небо старики, что слышны с Невской реки
Мы видим дым от костра - "Да здравствуют базовики!"


#sql #бд #базы данных
2 1087057
Почему у вас нет гайдо-шапки? Хочу подтянуть теорию, что читать?
3 1087060
>>087057
Дейта читай, если по-серьезному.
4 1087068
Посоветуйте где лучше хранить память для нейроночки, какая БД лучше, там SQL или же текстовый документ, а мб и вовсе в формате json?
5 1087070
6 1087127
ебаные функции какого хуя нихуя не работает блядь
7 1087300
>>087127
Ты бы хоть вопрос задал... А тебе бы кто-нибудь гениальный помог. Я, например
8 1087337
>>087300
да я уже разобрался
просто язык ущербный пездос
9 1087370
>>086747 (OP)
Где вкатится?
Что читать
10 1087656
>>086747 (OP)
В смысле ПРОСТО ПЕРЕКАТИЛ, ирод?! А придумать тупую пикчу и дибильное описание для Оп-топика?
>>087068
смотря, какие данные. если у тебя места жопой жуй, можешь в джей соне хранить, да, однако, данные зачастую используются еще какими-то системами, так что скорее всего, они уже где-то собраны(в бд), а тебе их просто нужно грамотно представить и запихнуть в свою нейросеть на пайтоне
Вопрос, честно говоря, ни о чем. Это как

>на каком языке программировать?

11 1088045
>>087370
иди в sqlzoo, потом порешай немного sqlex

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

если научишься юзать ETL-инструмент, или что-то для аналитики вроде Business Objects или хз че ещё есть, можешь больше получать
12 1089116
Да как так-то блядь
Почему у меня запрос отрабатывает быстро, а когда я пишу инсерт с этим запросом - виснет
Ебаный оракл
Он чё хинты выключает или что
Ухххх сука бля
13 1089118
>>089116
На базе, с которой я беру данные, все ок. И селект и инсерт.
Я прописываю в свой запрос driving_site
Селект работает так же быстро, как на основной базе, а инсерт висит
Что за хуйня
14 1089121
>>089118
Л О Г И Р О В А Н И Е
О
Г
И
Р
О
В
А
Н
И
Е
15 1089149
>>089121
А зачем ты это высрал? Я не понял с одного слова, поясни
16 1089536
>>089118
Что значит "висит", ебаный ты в рот?
Висит, в смысле, вообще ни одной строки не инсертит? Если да, у меня для тебя плохие новостиблокировки
Если нет, и просто инсертится ооооооочень медленно, у меня для тебя плохие новостидиски скорость фрагментация кококо
17 1089673
Народ, такой вопрос.
Только начинаю прошаривать бд, для своего личного проекта. Имеет ли смысл писать сервер на с++, и из него через сторонние библиотеки делать запросы к sql-серверуpostgresql в частности?
Смысл такой, что клиент на питоне шлет запросы, с++ сервер принимает, вытаскивает какие-то данные из БД, прогоняет их через питоний скрипт на своей стороне(какой - зависит от пользователя, их типо много) и возвращает ответ клиенту. Или все это можно сделать как-то на самом SQL сервере? Я понимаю что наверно нет, но меня словосочетание sql сервер смутило, типо из с++ сервера обращаться в другой сервер... хз
Что скажете?
Остальное все уже продумано и частично написано.
inb4: Не ньюфаг, с++ знаю относительно хорошо, python тоже неплохо.
18 1089688
>>089673

>Что скажете?


1) Том Кайт — «Oracle для профессионалов»
2) К. МакДональд, Х. Кац, К. Бек, Д. Кальман, Д. Нокс — «Oracle PL/SQL для профессионалов»
19 1089896
>>089673

>клиент на питоне


не нужен, эта задача решается средствами веб интерфейса
если все-таки нужен, то для него не нужен сервер на c++, эта задача решается прямым обращением к базе/sql_серверу из клиента
ежели таки нужно и то и другое, то необязательно писать сервер на c++, можешь писать его на том же питоне

>из с++ сервера обращаться в другой сервер


мировая практика, иначе при наличии овер9к клиентов с исходящими 100500 запросов/сек. к базе от каждого, твой сервер просто ЗДОХНЕТ, ЯСКОЗАЛ
20 1089916
>>089688
Да мне собственно сама sql мне не особо нужна, там вся база это 2 таблицы с 4 столбцами каждая, но на книги обязательно гляну
21 1089920
>>089896
Понял, спасибо. На счет сервера на питоне подумаю, все же привычнее на плюсах, да и наработки есть ну и распространненное мнение/заблуждение что плюсы априори быстре, а собственно ради скорости отдельный сервер и затевался
Realnetstalking.jpg140 Кб, 1082x740
22 1090069
Сап, аноны, пришел к вам за помощью.

В универе дали задание - придумать 1) 3 ненормализованных таблицы, 2) 3 таблицы в 1НФ с аномалиями, 3) три таблицы во 2НФ с аномалиями и 4) 3 таблицы без аномалий.
Если с 1, 2 и 4 все понятно, то вот с 3 я нихуя не понимаю. Какие аномалии могут быть в 2НФ, если эти самые аномалии 2НФ и фиксятся?

>Такие неприятные явления называются аномалиями схемы отношения или коллизиями. Эти недостатки реляционных отношений устраняются путем нормализации по 2НФ.



Уже час голову ломаю, ничего придумать не могу.
23 1090072
>>090069
Аутист плес, зачем вообще на ИТ пошёл? По специальности собираешься работать?
15068811740760.png346 Кб, 1225x1728
24 1090073
>>090069
Чего? Я же не на проектировщика БД учусь.
25 1090074
26 1090082
>>090069
Блядь, на Википедии примеры есть
27 1090144
Чет вообще не вдупляю пацаны, есть крч пайплайн функция. Как мне заселектить эту таблицу которую в пайпроу выбрасывает?
28 1090148
>>090144
select * from table(твоя_функция(аргуменнты_к_ней))
29 1091885
Что означает prior в oracle?

SELECT employee_id, last_name, manager_id
FROM employees
CONNECT BY PRIOR employee_id = manager_id;

EMPLOYEE_ID LAST_NAME MANAGER_ID
----------- ------------------------- ----------
101 Kochhar 100
108 Greenberg 101
109 Faviet 108
110 Chen 108
111 Sciarra 108
112 Urman 108
113 Popp 108
200 Whalen 101
...

есть некий работник и мы его соединяем таким образом, что б manager_id следующего по level (иерархии) работника была равна employee_id текущего?

А если так:

SELECT employee_id, last_name, manager_id
FROM employees
CONNECT BY employee_id = PRIOR manager_id;

Что конкретно означает PRIOR ?
29 1091885
Что означает prior в oracle?

SELECT employee_id, last_name, manager_id
FROM employees
CONNECT BY PRIOR employee_id = manager_id;

EMPLOYEE_ID LAST_NAME MANAGER_ID
----------- ------------------------- ----------
101 Kochhar 100
108 Greenberg 101
109 Faviet 108
110 Chen 108
111 Sciarra 108
112 Urman 108
113 Popp 108
200 Whalen 101
...

есть некий работник и мы его соединяем таким образом, что б manager_id следующего по level (иерархии) работника была равна employee_id текущего?

А если так:

SELECT employee_id, last_name, manager_id
FROM employees
CONNECT BY employee_id = PRIOR manager_id;

Что конкретно означает PRIOR ?
Снимок.PNG5 Кб, 415x239
30 1091886
>>091885
*нормальная разметка аутпута
31 1091916
SQLite3
/тред
32 1091918
>>091885
То поле перед которым PRIOR будет считать своим родителем другое поле равенства.

habrahabr.ru/post/43955/

Хотя как по мне, лучше бы PRIOR ставили перед родителем.
33 1091974
Нубовопрос по jpql.
Есть статусы пользователя, 1, 2, 3, и условно еще один, из всех остальных, но не этих трех (4, 5, 6, 7, 8)
Я строю такой запрос: ... WHERE e.status IN (1, 2, 3), получается первые три статуса
все 4 имеющиеся - WHERE e.status IN (1, 2, 3, 4, 5, 6, 7, 8 ), но, это как-то не правильно, и получается, надо написать
WHERE e.status IN (1, 2, 3) and e.status NOT IN (1, 2, 3), я прав? Хотя я где-то объебался.
34 1092458
>>091974
Перечитал твой пост три раза и нихуя не понял :/ можешь ещё раз объяснить? Опиши какие строки ты хочешь на выходе получить
35 1092516
>>092458
Есть четыре чекбокса, соответственно статусы 1, 2, 3, а у четвертого чекбокса все остальные. Мне нужно получить запрос, чтобы достать соответствующих пользователей.
36 1092572
>>091974
Прост селект таблицы делаешь без условий.
37 1093225
Либо я даун, либо условие непонятное. 3 пункт я не понял, что делать. Может кто поможет понять, что пытался донести до меня автор?

>Месяцу совпадающему с таблицей kek3


>Что?



1. В зависимости от того, существует ли уже таблица с именем kek1 в БД, создать или удалить и создать.
Поля таблицы допускают пустые значения
- Data тип дата-время
- ID тип целый
- TankID тип символьный, длина 10.
- Mass плавающий
- Vol плавающий
Присвоить значения массе и объему (300 и 150), а TankID равное дате текущего дня месяца.
2. Создать функцию Plot с двумя переменными Mass_F и Vol_F.
Вычислить значение функции, взяв данные из таблицы kek1.
3. Занести вычисленное значение плотности в таблицу kek2 для резервуара TankID совпадающий с TankID из kek1 и месяцу из Date, совпадающему с таблицей kek3. (Связанные поля пишутся одинаково)
hierarchicalqueryclause.gif6 Кб, 642x123
38 1093378
Есть ли тян или знатоки женщин в треде?
Хочу подарить знакомой, которая занимается ораклом бусы или браслет, как в официальной документации,
толковая мысль?
39 1093416
>>093225
Я и второй-то пункт ниасилил. Что функция должна делать то, лол?
40 1093418
>>093378
Она типа вся такая гик/нерд? Если нет то хуже подарка придумать нельзя
41 1093566
Посоветуйте фундаментальную книгу по SQL, которой хватило бы для вкатывания в БД.
42 1093646
Посоны, есть 2 таблицы, А и Б, в них колонки А.а, и Б.б, надо объеденить эти колонки в одну, при этом не добавляя повторяющиеся(то есть если у нас в обоих колонках есть число 2, то не добавлять его, а добавлять только те числа, которые есть только в одной колонке).

Пока придумал, что простой метод это объединить две колонки в одну и потом удалить повторяющиеся, но это 2 запроса, как одним это сделать?
43 1093675
>>093646
Хоть бы скинул, что получилось. По условию нифига не понял.
image.png2 Кб, 266x114
44 1093701
>>093675
Ну вот. Объеденить столбцы A и B и получится столбец D, в котором есть только неповторяющиеся значения.
Image 2.png56 Кб, 1709x917
45 1093735
>>093701
SELECT DISTINCT A.A
FROM A
UNION
SELECT DISTINCT B.B
FROM B
MINUS
(SELECT DISTINCT A.A
FROM A
INTERSECT
SELECT DISTINCT B.B
FROM B);

Собственно, это и есть столбец D, а дальше уже что хочешь с ним делай.
Если что, я кроме Оракла ничего не знаю, поэтому хз прокатит ли такой скрипт на других платформах
46 1093736
>>093735
Запрос, если быть точнее.
47 1093829
>>093735

>A.A


^_^

>ВЫБРАТЬ РАЙОН ИЗ А ОБЪЕДИНЕНИЕ


x_x
48 1093857
>>093829

>>A.A


>^_^



Он сказал, что >>093646

>есть 2 таблицы, А и Б, в них колонки А.а, и Б.б,



>>093829

>>ВЫБРАТЬ РАЙОН ИЗ А ОБЪЕДИНЕНИЕ


>x_x



И как бы ты их сджоинил, если нет одинаковых столбцов?
49 1093911
Создать запрос для вывода только правильно написанных выражений со скобками (количество открывающих и закрывающих скобок должно быть одинаково, каждой открывающей скобке должна соответствовать закрывающая, первая скобка в выражении не должна быть закрывающей). Примеры неправильных выражений:
((((a)g)q)
z)(s)(
(((f)e)w))(h(g(w))
))((

Есть даже решение, в котором не могу разобраться начиная со вспомогательной таблицы RESULT (14я строка):
https://pastebin.com/uYLZYuyt

если строка "правильная", то она выводится, в противном случае не выводится ничего или null

По мотивам этого решения написал своё:
https://pastebin.com/iWBYa7z5

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

Буду благодарен, если кто напишет комментарий к 1му решению, подскажет мне как улучшить моё или представит работающее своё.
50 1093991
>>093566
Бамп. Вроде, какого-то Дейтела всем советуют, а я нагуглить не могу.
51 1094364
>>093911

>DE_STRING AS(


> SELECT STR, SUBSTR(STR,LEVEL,1) SS, ROWNUM RN


> FROM STRING


> CONNECT BY LEVEL <= LENGTH(STR)),



Разбивает на буквы строку.

>PARENTHESIS AS(


> SELECT STR, SS, ROWNUM R


> FROM DE_STRING


> WHERE SS IN ('(',')')


> ORDER BY RN),



Забирает из разбитой строки только скобочки.

>DE_PARENTHESIS AS(


> SELECT STR, TO_NUMBER(CASE SS WHEN '(' THEN 1 ELSE -1 END) AS SS, R FROM >PARENTHESIS),



Заменяет скобочки на цифры.

>RESULT AS(


> SELECT STR, SS, R, (SELECT SUM(SS) FROM DE_PARENTHESIS WHERE R<=EXT.R) AS >RESULT FROM DE_PARENTHESIS EXT


> START WITH R = 1


> CONNECT BY PRIOR R = R-1),



Кумулятивная сумма чисел скобочек. То есть сначала первая скобка, потом 12, потом 123 и т.д..

Потом автор взял за основу 2 условия адекватности выражения.
Выражение адекватно, если:
1. Сумма чисел скобочек в строке = 0, что очевидно.
2. Никакое из значений кумулятивной суммы не меньше 0, что эквивалентно наличию лишней закрывающей скобочки. Можно понять, что из такого выражения уже никак не получить адекватное.
51 1094364
>>093911

>DE_STRING AS(


> SELECT STR, SUBSTR(STR,LEVEL,1) SS, ROWNUM RN


> FROM STRING


> CONNECT BY LEVEL <= LENGTH(STR)),



Разбивает на буквы строку.

>PARENTHESIS AS(


> SELECT STR, SS, ROWNUM R


> FROM DE_STRING


> WHERE SS IN ('(',')')


> ORDER BY RN),



Забирает из разбитой строки только скобочки.

>DE_PARENTHESIS AS(


> SELECT STR, TO_NUMBER(CASE SS WHEN '(' THEN 1 ELSE -1 END) AS SS, R FROM >PARENTHESIS),



Заменяет скобочки на цифры.

>RESULT AS(


> SELECT STR, SS, R, (SELECT SUM(SS) FROM DE_PARENTHESIS WHERE R<=EXT.R) AS >RESULT FROM DE_PARENTHESIS EXT


> START WITH R = 1


> CONNECT BY PRIOR R = R-1),



Кумулятивная сумма чисел скобочек. То есть сначала первая скобка, потом 12, потом 123 и т.д..

Потом автор взял за основу 2 условия адекватности выражения.
Выражение адекватно, если:
1. Сумма чисел скобочек в строке = 0, что очевидно.
2. Никакое из значений кумулятивной суммы не меньше 0, что эквивалентно наличию лишней закрывающей скобочки. Можно понять, что из такого выражения уже никак не получить адекватное.
52 1094860
Здравствуйте, ананасы. У меня не хватает мозгов чтобы корректно составить запрос. Суть такова: есть база с CDR-записями Asterisk. Я на нее повесил веб-интерфейс Asterisk-CDR-Viewer-Mod. Он, в принципе, то что мне нужно, но расход средств показывает не совсем в таком виде, в каком нужно. Хотелось бы видеть выборку как на первом пике. Фильтрация направлений звонков производится условиями на втором пике. Поможите составить запрос, аноны.
53 1094861
>>094860
Забыл добавить что стоимость тарифа не хранится в базе, а лежит в CSV-файле. Но на нее внимания можете не обращать, мне хотя бы выборку по направлениям сделать чтобы считалась общее количество секунд по указанному периоду для мобильных, городских и т.д.
54 1094871
>>094860
Так тут можно обычные sql запросы делать? Это бы всё ускорило.
Если нет, то можешь в самом скрипте суммировать данные.
Image 10.png21 Кб, 1048x227
55 1094967
Почему возникает такая ошибка?
Хочу отобразить повторяющиеся слова в строке.
jerryswag.png98 Кб, 288x265
Аноним 56 1095053
>>086747 (OP)
Сап аноны! На связи кун энихуйщик (по совместительству - полный ноль в БД) с мухосранска. Ношу подносы с новыми клавиатурами Обслуживаю 25 пекарен в конторке, занимающейся отчасти лабораторными испытаниями. В срочные сроки поставлена задача ввинтить результаты лабораторных испытаний (задним числом есесссна) в базу данных оборудования для испытаний (одно из этих чуд - Хромос ГХ-1000). Собственно вопрос - реально ли?

Результат беглого осмотра - из того что называется Базами данных найден лишь файл мелкомягких .mdb с заготовленными заголовками, формулами и прочей хуергой для занесения данных, то есть пользовательских данных в нем нет. А собственно сами результаты вместе с хромотограммами пишутся в отдельные файлы с расширением .stg (которые естественно открываются только прогой идущей к прибору).
Исходного кода этого чудо ПО ясен хуй нету. Как быть?

ВНИМАНИЕ! Анончик, дорогой! Я знаю ты можешь помочь советом и поэтому, если предложишь 100% рабочий вариант решения моего вопроса, я гарантирую оплату деньгами на ништяки, пивас, пару шлюх и немного кокаина (ну или на пару гантель, штанг и абонементов в тренажерку, если ты больше по ЗОЖу например)!

Вопрос жизни, целостности моего ебальника, моей работы и твоих, возможно, очень даже нихуевых выходных, анон!
58 1095134
>>095053
Не знаю, как тебе помочь.
Попробуй с этого, может что-нибудь прояснится.

http://www.anchem.ru/forum/read.asp?id=21976
59 1095137
>>095053
Если есть ПО Бакса могу подсказать, как что хранится, базы данных там нет, все в бинарных файлах. Наверняка в Хромосе все то же самое. Попробуй посмотреть работает ли их ПО как OLE сервер, можно попробовать дизассемблировать, если c# или джава то шансов понять, что надизассемблируешь больше. Ты конечно тут всем покушать принес, братишка.
60 1095149
>>095134
Хммм. Конвертнуть туды суды в принципе вариант, но там объем адовый. Но спасибо за ссыль, покопаю.
61 1095166
>>095137

> Если есть ПО Бакса могу подсказать, как что хранится, базы данных там нет, все в бинарных файлах. Наверняка в Хромосе все то же самое. Попробуй посмотреть работает ли их ПО как OLE сервер


Если ты про НТФ "БАКС", то нет, их оборудования и соответственно ПО нет.
Проблема в том, что там настолько кастрированные настройки, что кроме как указать пути к хранению баз, методов и хроматограмм ничего не представляется возможным. Да и установлен прибор локально, то есть комп и прибор, сервера для хроматографа нет. Вообще мне кажется там ole ни к чему, там даже никакого особого форматирования нету - тупо цифры в поля вбивает юзверь, они потом выводятся в отчетах. Если бы хотя бы экспорт в эксель был... А про дизассемблер, это ты имеешь ввиду раскомпилировать экзешник? Это одно и тоже? Если да, то мне кажется это импоссибль(
62 1095429
>>086747 (OP)
Я тут уже полтора треда засрал и пришел к такому выводу что мне нужно именно сюда:
Посоветуйте тему для курсача, MsSql, знаний мало.
Где базы данных нужны и какой с их помощью можно сделать йоба курсач и не обосраться?
63 1095588
>>095429
бля, проще сказать где базы данных НЕ нужны. В крайнем случае просто возьми стандартный пример с школой, пусть у тебя будет таблицы: учителя, школьники, оценки там. Нормализуй(т.е. смотри чтобы соблюдались норм. формы). Наложи какие-то констрейнты, ну типа чтобы оценка могла быть в пределах от 1 до 5, даже на таком уровне.
64 1095857
>>095588
Мне кажется просто что много где достаточно как раз таки обойтись сериализацией тупо в файл и так даже будет удобнее.
А в повседневной жизни нужно только всем сортам продаванов товаров и услуг и то не везде.

> стандартный пример с школой


Слишком просто, желательно что-то посложнее.
65 1096339
базаны, 5 миллионов записей в таблице это же мало или уже средняя БД?
66 1096400
>>096339
Это хуита. Увеличь в 20 раз - получишь среднюю по размерам бд.
67 1096557
Никто не помнит название книги по базам данных, которую я читал несколько лет назад. Особенность книги заключалась в том, что там параллельно изучению SQL была еще и интересная история про некую принцессу, которой король кажется дал задание, сделать базу данных для неких массивов информации. Задача читателя, вместе с принцессой освоить SQL и сделать необходимую БД для короля.
69 1096572
>>096569
Да, это она. Спасибо большое за помощь.
70 1097260
Помогите, пожалуйста с задачей

\tСоздать запрос для выделения из символьной строки повторяющихся, стоящих рядом слов.
Примеры:

Кулон лон слон слон слон Книга книга \tслон слон
Книга книга

Мама мыла раму раму мыла мама\t
раму раму

пока что есть такое решение
https://pastebin.com/45xhHR08
но это всё равно не до конца верно, потму что строка
'ER ER erer erer er er erer ererer erer erererer erererer'
обрабатывается некорректно
72 1100486
Более-менее знаю SQL pl/sql,ms sql и админство БД, баловался с машобом.
Насколько направления BI/ETL перспективны? Есть ли смысл изучать и возможно ли вообще это самостоятельно, не имея доступа к инструментам корпоративного уровня? Реально ли найти удалённую работу такого рода или разумнее продолжить изучать Java (которая не очень нравится и по большей части просто использовалась вместо скриптов для всяких задачек по работе с данным) и конкурировать с армией индийцев?
73 1100557
>>100486
Учи пистон
sage 74 1100660
Если ты даун.
Безымянный.png14 Кб, 550x470
75 1101070
>>097260
Вот, пожалуйста, не благодарите, заодно и оппик новый будет.
Сори, у меня рабочий день кончился, не успел нормально сделать. Работает только с двумя повторяющимися словами)))))
76 1101552
>>092516

>у четвертого чекбокса все остальные


Первое фундаментальное свойство отношений - отсутствие атомарных атрибутов, а это значит, что ты не можешь присвоить четвертому чекбоксу несколько статусов.
77 1101555
>>086747 (OP)
Если я сделал 50 заданий на sql-ex, знаю реляционную теорию, знаю основы T-SQL, я могу вкатываться на джуниорские должности или мне нужно что-то еще?
78 1101556
79 1101645
только у меня pgAdmin4 такой глючный?
Третий хотя-бы работал корректно, часто вылетая при этом.
Четвёртый же просто не работает в рамках своей бизнес-логики.
Поля не переименовывает, ибо генерирует косячный sql для этого.
Выполняю скриптом insert - он рапортует что успешно, хотя оно не успешно. И я не знаю причину почему не успешно.

НЕНАВИСТЬ
80 1101650
>>101645
БЛЯТЬ.
Поставил третий пгадмин, а он не работает под десятой посгре
81 1101672
>>101645
С чего начать изучение баз данных?
82 1101676
>>101645
У меня в одно время тоже были проблемы, помогло следующее:
%папка постгреса%\data\postgresql.conf
в этом файле есть строка:
lc_messages = 'Russian_Russia.1251'# locale for system error message
Надо было заменить ее на:
#lc_messages = 'Russian_Russia.1251'# locale for system error message
lc_messages = 'en_GB.UTF-8'# locale for system error message

В моем случае пгАдмин4 не показывал ошибки, в любом случае писал success и ничего не происходило.
83 1101736
>>101676
да, помогло, спасибо.
Случайно создал базу в win1251
85 1101772
>>101738
Это понятно.
86 1101802
У Oracle XE производительность сильно выше, чем у 12c?
help.PNG222 Кб, 1498x1028
87 1101828
Только изучаю базы данных, поэтому прошу сильно не стукать.

Допустим у меня есть файл с БД. Я открываю его в MySQL Workbench. И вот, у меня вопрос. Как посмотреть эту базу данных, если я уже ее открыл. Скриншот.
88 1101838
>>101828
сам майэскуэл это такая служба без графического интерфейса. К ней по сети делаются запросы, она возвращает результат.
Данные оно хранит в файле. И этот файл нужен только это службе, никому другому.

Чтобы через интерфейс пощупать базу, тебе надо запустить эту службу, и чтобы эта служба захавала этот свой внутренний файл

хотя может я не понял вопрос
index.png32 Кб, 418x332
89 1102516
Аноны, выручайте! Добавляю в базу юзера, если юзер уже есть кидается исключение. При этом первичный ключ увеличивается, даже если пользователь не добавился, можно ли как-то пофиксить это?
90 1102541
>>102516
Похожая проблема. Бампую вопрос.
91 1102552
>>102516
https://stackoverflow.com/a/13297724

Последствие этого решения - замедление базы данных. Но не могу сказать, в каких пределах.
Для тестов и лаб норм.
92 1102609
Пжаласта не шифруйте пароли в бд сайтов с солью, мне тяжело их сливать! Не шифруйте пароли вопше! Пажаалуста!
93 1103705
Аноны, а есть какая-нибудь вводная литература по СУБД, где сразу рассматривалось бы несколько СУБД и анализировалось, что в них хорошо, что плохо и для каких задач стоит применять ту или иную СУБД? Может, посоветуете что-то подобное? Конкретно интересуют MongoDB, Redis, PostgreSQL, MySQL.
94 1103988
Анон помоги.
Представь вот такую табличку
num action date_time
43252 DELETE 20170825 15:55:45.68
43252 DELETE 20170825 15:58:02.57
43252 DELETE 20170825 15:59:14.77
43252 DELETE 20170825 16:01:20.35
43252 DELETE 20170825 18:23:41.91

как сгруппировать ее так что бы он учитывал промежуток во времени только 1 час?
тоесть должно получиться так первые 4 строки группируются а пятая нет т.к она
совершалась позже чем через час начиная с минимальной даты из первых 4-х строк,
тоесть в группу должны попасть все записи в промежутке между 15:55:45.68 - 16:55:45.68
вот так
43252 DELETE 20170825 15:55:45.68
43252 DELETE 20170825 18:23:41.91
одна запись сгруппировалась по времени в промежутке за 1 час а другая в этот промежуток не влезла и осталась
95 1104399
>>103988
А что ты понимаешь под словом сгруппировать?
96 1104460
>>104399
group by

из таблички в примере group by должен выглядить примерно так

group by [num],[action],{date_time в промежутке от первой строки 15:55:45.68 до dateadd(hh,1, 15:55:45.68) }
97 1104674
>>104460
А с остальными строками что делать?
98 1104677
>>103705
Сам себе посоветую - может, ещё кому пригодится:
Eric Redmond, Jim R. Wilson - Seven Databases in Seven Weeks - A Guide to Modern Databases and the NoSQL Movement.
Почти то, что нужно.
99 1104854
Суть такая, есть 11g oracle db xe, dev suite 10g, все в виртуалке на xp.
Oracle designer как минимум не терпит кириллицу в диаграммере, с NLS-LANG ебался, не помогает, кастомайз сосет.
Не хочу сидеть в корпусе для того, чтобы сделать лабу, выручайте, как суппостата ебнуть, чтобы кириллицу поддерживал?
100 1105216
>>086747 (OP)
В чём разница между репликацией и зеркалированием БД? Натыкался на разные определения и цели у обеих технологий, но чё то они похоже все одинаковые. Единственная разница, которую я находил - зеркалирование нужно, чтобы обеспечивать максимальную доступность: сначала ебошит мастер и все транзакции тем или иным способом транслирует слейвам, а потом если мастер отвалится, то до его восстановления мастером становится какой то другой слейв, но тем не менее в один и тот же момент времени работает только один сервер. В репликации же одновременно работают и мастер и все слейвы, только вот операции write/delete идут через мастера, а read - через наиболее удобного слейва, что позволяет не только увеличить доступность, но еще и снять нагрузку с мастера. Иными словами, цель репликации: доступность поддержка большей нагрузки, а зеркалирование - просто доступность БД?
101 1105253
>>104674
INSERT INTO anus
102 1105432
>>086747 (OP)
Есть две таблицы, в обоих у записей одинаковые id. В одной 100 записей, в другой 30. Как из первой выбрать только те, которых нет во второй ?
103 1105474
>>105432
select * from table1 t1 left outer join table2 t2 on t1.id = t2.id where t2.id is null
104 1106095
>>105432
select * from table1 t1
where not exists (
select 1 from table2 t2
where t1.id = t2.id
)
105 1106398
>>105432
Select id from t1
Minus
Select id from t2
106 1106434
Посоны, советов мудрых ищу.

Суть токова: хочу делать оналитику. Есть эвенты примерно 10 видов. В них довольно разные поля, причём в них есть ещё вложенные на 2—3 уровня объекты. В сыром виде эти эвенты ещё объединены в массивы пачками штук по 100 и этими пачками и хранятся.

На этих эвентах хочется делать всякую оналитику, считать разные funnel-retention, обогащать их ещё данными из внешнего мира, считать какие-то композитные метрики.

В общем сходу пришла идея, что сырые данные из-за их разрозненной структуры удобно хранить в NoSQL виде (пока недолго думая засунул их в монгу). Потом каким-нибудь ETL выгружать их в преобразованном плоском виде в SQL (сходу, опять же, взял постгрес). Ну и потом уже писать запросы-запросики, JOINы и т.д.

Что не нравится в текущей схеме:
1) Монга медленная сука на bulk reads. Считать миллион или несколько лямов документов за раз — ждать охуеешь.
2) Постгрес тоже не самый быстрый для ОЛАП запросов (но в принципе в какой-то степени это решается через пре-вычисленные и обновляемые materialized views)

Советов мудрых прошу:
1) Что лучше использовать, чем монгу, для сырых неструктурированных данных, чтоб они читались быстро в ETL?
2) Что лучше юзать для ETL?
3) Какая БД заебок для OLAP? Слышал про Vertica или опен-сорсный Druid, а в друиде нет joinов. Redshift? Данных вроде не безумно много, пока ~10 лямов эвентов, но будет расти. Думаю до 100 млн дорастёт в обозримое время.

Рассматриваю как опен-сорс, так и вариант с отстегиванием бабла империалистическим расовым буржуям.
107 1106457
>>106434
Монга не предназначена для хранения связанных данных.
108 1106459
>>106457
Блин, я не знаю, зачем это написал.
109 1106460
>>106457
Так они ж не связаны. Просто последовательность неструктурированных JSON-like объектов с несколькими уровнями вложенности.
110 1106461
>>106460
Apache Kylin?
111 1106465
>>106461
Вроде бы может подойти, но чото ОЧЕНЬ сложно. Тут технологический стек из десятка наименований, с каждым из которых надо разбираться, поднимать, поддерживать.

Я надеялся на какое-то решение попроще. Ну и для моего невеликого массива данных я не уверен что сразу надо бросаться в дебри Hadoop-экосистемы.

Но если лучше идей нет, может и придётся конечно.
112 1107034
Нужен совет. Есть программа, обрабатывающая запросы клиентов и формирующая на их основе mysql запросы.

Замечено, если сформировался запрос добавить 2500 строчек в БД, программа подвисает секунд на 10, добавляя данные в БД. Клиенты в это время ждут своей очереди.

Так не пойму в чём проблема. Кажется дело в конфигурации mysql. Что нужно поменять, чтобы быстрее работал сервер mysql?
114 1107122
Добрый вечер. Как настроить мускуль чтобы он не гоун эвэй от каждого чиха.
Пытаюсь через php записать 23 строки в таблицу, и получаю в ответ MySQL server has gone away. Отчего может быть, чем лечить?
115 1107318
Призываю всех вкатывальщиков, бездельников, интересующихся.

Давайте я вам порешаю какие-нибудь интересные задачи по SQL или отвечу на какие-то вопросы по БД Oracle
116 1107334
>>107318
Как вкатиться?
117 1107351
>>107334
Если обитателю /pr/ отрубить голову, он ещё 10 секунд будет спрашивать, как вкатиться.

Ладно, один хуй с похмелья не работается, можно и попиздеть.

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

Все ситуации индивидуальны. Я не вкатывался в это дело целенаправленно, я просто искал работу, будучи студентом, который не умеет ничего. Так уж вышло, что человек я одаренный, но очень неустойчивый, у меня не получается изучать что-то самостоятельно дома, мне нужны реальные задачи.
На первую мою работу меня взяли за отличный физико-математический бекнраунд и сообразительность. Это было не слишком серьезно, можно сказать, что это подработка для студента. За копейки, кстати. Но тем не менее там я впервые познакомился с sql и ораклом, полюбил, сделал это своей специализацией. После свалил в хорошее место.
Спустя пару лет я великолепный разработчик отчётности, имею психологические 100к в месяц и очень доволен жизнью.
118 1107356
>>107351
И да, я все же больше хотел попиздеть о технических вопросах, а не о карьере. Селектики там пописать, ну вы понимаете.
119 1107923
Да хуле вы такие мертвые
Мне вот и чатик по sql в телеге не впадлу было бы создать, но никому не интересно ведь будет, да?
120 1108025
>>107923
Создавай! @aminazinn и в шапку треда надо будет запилить
121 1108090
>>107923
Поехали
@database2ch
122 1108852
>>086747 (OP)
Есть база данных на хостинге. У меня есть логин и пароль. Работаю с ней через программы вроде HeidiSQL. Сейчас надо подключиться скриптом php (5.6 и 7, в составе WAMP64), юзаю mysqli, а он выдаёт ошибку

mysqli_connect(): (HY000/2000): mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication.

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

Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password'). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file

Можно ли как-то приконнектиться к базе ?
123 1109060
>>089118
Может там на инсерт какие-то триггеры работают?
124 1109063
>>102516
Избавься от автоинкрементального ключа и сделай ключ генерируемым.
125 1109064
>>086747 (OP)
Научите пользоваться индексами. Зачем они нужны? Когда и какие использовать? Хотелось бы с примерами из настоящей практики.
126 1109065
>>102516

>можно ли как-то пофиксить это


А собственно, зачем?
127 1109105
>>109060
Да не, я в свою таблицу инсентил, на ней ничего не было.
Если честно, уже не помню, в чем там оказалась проблема, но все решилось
128 1109115
>>089916

Ты узнай, что такое PL/SQL для начала.
BMaDvCKH0F8.jpg7 Кб, 212x276
129 1109186
Вопрос по логическому проектированию бд.
Есть сущность Работники. ID - первичный ключ. И есть отдельная сущность должности. Она создана, дабы избежать аномалии удаления.
Так вот вопрос - является ли сущность работники слабой?
130 1109226
>>109186
Гуглить можешь? Да, является. А вот нахуй тебе этот вопрос сдался вообще, я ее понимаю. Это охуенно просто. Человек приходит выебнуться интеллектом и тем, что знает термин "слабая сущность", но интеллекта на пользование гуглом ему не хватает.
131 1109232
>>109226
Ну давай разберем по частям, тобою написанное )) Складывается впечатление что ты реально контуженный , обиженный жизнью имбицил )) Могу тебе и в глаза сказать, готов приехать послушать?) Вся та хуйня тобою написанное это простое пиздабольство , рембо ты комнатный)) от того что ты много написал, жизнь твоя лучше не станет)) пиздеть не мешки ворочить, много вас таких по весне оттаяло )) Про таких как ты говорят: Мама не хотела, папа не старался) Вникай в моё послание тебе< постарайся проанализировать и сделать выводы для себя)
132 1109598
Привет, котоны. Не могу правильно составить запрос. Есть таблицы на пикриле, а суть такова: есть таблица с моделями коммутаторов, таблица с типами скриптов и собственно таблица со скриптами. Типов скриптов примерно 15, для каждой модели коммутатора скрипт определенного типа свой. Если для определенной модели коммутатора занесены скрипты, то запрос с пикрила 2 вернет то что на третьем пикриле. Но если в таблице со скриптами нет ни одной записи для определенной модели коммутатора, то запрос вернет пустой результат.
Как бы составить запрос так, что если бы в таблице скриптов не было записей с определенной моделью коммутатора, то все равно вывелись бы все типы скриптов как на пикриле 4, например?
8c44bdbe.png4 Кб, 472x75
133 1109604
>>109598
Разобрался.
134 1109679
Какой тип данных в sql может отобразить время выполнения какой-либо операции? time не подходит, там 24-часовой формат, да и вообще не про то. Например, производственный цикл длился 80 часов 20 минут хуй секунд. Что выбрать?
135 1109684
>>109679
Миллисекунды и типом большую чиселку.
136 1109702
>>109679
Interval
137 1110118
Откуда можно скачать набор функций, которые потом можно встроить в SQL Management Studio?
Помню, на предыдущей работе видел функцию для красивого вывода даты-времени, которая принимала в себя переменную типа даты, шаблон dвода информации, и шаблон вывода информации. Что то типа такого:
function("01.05.17 15:46:32", "dd.mm.yy hh:minmin:ss", "mm/dd hh:minmin")
Данная функция принимает в себя определенную дату-время и выводит через слэш число месяца/месяц и часы с минутами. Ну, то есть чтоб я вбил в неё переменную даты и вывел эту дату в формате каком хочу. И наоборот - если я хочу вбить строковую переменную, которая содержит в себе дату-время и шаблон(в котором указано, какой символ, какой единице даты принадлежит) и чтобы система перевела данную строчку в тип дата-время. Думаю, такие функции можно ведь где-то скачать.
138 1110159
>>086747 (OP)
Так зачем же нужен OLAP?
139 1110199
Сап.
Помогите, совсем зарапортавался.
Есть таблица Производство и таблица Материалы. Как мне вывести Имя материала и количество раз, которое этот материал используется в производствах?
140 1110202
>>110199
Или задам вопрос проще - как выбрать кортежи, у которых один атрибут одинаковый?
141 1110204
>>110199
Запрос ИмяМатериала, НЗЧ(количество(МатериалыУк), 0)
из Материалы
левый союз Производство на Материалы.Ук равно Производство.МатериалыУк
борда /po ИмяМатериала
142 1110206
>>110204
Спасибо большое, анончик
Буду пробовать
143 1110207
>>110204
Что такое НЗЧ?
144 1110210
>>110204
Получилось! Спасибо, что навел на правильную мысль
Обнял
146 1110218
>>110207
Подумой.
147 1110323
ЧЯДНТ?
Создаю триггер на уменьшение количества определенного материала на складе при добавлении записи в другую таблицу с айдишником этого материала - пикрил 1
Инсертаю запись - пикрил 2
И выдает ошибку - пикрил 3
148 1110344
>>110323
Все, с этим разобрался.

А как сделать триггер на отмену вставки при определенном условии? Например, если количество материала равно 0, отменяет вставку производства с этим материалом.
В какую сторону копать?
прогрессивный хуяк-хуяк кодер 149 1110345
Я же прогрессивный хуесос, ха-ха-ха вы еще руками запросы пишете, нахуй старое говно - пришло будущее, вот я такой охуенный, у меня Code-First подходы, LINQ to Entity, смотрите как я могу с лямбдами хуяк-хуяк.

БЛЯДЬ ДВОЕ СУТОК НА ЭТОЙ ЕБОЛЕ НЕ МОГУ СОСТАВИТЬ ЗАПРОС, как что-то сложнее пары уровней вложенности, все, пиздец.
Надо выбрать из первой таблицы строки, для которых в дочерней таблице выполняется ряд условий. И я блять не понимаю как к этой еболе подходить.

Условно, есть две таблицы. Покупатель и покупки, с отношением один ко многим соответственно. Мне надо выбрать тех покупателей, у которых последняя покупка была "путь будет чайник".

Еслиб это был голый SQL, то я бы объединил две таблицы, сделал бы Group By, выбрал только последние и сравнил покупки с искомой покупкой.
Как это сделать на Linq, я не понимаю. Как вообще на нем такие запросы делаются, пойду еще почитаю документацию, такое ощущению что я какую-то техническую деталь пропускаю, и не могу понять какую. Include какой-нить или еще что-нить в этом роде.
Надо понимать что в таблице покупателей, не лежат ID их покупок. Все что там есть, это public virtual List<покупки>, который в таблицу то не отображается, а транслируется фреймворком в какие-то понятные ему связи. Есть только обратные индексы в дочерней таблице, но мне её DbContext конечно же не показывает - "ибо совсем охуел, мы ему фреймворки с интерфейсами, а он куда-то глубже пидор руки свои тянет".

Кто-нить работает/работал с LINQ to Entity, вроде бы рядовая задача, а что делать я не знаю.
150 1110349
>>110345
Двачую
Тебе скорее всего join нужен
151 1110359
>>110345
Что нибудь в духе
from c in ctx.Customers
from s in ctx.Sales
group s by s.CustomerID into sg
let sgr = new { ID = sg.Key, LastSale = sg.Max(sg=>sg.Date)}
where sgr.ID= c.ID
select new {Customer = c, Sale = sqr.LastSale}

Хотя может выйдет и так:
from c in ctx.Customers
select new {Customer = c, Sale = c.Sales.OrderByDescending(s=>s.Date).FirstOrDefault()}
152 1110369
>>110344
Бефор инсерт триггер на твою таблицу, в котором ты лезешь по айдишнику в таблицу, в которой количество ресурса, если там ноль, ничего не делаешь
Для верности ограничение на таблицу, что меньше нуля быть не может
153 1110372
>>110369
И вообще ты пидрильство какое-то разводишь и головой не думаешь.
Что будет, если два человека одновременно внесут данные?
Меняй эту таблицу до
154 1110385
>>110372
Ладно, расскажу, как человек бы сделал.

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

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

Потом ты делаешь инсерт в свою таблицу и только потом фиксируешь изменения.

Если во время твоим манипуляций, второй пользователь попробует добавить тот же ресурс, то у него повиснет блокировка. Когда ты закончишь, у него блокировка отвиснет.
155 1110422
>>110369
Before insert не работает в T-SQL
156 1110451
>>110422
Простите ради бога, я всё с точки зрения оракла написал.
Я знаю, что такие вопросы сильно по-разному работают в этих базах.
Простите меня.
157 1110453
>>110451
Ты няша
Мне все равно следующую работу в Oracle Apex делать
158 1110554
Оракл-кун, подскажи, в чем ошибка

>INSERT INTO Orders values


(1, 15000, 'Mirror', '20160508'), (2, 15000, 'Glass', '20160507'),
(3, 45000, 'Mirrors', '20160508'), (4, 32155, 'Glass', '20160507'),
(5, 17000, 'Glass', '20160508'),(6, 33213, 'Mirrors', '20160507'),
(7, 9000, 'Glass', '20160607'),(8, 34500, 'Glass', '20160608'),
(9, 19800, 'Glass', '20160507'),(10, 5000, 'Glass', '20160608'),
(11, 7200, 'Mirror', '20160507'),(12, 19800, 'Glass', '20160507'),
(13, 8800, 'Glass', '20160508'),(14, 5000, 'Mirrors', '20160509'),
(15, 50000, 'Glass and mirror', '20170507');

> ORA-00933: SQL command not properly ended

159 1110559
>>110554
А вот нихуя так не работает в оракле.
Тупо по строчке
Insert into t() values();
Insert into t() values();
Insert into t() values();
160 1110561
>>110559
Ебаный в рот
Спасибо
161 1110563
>>110561
@database2ch
На правах рекламы
162 1110565
>>110563
Вот почему нельзя было обычный синтаксис T-SQl сделать?
Теперь еще все даты менять, в таком

>20160508


виде он их вставлять не хочет.
163 1110568
>>110565
Некоторые форматы даты он понимает, '21.12.2017' бы пропустил.
А вообще всегда хорошим тоном считается объявлять маску. В твоём случае to_date('20171221','yyyymmdd'). Должен схавать
164 1110595
Жалко, что ты уже заинсертил, можно было бы попробовать поменять формат даты в сессии на твой...
165 1110829
Есть тут специалисты MongoDB? Чем у вас зоны от тегов отличаются? Читаю мануалы
https://docs.mongodb.com/v3.0/tutorial/administer-shard-tags/
https://docs.mongodb.com/manual/tutorial/manage-shard-zone/
и вижу, что обе этих технологии настраиваются одними и теми же командами, и сама документация совпадает за исключением, что в одной статье tags, а в другой zones. Что за хуйня?
166 1110830
>>110829
Забыл уточнить, зоны и теги в контексте шардинга.
167 1111164
>>110345
Рот ебал этой хуйни.
Сходу нихуя не разобрался, проебал срок тест задания пока читал базу про LINQ, ебанный Entity, ламбдахуямбда, ссаные статьи о работе ORM 21 ВЕК КОКОКО.

Все оказалось очень просто в итоге:
Iqueryable costomersList =
from cost in db.Costomers
where cost.Orders.OrderByDescending(order => order.ID).FirstOrDefault().Item == OrderItems.Item
select cost;

Выбрать тех покупателей у которых последняя покупка была OrderItems.Item.
Решение на столько простое, что я практически плачу не понимая как на это ушло почти 3 дня.
Единственное что я так и не понял, метод FirstOrDefault генерирует обращение к базе сразу, или таки это будет уже сделано потом, по факту обращения в момент использования costomersList.ToList().
168 1111198
>>110829

> MongoDB


Говнище.
169 1111523
Какой вариант скрипта для процедуры более эффективный с точки зрения скорости работы, если в таблицах по несколько десятков миллионов записей?
UPDATE t3 SET t3.t2ID = t2.ID
FROM [dbo].[Table3] t3 (nolock)
JOIN [dbo].[Table1] t1 (nolock) on t3.t1GUID = t1.GUID
JOIN [dbo].[Table2] t2 (nolock) on t1.GUID = t2.t1GUID
WHERE t3.t2ID IS NULL AND
-------------------------------------------------------
t3.t1GUID in (
SELECT tt1.GUID
FROM [dbo].[Table1] tt1 (nolock)
JOIN [dbo].[Table2] tt2 (nolock) on tt1.GUID = tt2.tt1GUID
WHERE t1.GUID = tt1.GUID
GROUP BY tt1.GUID HAVING count(tt1.GUID) = 1

-------------------------------------------------------
EXISTS (
SELECT 1
FROM [dbo].[Table1] tt1 (nolock)
JOIN [dbo].[Table2] tt2 (nolock) on tt1.GUID = tt2.tt1GUID
WHERE t1.GUID = tt1.GUID
GROUP BY tt1.GUID HAVING count(tt1.GUID) = 1
)
Он будет быстрее отрабатывать через EXISTS или через IN? На stackoverflow пишут, что через EXISTS.
170 1111727
>>111523
Предлагаю тебе еще один вариант:
Выбрать дистинктом все гуиды во временную таблицу (операция выполняется всего один раз в отличии от двух твоих примеров, в которых запрос выполняется для каждой строчки), проиндексировать временную таблицу по гуид, а потом переиннерджойниться с ней.
171 1112110
В базе все таблицы-справочники называются dim_*
От какого это слова?
172 1112363
>>112110
Dimension, видимо.
173 1112542
>>112363
Может быть, я тоже об этом думал.
Но как-то нелогично, dimension это измерение же.
Вообще лучше у коллег спрошу, простите, что я такой хикка и омега.
174 1113270
Если я планирую изучать T-SQL, то кроме него что ещё мне полезно знать? Устройство SQL Server'а и Microsoft Windows? Имеет ли смысл поставить виртуальную машину с виндовс сервером и sql сервером?
175 1113351
>>112542
dim - dimension - все верно Анон выше сказал.
А база ваша - скорее всего, хранилище данных. Покури теорию по хранилищам, измерение - распространенный термин.
176 1113358
поиск в таблице из 300.000 строк даст пасасать такому же хэшу?
177 1113362
>>090069
взбугуртну, пожалуй

>2кило7надцатый


>нормализовать бд


>экономить место


>дип джоины



(мимо веб-дебилушка требует быстрых ответов от бд)
178 1113363
>>089673

>клиент на питоне



почему сервер не на питоне?
jEFpY.jpg72 Кб, 500x281
179 1113364
>>089673

>народ



Слава достижениям народного пердолинга!
180 1113365
>>089920

>априори


сука блять чаем подавился
181 1113397
>>113270
Если ты планируешь быть потом обычным девелопером, а не сидеть около базы DBA кодером онли. То посмотреть как работает LINQ to Entity Framework, что бы, как говориться быть в "тренде". И не обосраться как этот товарищ, когда перед тобой реальную задачу поставят >>110345, хотя он вроде справился тремя постами ниже.
182 1113772
Суп базаны, поставили такую задачу, сделать на локальной БД агрегированые копии таблиц с удаленной базы. Каждый день, ночью агрегаты должны обновлятся, чтобы утром все получили 100500 своих отчётиков в екселе куда будут зашиты селекты на локальную базу. Удалённая Постгре, локально мускл запустил из-за простоты связывания с екселем, посоветуйте пожалуйста как лучше наладить этот процесс, и что почитать, т.к. такое проворачиваю впервые.
183 1113971
>>113772
а что, из постгреса csv не выгружается?
184 1113972
>>113362
если у тебя апдейтов нет, то можешь не нормализоывать.
185 1114312
>>113772
Положняк изменился, теперь у меня Постгре удаленная и постгре локальная. И сейчас не могу через дблинк законектить.
>>113971
Конечно выгружается, но получается, мне придется выгружать 10 цсвх каждый день, а потом читать из них ради создания аггрегированых таблиц. Я то не против, но это точно самый удобный вариант и я смогу хоть как-то его автоматизировать?
51873165p0.png300 Кб, 521x704
186 1117459
Насоветуйте учебник по SQL/Рел.БД, чтобы нормально освоить базовые вещи.
Глубоко дрочить БД не собираюсь, поэтому талмуд Дейта с 1.5к страниц идёт нахуй.
Но мне норм если реляционная теория будет затрагиваться, даже если математически-строго.

Собирался читать "SQL и реляционная теория" того же Дейта, но в предисловии написано что она рассчитана на ОПЫТНЫХ ПОЛЬЗОВАТЕЛЕЙ СУБД.
Ещё пытаюсь осилить пиздоновскую ORM - SQLAlchemy, чтобы на самом Сикеле не писать. Но чтобы осилить её нужно Сикель базово знать.
187 1117630
>>117459
Алан Бьюли, «Изучаем SQL».
188 1117937
Анон, помоги советом. Только вкатываюсь в SQL и тут такой трабл возник:
нужно сделать бд с данными по макроэкономике и всякими данными по наебизнес показателям и прикрутить к этому лёгкий интерфейс, чтобы вбил в поиск показатель и/или год итд, и инфа выгружалась в эксель для дальнейшей работы.
От чего отталкиваться в плане выгрузки в эксель инфы и написания интерфейса? (На сервере стоит postgres)
189 1117954
>>117937
Выбираешь юр фейворит ленгвич нейм. Пилишь на нем круд. Для выгрузки в эксель гуглишь юр фейворит ленгвич нейм эксель.
Делаешь.
-CsOhfr3eHg.jpg111 Кб, 600x532
190 1118493
Пацаны, я тупой. Есть две таблицы, нужно искать в них по определенному столбцу %запрос%. Столбец называется по-разному, таблицы между собой никак не связаны. Нужно просто поискать в них всех.

Делаю так: переименовываю столбцы на лету, чтоб было одинаково (description).
SELECT count(*) FROM (SELECT block_content as description FROM text_blocks) as table1, (SELECT news_text as description FROM news) as table2;

SQL мне джойнит этим запросом небо и даже аллаха, и я получаю полмиллиона строк. Как их заджойнить последовательно, чтобы просто был столбец description, в котором сначала было бы содержимое text_blocks.block_content, а затем news.news_text?
191 1118507
192 1118521
>>118507
Спасибо
193 1118538
Есть у меня задумка финансового приложения. Помогите развеять некоторую неопределённость. По задумке, надо будет хранить поступающие тикеры раз в минуту с пары бирж. Ещё ордера схоронять. Плюс логин-пароль от бирж. Ну и логирование. Вроде всё.
Насколько я понимаю, со всем этим запросто справится SQLite. Но кванты со stackexchange запугали тем, что тикеры (как временные ряды) лучше хранить в MongoDB. Но ведь это для миллиардов тикеров.
Тобишь, покуда у меня не тонны данных, мне стоит просто использовать ту же SQLite и не привлекать внимания санитаров?
194 1118570
>>118538
Единственный вывод, который может быть сделан из случайных данных — это что данные были случайны.
Нет никакой разницы, где их хранить.
195 1119144
>>118538

>лучше хранить в монго дб


>лучше sqlite



Ты хоть поясни, что ты с этими данными собираешься делать потом. Если строить аналитику, то монга - не лучшее решение, если просто доставать по ключу и показывать, тогда монга, наверное, лучше. Ты же не собираешься хранить ПРОСТО ТАК?
197 1120205
198 1121068
Подскажите норм тему для доклада по базам данных, плез
199 1121080
>>121068
Плюсы и минусы объектно- ориентированных БД
200 1121084
>>121068
Расскажи про NoSql-модели
Или про бигдату.
201 1122048
Аноны, выручайте. В чем отличия DECIMAL и DOUBLE? И что где лучше использовать. Поясните пожалуйста. Желательно с примерами.
С меня как обычно большое спасибо
202 1122291
>>122048

>DECIMAL и DOUBLE?


Дабл это расширеный FLOAT, то есть число с плавающей точкой. Если ты будешь сравнивать флоаты, есть неиллюзорный шанс соснуть, потому что вроде бы одинаковые числа не будут одинаковые по мнению БД.
Децимал потребляет больше памяти, но хранит точное значение числа, и с ним проблем при сравнении не будет.
Используй децимал.
203 1122458
>>122048
float - тип данных для работы с приближенными числами при использовании с числовыми данными с плавающей точкой.
Пример
Мы помним случай, когда клиент использовал тип данных FLOAT для представления номе-
ров штрихкода продуктов и был очень удивлен, когда при сканировании он получал не тот
продукт. Также недавно мы получили запрос о конвертации величины с типом FLOAT в тип
NUMERIC, дающий на выходе не ту величину, которая была введена. Вот этот запрос.
DECLARE @f AS FLOAT = '29545428.022495';
SELECT CAST(@f AS NUMERIC(28, 14)) AS value;
Можете догадаться, что получилось на выходе этого кода? Посмотрите.
Value
---------------------------------------
29545428.02249500200000
204 1122459
>>122458
Замени float на double, смысл останется тем же.
205 1123057
в постгре не работает upper lower на русском тексте
select lower('ЫВАПЫВ SDFSDF')
выдаёт
"ЫВАПЫВ sdfsdf"

куда копать?
206 1123067
>>123057

Нужен кластер в UTF-8.
207 1123070
>>123067
текущая база:
CREATE DATABASE jnom
WITH OWNER = jnom
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'C'
LC_CTYPE = 'C'
CONNECTION LIMIT = -1;
208 1123072
>>123070
да, и постгре стоит на винде с локалью win1251
209 1123097
>>123072
кароч сделал резервную копию и переустановил постгре с collation 'Russian_Russia.1251'
210 1123291
>>123097
Есть ещё хорошее расширение CITEXT. Можешь поставить его и забыть про все эти lowercase, uppercase
211 1123599
>>123291

> Essentially, it internally calls lower when comparing values


была бы такая-же проблема
212 1123602
Но хотя штука интересная, да. В мануале пишут, что оно делает регистронезависимый индекс
213 1125429
Помогите пожалуйста спроектировать оптимальную архитектуру в mysql для хранения примерно таких поступающих данных:
[
mark: 4.77,
timestamp: 1516785655,
{
question_text: 'some text',
answers_text: ['some', 'array', 'with', 'text', 'values'],
selected_answers: [0, 2],
},
{
question_text: 'some other text',
answers_text: ['some', 'other', 'array', 'with', 'text', 'values'],
selected_answers: [1, 2],
}
]
Сам бы сделал что-то вроде такого:
sessions(id: unsigned_bigint, mark: decimal[1,2], timestamp: timestamp),
questions(id: unsigned_bigint, session_id: unsigned_bigint, text: text),
answers(id: unsigned_bigint, question_id: unsigned_bigint, text: text),
selected_answers(id: unsigned_bigint, question_id: unsigned_bigint, value: unsigned_smallint).
Насколько пригодна в реальном мире предложенная мной структура?
214 1125430
>>125429
с джисоном чуть проебался, но не суть
{mark:1.33, timestamp: 1511111111, [{},{}]}
215 1125510
>>125429
Почему у тебя вопросы завязаны на сессии? Вопросы же это справочник, по идее. Селектед насверлил должны быть со ссылкой на сессию.
Не Бд подгоняй под входящие значения, а наоборот.
216 1125629
не закидывайте говном, знаю вопрос максимально аутистичный, но просто я очкую, вроде это и понимаю и знаю но все же, идти на собес нужно и что я долджен знать когда написано у работодателя что вот это нужно на их курсы мб кто четко пояснит:
Базовые знания теории реляционных СУБД
Базовые знания языка запросов SQL
Знание основ сетей и технологий виртуализации
и где лучше брать материалы и почему готовиться, нужно к понедельнику вот.
217 1125665
Поясните за горизонтальное шардирование, Лучше на уровне программы шардировать или через триггеры и настройки баз?
218 1125675
>>125629
sql-ex.ru
219 1125676
>>125665
Если данные позволяют шардировать на уровне БД, то лучше так и сделать. Не придется внутреннюю логику хранения тащить в приложение.
220 1125902
Привет, программач.
Прошу помощи с одной ебалой.
Есть таблица [activites] с активностью по клиентам.
[date_] - дата, id - id клиента, cnt - количество действий совершенных клиентов.

Задача в том, чтобы запилить отдельный столбец который будет начинаться с каждого клиента заново, то есть partition by id и количество подряд идущих 0 в таблице между активностями. То есть если была активность (любое ненулевое в cnt) счетчик должен сбрасываться на 0.

То есть считаем нули между ненулями по cnt.

Как пример должно выглядеть как на втором пикрелейтеде.

Программач, выручай.
221 1125961
>>125902
Тебе что конкретно надо. Сделать отчет в таком виде (столбец будет в отчете, а не в БД) или добавить столбец на рабочую БД (которая пополняется и там должен быть тот столбец с правильными значениями)? Отчет и программными средствами можно запилить. Текущую БД можно апдейтнуть скриптом. Если нужно чтоб при инсерте новой записи правильно заполнялся тот столбец - добавляешь триггер.
222 1125962
>>125961
Сделать это в отчете, да. Прав на редактирование БД у меня нет. Поэтому надо выкручиваться агрегатными функциям и LAG-LEAD'ами.
223 1125967
>>125962
Там у тебя чистый SQL или скриптец какой накидать можно? Скриптом без проблем делается, вроде как. Я просто бэкэнд-макака и в SQL настолько не силен.
224 1125968
>>125967
T-SQL там, но надо выполнить в форме привычного запроса select/from/where
226 1126586
Че, котаны, задачка.
Есть два стула две даты.
Например, 01.01.2138 и 01.01.2139.
Или 01.01.2138 и 01.02.2138.
Есть частота дискретизации - неделька, месяц.
Как получить колонку с первыми числами каждого месяца или колонку с понедельниками каждой недели?
оракл
227 1126598
>>126287
Огромное спасибо тебе, анон. Приду - запущу.
228 1126601
>>126586
Обычно это решается предварительной генерацией таблицы с датами.
229 1126607
>>126586

>колонку с первыми числами каждого месяца


это будет первое число, или что ты хотел? День недели?
230 1126649
Приветствую, аноны. У меня такой вопрос: нужно одним запросом выбрать все строки из таблицы И максимальное значение. Такое возможно сделать?
231 1126659
>>126649
Максимальное значение чего?
select * from [table] - это все записи
max([colName]) - это агрегатор для максимального значения
232 1126709
>>126586
select add_months(to_date('2138-01-01', 'YYYY-MM-DD'), rownum-1)
from dual
connect by level <= months_between(to_date('2139-01-01', 'YYYY-MM-DD'), to_date('2138-01-01', 'YYYY-MM-DD')) + 1
order by 1;

С неделями пока лень возиться.
233 1126788
>>125629
А не в епам ли ты собрался, а пидр?
image.png10 Кб, 225x225
234 1126864
Так, господа сертифицированные специалисты, мне нужно выбрать базу данных для хранения результатов прогонов хитрого алгоритма.

Суть токова:
Есть много данных, данные побиты на кусочки. Количество кусочков - десятки/сотни тысяч. Кусочки могут иметь версии (~единицы - десятки версий).
Есть алгоритм. Алгоритм тоже может иметь версии (~десятки версий).
Алгоритм жрет кусочки данных и высирает результат - объект состоящий из нескольких массивов байт и списка интов, общим размером до 300-500 кб (часто намного меньше).

Хочется выбрать БД в которой я буду хранить эти результаты обработки и делать запросы вида:
"достать все результаты для такой-то версии алгоритма и такой-то версии данных для заданного множества кусочков данных"

Хочется чтобы выбранная БД
- легко поднималась на амазоновском облаке прям по хардкору на спот инстансах с автоподнятием убитых нод даже аутистом далеким от БД
- отдавала результаты пиздец быстро и с минимальной задержкой
- имелись SDK под кресты и пистон
- [опционально] была стильной модной молодежной

Пока смотрел только MongoDB, но я в бд нихуя не разбираюсь а потому это как пальцем в небо. Посоветуйте годноты, аноны.
Домен - ML и анализ данных.
235 1126902
>>126864
Если кусочки между собой никак не связаны или это не имеет значения, то монга подходит.
Гугли Документоориентированная СУБД, Document-oriented database.
236 1127221
чем отличается rank() от row_number() в аналитических функциях в оракле?
237 1127273
>>127221

>ROW_NUMBER and RANK are similar. ROW_NUMBER numbers all rows sequentially (for example 1, 2, 3, 4, 5). RANK provides the same numeric value for ties (for example 1, 2, 2, 4, 5).

238 1127293
>>127221
>>127221
Если в пределах одной секции у двух записей совпадает ключ сортировки, они получают один ранг. При этом следующий ранг после них может назначаться по номеру записи в секции (ф-ция rank()) — из-за чего в последовательности рангов могут возникать пропуски— или как инкремент последнего ранга (dense_rank()) — такое «плотное» ранжирование наращивает номера рангов последовательно.

Примеры у анона выше. Для dense_rank() соответственно будет (1, 2, 2, 3, 4)

В отличие от обеих rank-функций, row_number() гарантирует уникальность значений в пределах секции и просто нумерует строки согласно условию сортировки. При этом, если ключ сортировки у записей совпадает, ты получаешь вообще говоря недетерминированную нумерацию.
Снимок.PNG40 Кб, 1305x821
239 1128184
Это структура таблицы словаря данных оракла
USER_CONSTRAINTS
или ALL_constraints,
структура у них одинаковая, только данные могут быть разными

чем отличаются выделенные столбцы между собой?
240 1128237
>>128184
Названием?
241 1128277
>>128237
нет
242 1128380
>>128184
Там же написано всё. R_ для ссылочной целостности, внешние ключи — вот это всё.
243 1128694
>>126649

>select *, case when row_number() over (order by id) then max(value) over () else null end as max_value from t_table


такие дела, в первую строчку вставим это максимальное значение, а все остальные оставим пустыми, чтобы меньше данных передавать в dataset.
dhYDrohnYW0.jpg79 Кб, 604x604
244 1129456
Ребят не нашёл инфы как сделать запрос отвечающий данным условиям: " В таблице А столбец В имеет тип «Date» Как вывести все значения столбца В в формате ГГГГДДММ ". Подскажите пожалуйста запросом! Не знаю как вывести именно в таком формате.
245 1129467
>>129456
ms sql

declare @d date = getdate();
select format(@d, 'yyyyddMM') as FormattedDate

Ты студент что ли?
246 1129604
Oracle
Какова максимальная длина выражения в execute immediate?
Хочу туда захуячить 'create or replace package body', но в варчаре это не вариант, пушто слишком дохуя
Можно clob туда делать? Такую пиздатую шнягу придумал эх.
248 1129748
>>129666
Смотри, вариантов решить проблему несколько.
И все они мне не нравятся.
Эту задачу точно нужно решать средствами БД?
По-хорошему, я бы считал нужное тебе значение при попадании записи в БД, а не городил бы ебенячий запрос.
249 1129753
>>129748
мненужно именно средствами БД, а именно оракла,
это на регулярки задачка
мне её прям сейчас очень нужно решить, поможешь?
250 1129761
>>129748
так поможешь, анон?
251 1129782
>>129761
Ну я смотрю регулярки, только не оракловые.
Пока решения не нашел.
253 1129835
>>129808
спасибо
254 1129910
concat( lpad(dayofmonth(birthday), 2, '00') , lpad(month(birthday), 2, '00') ) = concat( lpad(dayofmonth(date(#{dateStart})),2,'00') , lpad(month(date(#{dateStart})),2, '00') ) )
XWqbCIZqQ.jpg80 Кб, 535x604
255 1130011
Парни, сердечно прошу, намутите нормальную шапку для треда.

Для начала сойдет и просто описание краткое самых популярных бд, чтобы анон понимал, для чего конкретная бд используется чаще всего.
А то смотришь иногда вакансии, там тебе и монга, и постгрес, и редис, и рэббитмкью. Ладно первые две, но вот последние хуй знает для чего используются конкретно, с чем варятся, и как едятся. Плюсы, минусы какие-нибудь. Может поискать сравнительные статейки.
HAJ83IWxLrk.jpg221 Кб, 683x1024
256 1130013
>>130011
ПС: я бы тоже, может, поучаствовал, полезно в качестве самообразования
257 1130044
>>109064
Я обычно использую для оптимизации своих отчетов. В отчете пару временных таблиц которые используются потом для подсчета. Так вот создаю кластеризованные индексы для того поля по которому потом обращаюсь.
image.png53 Кб, 671x532
258 1130045
PL/SQL vs T-SQL

Привет, анонасы. Больше года проработал разрабочиком отчетов под ms sql server. Есть хорошая аналогичная должность в одном банке, но там oracle. Вопрос: какие есть отличия в синтаксисе? Что можно использовать в oracle чего нельзя ms server и наоборот?

Уже понял что сама парадигма основного синтаксиса sql похожа, но различаются именно в диалекте t-sql / pl.
259 1130128
>>130045
могу сказать главное T-SQL сосёт ХУИ.
Серьёзно. Диалект отличается, да, и стоит изучения, а так норм идея.
260 1130143
>>130045
Погуглить-то что мешает?
https://stackoverflow.com/questions/7283828/what-are-the-major-differences-between-the-mysql-and-oracle-sql-dialects
Ебашь в банк, если место норм, а то так и будешь всю жизнь ключи подавать.
262 1130284
>>130128
Может в сравнении с оркалом и не очень. Но у меня с базами мелкомягких проблем не было. Правда мне приходилось сидеть на 2005. Всё равно намного лучше, чем какой-нибудь мускуль пятый.
263 1130287
>>130284
это другой анон
264 1130630
>>130284
MySQL сервер такое себе. Если хочешь что-то на уровне ms или oracle то гляди в сторону постгре. Она топ.
265 1130636
Аноны, мне тут 1 человек скинул прошивку для навигатора, я чет очкую ставить ее. Онлайн антивирусы говорят - что вируса нет. Но боюсь получить кирпич из навигатора.

Кто может пояснить за код прошивки? Тут всего 3 файла с охуллиардом строк. Код имеет вид:
08f0 9fe5 0a4e 6321 bca3 e220 a616 2a21 и таких строк просто до сраки.
266 1131200
Анон, короч есть задание - сделать ер диаграмму базы данных для отчета по 2ндфл за 2016 год, я нахуевертил вот это, пока без связей, но чую что хуйня полная, направьте в нужное русло
267 1131242
Аноны, привет
Решил сменить вектор деятельности. Почитав форумы и поспрашивав понял, что многие советуют пидорить в бд, изучать pl и прочее. Насколько это грамотное решение?
268 1131260
>>131242
SQL в любом случае спрашивают на собеседованиях.
Глубоко можешь не копать, поехавшие БД-админы иногда рисуют на бумажке таблицу из двух колонок, и требуют её джойнить/группировать с ней же самой, но в этот момент надо вежливо уйти с собеседования.
А вот запрос о количестве чего-либо в заданное время «от/до» с пустыми клетками — можешь мне не верить, но спрашивали даже там, где SQL вовсе не было.
Screenshot29.jpg54 Кб, 772x401
269 1131518
Ребята, мне выпилиться или такие запросы - это норма?
Hozyaykamednoygoruy001.jpg75 Кб, 395x600
270 1131537
>>131518
Не вижу ничего плохого.

Prepared Statements были бы лучше, но у аффтара они не...

— Тяжело тебе, Данила-мастер?
— Ох, тяжелооооо
— Не выходит у тебя, Данила-мастер, каменный цветок?
— Не выхоо ооо оо ооооооо
271 1131601
>>131518
ХЗ, детский сад какой-то. Что-то похожее писал будучи перваком. И вообще, клеить так запросы это bad practice, лучше уж какой-нибудь arg-list.
272 1131622
>>131601
>>131537
Ну тут названия таблиц динамически подставляются, через подготовку не получится сделать.
Через какой костыль такой функционал можно сделать лучше?
273 1131632
>>131601
Спасибо, а как надо писать?
274 1131636
>>086747 (OP)
Анон, у кого-нибудь был опыт работы с распределенными файловыми системами (hdfs, ceph), как с бэкэндом для баз данных, поддерживающие тип LSM-tree(leveldb, rocksdb)?

Очень интересно узнать про какое-нибудь решениие, которое позволяет читать\писать в такие базы, но чтобы все в пиздец не скатилось.
275 1131759
Посоветуйте онлайн-обучалку по SQL. Бесплатную и интерактивную (а-ля htmlacademy, но можно на английском), желательно с рассасыванием различий в диалектах MySQL/PostgreSQL.
276 1131791
>>125902
Ради опыта решил проверить решение >>126287-анона - не работает. Если кому пригодится, у меня решить получилось так - https://pastebin.com/SNyNxBAW.
Правда думаю, что можно и оптимальнее сделать.
277 1131803
>>131759
sql-ex.ru
278 1131807
>>131791
А что не так с тем решением?
279 1131885
>>129604
ХУЯЧЬ
@
ПРОВЕРЯЙ
280 1131891
>>095054
Кто-нибудь уже запиливал трушные БД с точки зрения этой книги? Или везде SQL?
281 1131920
>>131807
Оно не работает, очевидно.
282 1131933
>>131920
Мне интересно, как именно оно не работает. Синтаксическая ошибка, данные не те выводит (тут было бы неплохо фоточку).
Clipboard01.jpg90 Кб, 1269x854
283 1132034
>>131933
И синтаксическая и логическая, т.к. скрипт не учитывает конкретного юзера.
285 1132112
>>132089
Теперь правильно, только работает, если -1 заменить на '1900-01-01'.
286 1132127
>>132089
>>132112
Забыл сказать спасибо. Когда сам пытался делать, аналогично в APPLY хотел ограничение на tt.date_ сделать через ISNULL с максимальной датой, но неправильно сравнивал даты внутри селекта, т.е. у тебя ttt.date_ < t.date_, а я делал ttt.date_< tt.date_ и у меня счетчик не обнулялся.
287 1133074
Сценарий.
Вставляются записи в таблицу А. На одном из столбцов ограничение по внешнему ключу, который ссылается на таблицу Б. Если такой записи в таблице Б ещё нету, то запись нужно создать, данных на входе достаточно.

Собственно как в приличном обществе поступают?
1. Перед записью в таблицу А всегда делать запись в таблицу Б если её ещё нет.
2. Как-то ловить неудавшуюся из-за ограничителя запись в таблицу А, и дальше уже что-то там делать.
3. Какой-нибудь особый паттерн специально для таких случаев.
4. Не выёбываться, потому что внешний ключ для того и сделали чтобы ограничивать всякое левое говно.

pg если это имеет значение
288 1133117
>>133074
первое
289 1133134
>>133074
В мускуле можно не ссылаться на строку, то есть вместо id записать NULL.
Попробуй, может тебе тоже так можно.
290 1133361
Всё, конец
Я не могу селект написать...
Мне кажется, что я деградировал от алкоголя и теперь меня уволят

Есть таблица номер договора, дата, сумма просрочки (0 - просрочки нет). Упрощённо
По каждому договору на каждую дату есть запись
Мне нужно выделить из таблицы все непрерывные периоды просрочки, то есть получить историю:
Договор, дата начала просрочки, дата окончания просрочки

Спасибо!
291 1133362
>>133361

> Всё, конец


>Я не могу селект написать...


>Мне кажется, что я деградировал от алкоголя и теперь меня уволят


>


>Есть таблица номер договора, дата, сумма просрочки (0 - просрочки нет). Упрощённо


>По каждому договору на каждую дату есть запись


>Мне нужно выделить из таблицы все непрерывные периоды просрочки, то есть получить историю:


>Договор, дата начала просрочки, дата окончания просрочки


>


>Спасибо!



max(), min() over (partition by docid), не?
292 1133363
>>133362
Может быть больше одного периода по договору
То есть сначала есть сумма долга, потом нет, потом опять есть и ТД
Не знаю, как это обрабатывать
111.png10 Кб, 966x294
293 1133418
>>133361
Все гениальное просто, вот как надо.
Не буду присваивать чужие заслуги, мне подсказали.
294 1135855
>>086747 (OP)
Где можно почитать про оптимизацию SQL?
295 1135856
>>135855
MS SQL*
297 1137753
>>118538
Очевидно же, что ты по тикерам потом захочешь строить себе графики. Однозначно надо SQL.
298 1138220
Бамп
Дайте задачек порешаю, мне делать нехуй
299 1138295
>>138220
На какой диалект?
300 1138321
>>138295
Оракл
301 1138323
>>138321
Напиши свертывание диапазонов.
Дано:
1
2
3
4
5
7
9
10
11
12
13
22

Надо получить:
1-5
7
9-13
22
302 1138325
>>133418
>>138323
Отвечу тебе вторым моим постом, эту задачу я уже решал по своим нуждам
Надеюсь не нужно совсем адаптировать, почти слово в слово всё то же самое
Это классическая задача "start of group"
Этапы такие:
1. Проставляешь 1 там, где у тебя разрыв в данных
2. Делаешь упорядоченное суммирование этого показателя по росту значения. Получится, что у первого диапазона 1, у второго 2 и тд
3. Потом делаешь обычную группировку по показателю из п2, находя минимальное и максимальное значение
303 1138330
>>138321
Дано
Таблица A - начало и окончание линии(line_id; line_begin;line_end)
Таблица B - разрывы в линии (break_id; line_id, begin, end)

Все разрывы лежат внутри линии (т.е. линия не начинается и не заканчивается разрывом) и не пересекаются между собой. Разрывов может и не быть.

На выходе нужно получить отрезки, на которые распадается линия.
304 1138331
>>138325
А без lag() сможешь?
305 1138340
>>138331
Смогу, но ведь это некрасиво.
lag можно заметить на селект в селекте (select max(value) from table t where t.value < table.value)

>>138330
Прикольно, я подумаю.
306 1138342
>>138340

>lag можно заметить на селект в селекте (select max(value) from table t where t.value < table.value)



Еще можно с иерархическим запросом сделать.
А с оконными функциями можно и без суммирования сделать

>Прикольно, я подумаю.



Завтра напишу вторую часть задачи.
307 1138373
>>138342
Как с оконными функциями, если сразу границы окна не знаешь? Напиши
308 1138545
>>138373

>Как с оконными функциями



Опечатался, с аналитическими. С lag и с lead.
309 1139040
Существует ли бд которая может быстро сортировать большой датасет ~1гб ?
монго крашит с лимитом 32 мб
310 1139085
>>139040
Существует.
Вопрос вообще некорректный.

Быстро - это сколько? На каком железе?
Какова природа и структуры данных?
311 1139372
>>139040
А что значит сортировать?
Тебе ведь сортировка для чего-то нужна. Для чего тебе сортировать 1 Гб, да еще и быстро?
312 1139407
>>138340

>Прикольно, я подумаю.



Как успехи? Получилось решить?
313 1140275
>>139372
любая реляционная субд с поддержкой индексов.
314 1140330
>>139407
Времени не было особо, сегодня вечером потуплю под винишко

Кстати, мой мертворождённый чатик в телеграме, заходите @database2ch
image.png257 Кб, 1838x915
315 1143040
Как привязать таблицу график загрузки тренера к другим? И в группе тренер и в индивидуальном, а как это вместе чекнуть?
316 1143076
>>143040
Вопрос нормально сформулируй для всех.
317 1143087
Как выполнять insert, если в таблице только один столбец ID, который PK AUTOINCREMENT?
318 1143143
>>143087
Давай внимательно разберем по частям тобою написанное.
Зачем тебе таблица, которая не хранит никакой информации? Если ты планируешь инсертить те же значения в какую-то другую таблицу, то сделай их первичным ключом в той таблице. А если ты планируешь инсертить значения типа "Я покакал" и важно тебе будет только количество записей в этой таблице, то и первичный ключ на ней не нужен.
родиненужныгерои.png7 Кб, 570x173
319 1143155
>>143143
Кстати, мой божественный 12 оракл умеет делать так.
Но в более ранних версиях так не получится, там как минимум нельзя делать значение сиквенса значением по умолчанию.
Разве что инсертить что-нибудь и обрабатывать через триггер before_insert, чтобы вставлялось значение сиквенса.
Но просто ответь НАХУЯ, заинтриговал.
320 1143166
>>143155
Я делаю чатик. На сервере ведется количество всех бесед, чтобы каждая беседа была уникальна. Собственно, все, что мне нужно - только ее идентификатор. Каких-то названий, описаний, и т.д. у нее нет. Также на сервере есть таблица, в которой указано какой юзер в какой беседе участвует. Когда я отправляю сообщение, в нем указан ID беседы, сервер смотрит всех ее участников и каждому отправляет это сообщение. Именно поэтому и обязательно, чтобы ID был уникальным. Я хуй знает, как это сделать по-другому. Может, есть идеи упростить эту хуету?
321 1143460
Анончики, а есть хорошие книжки по Cache русскоязычные?
322 1143466
>>143166
В таблицу беседа можно добавить:
Тип беседы (открытая/по приглашениям/видимость для поиска и т.п.)
Дату создания
Дату удаления
Дату последнего сообщения
И еще кучу всего можно напридумывать
Так что смело делать т0бличку
323 1143471
>>143155
Что-то типа синтаксического сахара получается.
Какой профит от подобной фичи?
324 1143490
>>143466
Но ему же НИНУЖНО

>>143471
Что ты имеешь в виду? Чем тебе не понравился мой божественный код? Почему ты задаешь вопросы мне, а не автору поста? Ему нужно было инсертить в таблицу с единственным столбцом, который автоинкрементарный ключ, я это реализовал и показал, что ещё?
325 1143495
>>143490

>Чем тебе не понравился мой божественный код?


Да все ок, просто спросил, может, какие-то не очевидные с первого взгляда бонусы есть.
Сам на 11 сижу.
326 1143502
>>143495
Так я и говорю, что на 11 нельзя сделать сиквенс значением по умолчанию. Поэтому приходится плодить тривиальные триггеры бефор инсерт, которые будут проставлять значение сиквенса в столбец
В 12 мега удобнее, потому что дефолтное значение ты сразу видишь, глядя на таблицы, а про триггеры ты и забыть можешь
327 1143506
>>143502
Зачем триггеры?

insert into talk (talk_id) values (sq_talk.nextval);
328 1143510
>>143506
Но ведь дефолтное значение надёжнее
329 1143514
>>143510
Насколько я понимаю, никто не мешает вставить недефолтное.
Да и мест, где инсертится обычно не сильно много.

Но в плане того, что залез в табличку и увидел сиквенс для нее - удобно, да. Особенно в том случае когда не соблюдаются правила "одна таблица - один сиквенс" и "сиквенс называется префикс_таблица ".
330 1143564
>>143076
Выходной документ: график загрузки тренера в тренажерном зале.
331 1143593
>>143564
Ты действительно считаешь, что общество будет тратить на ответ тебе больше слов, чем ты потратил на вопрос?
Иди на хуй. Спросить нормально не можешь.
332 1143614
>>143593
Ты действительно не можешь понять? Мне в БД нужна таблица, по запросу которой, нужно выводить график загрузки определенного тренера. Как тут еще КОНТРЕТНЕЙ-то объяснить?
333 1143619
>>143614
Я не обязан ничего понимать и помогать тебе. Ты просто ведёшь себя неуважительно
334 1143735
>>143614
Глянул твою схему. Не понял, зачем отдельная таблица для загрузки тренера, если эту информацию можно брать из индивидуального расписания учеников. Как по мне, дублирование информации получается.
335 1143944
>>143040
В чём пилятся такие связи?
336 1144369
>>143944
http://dbdesigner.net

>>143735

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


Да, я как раз решаю эту проблему. Спасибо.
337 1144507
Как выучить SQL за месяц
338 1144601
>>144507
Дрочи теорию, потом ищи задачи и ебошь. Можешь матан писать на сиквеле. За месяц в джуниора превратишься, если по 8 часов в день будешь уделять.
339 1144644
>>144507
Для чего и на каком уровне?
340 1144732
>>144507
ставишь postgres
решаешь 100 (даже 50 хватит) задач на sql-ex.ru
параллельно читаешь там же теорию и проверяешь её в postgres
и статью про джойны на википедии прочитай
за месяц точно можно успеть
341 1145110
есть норм литература по SQL*Plus и MySql?
342 1146276
Че почитать, чтоб в оракле было проще делать бд? Только недавно вкатился, пока туго идет, особенно скл код чет сложновато писать
343 1146663
>>146276
Что именно вызывает сложности?
344 1146682
Дана одна таблица.
В ней два столбца
ID и Date
Задача: вывести оба столбца, но:
1) не выводя строке где Date c NULL
2) выводить только 2017-й год
С первой задачей справился. Остается вторая, но как только не писал. И date LIKE '%2017', и date BETWEEN '01.01.2017 AND '31.12.2017' - не работает. В чем может быть проблема? создавал БД сам, в Acceess
345 1146776
>>146682
Дата у тебя скорее всего имеет тип Date, а ты пытаешься работать с ней как со строкой.

https://accesshelp.ru/funkcija-datepart-v-zaprosah-access/
346 1146904
Аноны, есть задача запилить бд в аксессе, но опыта работы с б.д. нет практически совсем. Есть шарящие господа, которые могут помочь составить логику работы?
347 1147493
>>146682
YEAR([Date])=2017
348 1148059
Бля, почаны. Присутствуют тут опытные NoSQL бояре?

Есть реляционный Postgres монстр на пятьсот таблиц. Ебаные джойны и CTE душат пиздец. Пол базы в оперативной памяти. Траффик кеша десять гигабит пробил.

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

Наставьте на путь истинный долбаеба.
349 1148109
>>148059
Тебе нужен редис. или любая другая хуйня, которая позволяет делать 2 вещи:
1. хранить данные в памяти
2. складывать их в нужном формате на диск.
350 1148167
>>148109
1. Че будет с редисом если память таки кончится? Есть вероятность свалиться в конский своп? Как редис из таких ситуаций выгребает?
2. Я так понимаю что если он приляжет, то тому что было в памяти пизда и нужно все-таки хранить данные еще и в более надежном хранилище.
3. Главный вопрос в каком виде хранить данные. Если есть ебическая выборка по которой матвьюшка строится десять часов и которая меняется от любого пердежа, то как такое хранить и поддерживать в том же редисе?
Обновлять все чего коснулись изменения сразу? Раз денормализовано, то и мест таких будет по идее больше. Redis выдержит такую напругу?
А если периодически, то чем вообще такие отложенные обновления производятся и в чем отличие от того же построения матвьюшки?
351 1148304
Недавно пришла в голову мысль запилить БД на файликах. Без мускула и каких-то серверов, всё хранить открывая/записывая/закрывая файлы. С форматом не опредился, yaml, json, xml, csv иили вообще свой придумаю.

Как идея, взлетит?
352 1148312
>>148304

>Недавно пришла в голову мысль запилить БД на файликах. Без мускула и каких-то серверов, всё хранить открывая/записывая/закрывая файлы. С форматом не опредился, yaml, json, xml, csv иили вообще свой придумаю.


> впизду твои костыли, уже есть sqlite

353 1148314
>>148304

впизду твои костыли, уже есть sqlite
354 1148326
Можете пояснить, почему на форме не работает поле РЕЗУЛЬТАТ? Вот сама БД, если что http://dropmefiles.com/Ygvjk
15187654414303.jpg47 Кб, 447x589
355 1148690
Как с помощью MS SQL оптимизировать запрос, в котором нужно по двум численным колонкам в одной таблице и двум в другой произвести расчеты по таблице и сохранить это все?
Ну там тип этих колонок, индексы-хуиндексы?
356 1149900
Странный вопрос, но потом продублирую на стак.
В оракле есть функция по взятию хэша. Мне нужно взять хэши процедур, пакетов, триггеров и вьюшек. Как это сделать легко и просто? Я помню что тексты процедур и функций хранятся в одном из представлений системных. А где триггеры и прочее? Или есть какая-то крутая фича, которая считает все сразу?
image.png236 Кб, 1785x927
357 1150232
Primary key - это универсальный ключ, который ни разу не повторятся.
У меня не слишком их много?
358 1150233
>>150232
Суррогатных ключей никогда не бывает много.
359 1150317
Кто может подсказать хорошую литру или курс по построениям баз данных? Хочу освежить знания( а занимались по учебнику из 80-ых)
360 1150478
Делаю телеграм бота, он должен хранить имена пользователей, несколько свойств этих пользователей, а также кучу расписаний на неделю. Например, если у пользователя такое то свойство, то у него такое то расписание на каждый день.
Что для этого использовать? Sqlite, SQL? До этого ничего общего с бд не имел. Использую сишарп если что.
image.png31 Кб, 623x366
361 1150763
ЧЯДНТ?
362 1150774
>>150763
Разобрался
363 1150923
Чет я испытываю траблы. Как мне в Group work передать массив клиентов? А то получается, что я по одному ввожу.
364 1150950
>>150923
Не понятно, что ты хочешь.
365 1151187
>>150923
Какая у тебя СУБД? Используешь ли хранимые процедуры?
366 1151310
>>150923
сделай структуру
image.png6 Кб, 397x117
367 1151964
какой нужен запрос чтобы выбрать чувака с именем васян и задать ему школу номер 228?
368 1151987
>>151964
-Эй, база, дай всех с именем васян
-на
-вот этому сет скул 228
-окей
369 1152007
Ананасики, помогите пожалуйста!

Вот задание:

Перенести продукты из одной категории в другую.

То есть мне нужно в одной таблице присвоить запись другой категории записей. Как это сделать?

То есть, было "Chocolate, Desert", а стало "Chocolate, Beverages". Как это сделать? Я нихуя не могу понять, а в гугле нахожу только перенос из одной таблицы в другую. Мне же все надо сделать в единственной таблице.

Спасибо заранее.
370 1152271
>>152007
http://sqlfiddle.com/#!4/d6d1f/1

Что-то в таком духе, если я правильно тебя понял.
371 1152839
Может кто-нибудь писал бд "Реализация готовой продукции"?
Подойдет и просто пример того как должны выглядеть таблицы и связи между ними в идеале. Но если есть и mysql код -- тоже замечательно. Спасибо
372 1153946
Нужно изучить SQL на уровне самого базового понимания и умения делать простые запросы. Есть ли какой-нибудь интерактивный материал где кратко объяснен синтаксис и есть упражнения?
373 1153960
>>153946
Тред почитать? Загуглить? Совсем даун что ли?
374 1154149
>>153946
sql-ex.ru
375 1154440
Судя по треду, лучше вкатываться в oracle, чем в ms sql, верно?
376 1154471
По бабосам - да, в мускл больше шансов вкатится если скил сиквел не особо высокий.
377 1154797
>>154440
PostgreSQL
378 1154931
Котаны, есть одна MS SQL база.
1. Как в ней устроные индексы? В виде сбалансированного дерева или нет?
2. Если есть составной индекс, но я ищу только по одному из полей, будет ли он работать и как быстро по сравнение с простым индексом на этом поле?
3. Чем, блять, скан от сика отличается?
379 1155325
>>154931
Вскукарекну из-под шконочки:
1) Да, B/B+-деревья.
2) Работать он в любом случае будет, но вряд ли быстрее обычного индекса по конкретному одному полю (и в плане поиска и в плане вставки/удаления/обновления). Зависит от того, какие данные в полях составного индекса хранятся и в каком порядке поля указаны. Кмк, чем более уникальна комбинация, чем "легче" тип данных (int'овое значение быстрее ищется, чем nvarchar'овое), и какой порядок (есть разница между int-nvarchar или nvarchar-int), тем быстрее он будет работать. Ну и в вопросе не уточняется, кластеризованный или некластеризованный индекс.
3) Не хочу напиздеть, но scan вроде двух видов может быть, т.е. table scan - перебор всех строк в таблице (когда в таблице нет индекса и поиск идет по всем строкам), index scan - перебор всех значений / ссылок на значения на узлах дерева (индекса) (когда в таблице есть индекс и поиск идет по всем значениям / ссылкам на значения). (Index) seek же относится только к индексу - поиск идёт по конкретным узлам дерева (индекса) для поиска конкретных значений / ссылок на значения.
380 1155579
Можно ли создавать таблицы как тип внутри других таблиц? Или я долбаеб и так делать не надо? Тогда в чем мне хранить маленькое расписание, в хмл?
381 1155582
f
382 1155639
>>155579
Так делать можно, но тебе, скорее всего, так делать не нужно.
Снимок.PNG24 Кб, 1197x672
383 1155837
Ребята спасайте, ебусь со схемой
Есть викторины, есть игроки, есть вопросы и у вопросов варианты ответов (пока можно не смотреть даже).
Как приебланить ответы игроков
Прикрепляю схему, там вроде всё понятно по замыслу
Спасайте братцы
384 1155902
>>155837
Таблицы Question_in_quiz и Players_in_quiz объединить в одну и добавить в неё ansrewId.
385 1155951
Сап базонюхи, подсобите кабанчиком. Я про SQL прочитал несколько статей на вики, не провентилировал темку еще, но надо маленькую мутку мутануть:
- есть в базе данных таблица, из которой надо ебнуть ненужные записи и оставить нужные. На данный момент мне удалось сделать DELETE FROM НАХУЙ, то есть выбираю ненужные записи и удаляю их

Чо мне надо: я хочу сделать наоборот - выбрать из таблицы нужные записи (их немного) во вспомогательную таблицу, потом ТРУНКАНУТЬ всю основную таблицу и догрузить в нее нужно из вспомогательной. Но скрипт типа SELECT * INTO <вспомогательная таблица> FROM не срабатывает, ошибку выдает какую-то (выполняю из сторонней программы скрипт подключением к внешней базе). Я так подозреваю, вспомогательную таблицу надо сперва создать, а потом в нее пердолить данные? А что, если я в душе не ебу, какая структура у этой таблицы и мне нужно как-то динамически создавать вспомогательную копию с той же структурой как и у основной, что для этого писать в запросе?
386 1155974
>>155951
Делай инсерт а не селект инту.
Инсери инто бла бла селеки фром блаблабла.
Кайта чтоли прочитал?
387 1155975
>>155951
Насчет создания второй структуры: бери ддл таблицы и создавай по ней новую. Вродн все норм программы для рабоиы с субд умеют вынимать ддл
388 1155993
>>155974
С инсертом хуйня 100% не работает, потому что инсертит только в существующую таблицу. С селектом тоже.
>>155975
Да ты мне скажи конкретный пример чо писать английскими словами. В душе не ебу, как твой ддл брать. Нагуглить я могу и сам, было бы время. Мне бы щас просто написать, чтоб работало, а разбираться потом будем.
389 1156012
>>155639
Ну сматри, у меня есть таблица с классами, у каждого класса есть расписание.
Расписание состоит из урока, дня урока и его номера за списком.
Кроме таблицы в таблицы и хмл был вариант записать все эти уроки в одну таблицу, привязав к им класс, но чет это не очень оптимизировано.
И ещё один вопрос: допустим, у меня есть таблица, в которой хранятся некоторые файлы. По какому то иденфикатору мне надо найти фотку. Как это лучше сделать, одной таблицей или двумя? Мне кажется, что в первом случае пикрл 1 при поиске фотки СУБД будет загружать в ОЗУ каждую фотку в таблице, а во втором случае пикрл 2 и 3 сразу выдаст нужную фотку.
Пока писал это, появился вопрос, как можно хранить лист фоток, которые привязаны к одному объекту, в бд?Этот лист будет состоять ну максимум из 5-10 фоток, чаще всего будет одна фотка или их вообще не будет.
390 1156035
>>155951
Какая СУБД? У каждой есть синтаксис для селекта во временную таблицу, но у всех немного отличается.

На мускуле что-то такое:
https://stackoverflow.com/a/5859469

На ms sql просто селект.
391 1156038
392 1156049
>>155993
Выбери в просмотрщике таблиц нужную таблицу, выгрузи ддл.
Либо ебашь адовую массу типа create table tablename select * from tablebasr where null; потом инсертишь в эту таблицу селектом. Insert into tablename select blabla from tablebase where blabka.
Если запрос с созданием не работает, то делает крейт тейбл tablename like tablebase
393 1156077
>>156035

>просто селект


просто селект блять просто селектит, а мне надо во временную таблицу
>>156049
да какой впизду просмотрщик, у меня есть oledb соединение с базой и имя таблицы, а что на сервере творится, я не ебу, мне нужно прямым запросом очистить эту таблицу, но не всю. Короче я понял, тут базотред уровня /b. Попробую чистить без задней мысли, может прокатит.
image.png16 Кб, 559x463
394 1156082

>1156012


во вложенные таблицы стоит складывать не очень важные данные, по которым не будет поиска и джойнов.
Уроки - это самая важная часть, поэтому она должна быть отдельной таблицей. Количество записей тебя не должно смущать, для СУБД это семечки (при условии что ты правильно сделал индексы). Ну и про внешние ключи не забываем.
Если ты делаешь уроки полем какой-то таблицы ты создаешь себе офигенные проблемы - будет просто нереально с этим что-то сделать.
По второму вопросу второй вариант вообще бессмысленный, он никак тебе не поможет.
Насчет памяти не переживай, если для поиска ты не будешь поле LOB использовать, то оно никак не помешает. Если ты ищешь по ID, то там уникальный индекс, он вообще в таблицу не полезет при поиске, только когда данные будет отдавать.
395 1156084
>>156012
>>156082
Проебался с разметкой
image.png3 Кб, 325x168
396 1156086
>>156012

>хранить лист фоток, которые привязаны к одному объекту



В табличке PHOTO есть колонка object_id, которая содержит ссылку на запись OBJECT. Для нее должен быть сделан foreign key и индекс.
397 1156090
>>156077
Бля я тебе решение дал с креэйтом, хуле ты такой долбоеб, блядь?
Оледб хуе мое. У тебя значит есть логин/пароль, зайди в бд через какой-нибудь тоад и глянь свою таблицу, вот пиздец, ленивый обмудок.
image.png21 Кб, 707x480
398 1156095
>>155837
Навскидку я бы так предложил.
Question quiz можно убрать, если в каждой викторине вопросы уникальные. Ссылка answer на question - для удобства поиска, ответ ведь не меняется, поэтому можно сразу сохранить все поля. Меньше джойнов потом будет.
399 1156098
>>155951
insert into vspomojitelnaya (col1, col2 .. coln)
select col1, col2..coln from osnovnaya
where col1488 = %yoba_uslovie%;

commit;

truncate table osnovnaya;

insert into osnovnaya (col1, col2 .. coln)
select col1, col2..coln from vspomojitelnaya;
commit;
400 1156100
>>156086
Я тоже так думал, но после

>Для СУБД количетсво данных семечки


Наверное так и сделаю: таблицу всех фоток, в которых будет содержатся ид хуйни, к которой они привязаны, и таблица всех уроков на все расписания для всех школ. Спасибо, анон.
401 1156101
>>156098
а блять, у тебя нет вспомогательной, тогда вместо первого селекта
так: create table vspomojitelnaya as (select * from osnovnaya where ....);
Ну это если есть права на создание таблиц.
402 1156112
>>156090
Ёбик, хули ты такой ограниченный, не программист что ли? Решение должно быть универсальным - подсунул любую таблицу, она обрабатывается. Из-за тебе сука походу придется читать структуру таблицы и криэйтом динамически заебенивать копию. Но мне лень, может есть какой-нибудь простой способ в три хода.
403 1156116
>>156101
О, вот это заебочек. Только поясни, create делает прямо новую таблицу на диске, а не временную в темпдб? И че мне после последнего инсерта надо ее дропать? Алсо что за коммит, нахуя коммит? Нигде не видел чтоб его использовали, транзакции вроде нету же, или эта хуита как бы разделяет операции просто?
404 1156129
>>156116
Да, дропнуть нужно будет вспомогательную.
Коммиты можешь убрать, что там у вас для запуска скрипта, GO? После каждого выражения тогда GO пиши.
create делает просто таблицу, в SQL Server вроде префикс # указывает, что ее нужно создавать в tempdb (т.е. create table #zzz создаст ее в темпдб). Дропнуть все равно нужно будет.
405 1156139
>>156082
бля, немного читал тебя жопой ибо был в шкалке.

>Уроки - это самая важная часть, поэтому она должна быть отдельной таблицей.


Но само рассписание, которое мне надо получить, содержит только список уроков на неделю, в котором будет около 30 записей, в которых я могу разобратся, просто выгрузив все рассписание в свою програму.
И как делать "правильную" выборку по ид? Или SELECT * WHERE id = 228 будет достаточно, т.е оно не будет чекать каждый элемент и сравнивать его ид с 228?
как разобратся в этих йоба графиках на твоих пиках?
406 1156140
>>156129
Не работает. И с # в том числе. Возможно действительно прав нет на создание таблиц.
407 1156154
>>156139
Список уроков на неделю - это лишь частный случай.
Допустим, ты захочешь сгенерировать для каждого учителя его план занятий на четверть или посчитать количество часов по тому или иному предмету или увидеть наиболее или наименее загруженное время в школе.
В этом случае вложенные таблицы будут очень неэффективными.
Если ты захочешь сохранять информацию о перенесенных или отмененных уроках - тоже непросто будет. Или если класс на английский язык на две группы разделяется. Или если на физкультуре мальчики отдельно, девочки отдельно.
Проектирование схемы данных - очень важный этап, нужно предусмотреть очень многое и заложить потенциал для развития и расширения.

Схему читать очень просто - квадратики это таблицы, стрелочки означают что в таблице есть ключ из другой таблицы (на которую показывает стрелочка), вот кстати опечатка у меня - стрелка от lesson должна идти к teacher. Это значит, что в таблице lesson есть поле teacher_id (преподаватель, который ведет урок. Это решение подходит, если урок ведет один преподаватель. Если из больше, то нужно делать еще одну таблицу TEACHER_LESSON). Если стрелка на саму таблицу указывает, то это значит, что в таблице т.е. одно из полей ссылается на другое поле в этой же таблице.

> SELECT * WHERE id = 228 будет достаточно


Достаточно, если у тебя есть индекс по полю id. СУБД прошерстит индекс (он отсортирован, конкретный id найдется очень быстро), и из индекса возьмет информацию о физическом расположении записи.
Т.е. индекс как оглавление в книге (или предметный указатель), если его нет, то чтобы найти главу по названию, тебе придется последовательно пролистать все страницы, пока не найдешь нужную. А с оглавлением ты сразу знаешь номер страницы.
408 1156156
>>156140
что пишет?
Если данных немного, то может тупо выгрузить в файл, а потом загрузить обратно?
409 1156173
>>156156
А ничего, я вслепую скрипты выполняю, они либо выполняются, либо нет. Походу надо на сервере логи смотреть.
410 1156262
>>156154
Спасибо анон. Не ожидал, что на дваче мне-долбаебу все так грамотно розжуют
411 1156562
Пагни, можно ли в MS SQL из одного соединения откатить транзакцию другого соединения? Суть токова: подключается к базе соединение А в момент t1. В момент t2 к базе подключается соединение Б и начинает в ней вычислять сладкий хлеб, помоить таблицы. Нужно каким-то образом из-под соединения А в момент t3 взять и откатиться к состоянию t1, как будто соединение Б ничего не делало. При этом соединения должны оставаться активны, т.е. ручной бэкап не прокатит, все должно выполняться скриптом. Я охуел или так можно?
412 1156564
>>156562
А в чем задача-то? Сеанс А и Б одновременно редактируют одни и те же данные? Если сеанс Б зафиксировал изменения, то все, фарш назад не провернешь, если только копия где-то не осталась.
413 1156567
>>156564
У меня есть состояние t1 базы. Я хочу в любой момент вернуться в это состояние, только не ручным бэкапом. Само собой в момент возврата никто в базу ничего писать не будет, но соединения будут висеть. Нужно только сбросить все форшмаки, которые после t1 наделали.
414 1156569
>>156567
В оракле есть технология flashback, глянь такую же в мс, небось есть
415 1156588
>>156569
Короче я заколхозил моментальный снимок базы, но при попытке восстановиться из него говорит = при помощи операции RESTORE не удалось выполнить обработку базы sladkiy_hleb, так как она используется в этом сеансе. Рекомендуется для выполнения этой операции использовать базу данных master. И че?
416 1156639
А что скажете про триггеры? Есть такой функционал у MSSQL, что например, я какую-то условную табличку записываю, срабатывает триггер и вызывает процидурку мне нужную?
417 1156642
>>156588
Мех, у тебя должны быть включены архивлоги, которые снимаются каждые 10-15 минут. И как бы ты понимаешь что у тебя разные scn поэтому ругается на данный момент на реплику.
418 1156644
>>156639
Create or replace trigger blabla after create on schema

Or
Create trigger blabla on db for create_table
4beec8c19469cdb21ef2338d0a2abfe0.jpg41 Кб, 500x446
419 1156645
>>156644
Кароч у меня есть таблица lykovie_oladji, я в нее буду писать 1 и база должна в этот момент выполнить нужную мне строчку кода. Базарь.
420 1156660
>>156645
Create or replace triger schema( я хуй знает какая рна у тебя).lykovie_oladji_trigger after insert or update on lykovie_oladji
Описывай
Бегин
Энд
Но я тебе не на транзакте писал, я им 1 раз пользовался и ебал его в рот
421 1158600
Аноны, такая хуйня по поводу SQL. Как сделать триггер, который, мол, если 2 поля уже существуют в таблице - то всё предложенное на внос отклонять?
422 1158640
>>087060
Книгу 75-го года, вы серьезно? Я понимаю, что в России нет науки, и приходится читать переводы 50-летней давности, но неужели никто не владеет английским?
423 1158658
>>158600
Поясни вопрос примером. Что на входе, что ты хочешь на выходе.
424 1158663
>>158640
А ты серьезно не понимаешь сути теории? Мне Евклида с его геометрией в пример привести?
425 1158703
>>158658
В базе есть запись ("дом1, номер2, улица3")
Если на вход подается запись ("дом1, номер2"), то отклонить.
Мол, первые два параметра (не знаю, какой термин подобрать) совпадают с тем, что есть в базе, то такое пропускать нельзя.
426 1158756
>>158703
Я твой синтаксис не понимаю.

>("дом1, номер2, улица3")


Сколько полей в этой записи?

>("дом1, номер2")


А в этой?

Короче, либо unique constraint, либо trigger.
427 1158758
>>158756

> Я твой синтаксис не понимаю.


В общем, есть три колонки, и, если данные с первых двух совпадают с теми, что подают на вход, то отклонить.
Пример записи -
"Пушкина" "Колотушкина" "12"
И, если подается на вход
"Пушкина" "Колотушкина" "4918"
То это вносить нельзя.
428 1158759
>>158758
Unique constraint делай.
Не надо триггер, зачем велосипед изобретать.
Все уже придумано.
429 1158760
>>158759

> Unique constraint делай.


Эх, если б я знал, куда его и как делать. Ну да ладно, спасибо, погуглю.
430 1158763
>>158760
Вбиваешь в гугл название своей субд и рядом unique constraint.

Переходишь на страницу с документацией, смотришь там пример.
431 1158764
>>158763
Я использую DB Browser, и за то время, что я там ковырялся, даже не смог понять как правильно создать триггер. Там есть окошко для ввода и исполнения SQL когда, но он постоянно ругался на синтаксис, хотя я тупо копировал с гугла и подставлял значения своей БД.
432 1158765
>>158764

> для ввода и исполнения SQL когда


Кода*
433 1158771
>>158763
Вроде бы разобрался, спасибо еще раз!
434 1159022
Еще вопросик - сколько одновременно рыл может делать запросы к БД? Возможно ли это как-то расширить? Планируется компов 300 одновременно.
435 1159087
>>159022
Больше нуля, если бд в работоспособном состоянии.
436 1159096
>>159087
Есть одна маленькая .db, значит, её трогать может одновременно неограниченное количество рыл?
437 1159107
>>159096
Да, конечно. Ведь это же реляционная база данных. От слова relations множественные связи со множеством клиентов.

Тут главное, чтобы RAM хватало.
438 1159131
>>159107

> Тут главное, чтобы RAM хватало.


Где? На сервере? А если я без сервера?
439 1159149
>>159131
Где лежит .db
440 1159150
>>159149
На компьютере.
441 1159157
>>159150
Это было утверждение, а не вопрос.
442 1159186
>>159157
А, понял. Спасибо!
А можно еще узнать, от чего зависит требования к оперативной памяти? Если ~300 компьютеров сделают 2-5 insert запросов, сколько нужно RAM?
443 1159208
>>159186
Примерно полтора мегабайта на инсерт.
444 1159216
>>159208
Вроде как хватает. Еще раз спасибо.
445 1159263
>>159216
Пожалуйста. Обращайся. Здесь все твои друзья.
446 1159361
Сап, анонче. Хотелось бы услышать мнения.
Если бы вы писали что-то вроде семантического рабочего стола\семантической оболочки ОС, то какую бы СУБД выбрали в качестве хранилища метаинформации? Считай это все семантические связи между типа объектов, аналитическая информация, статистика, и прочее. НО. Это десктоп. То есть объемы, а самое главное, нагрузка не серверная - клиенты лишь сами сервисы\демоны одного пользователя\может пары девайсов, с учетом шаринга информации между ними. При этом есть потребность хранить\отслеживать отношения (следовательно можно задуматься о рдбмс), в тоже время данные - это в сущности объекты ссылающиеся друг на друга и храняшие друг друга (можно задуматься о графовых бд), есть так же потребность в атомарности записей, а потом приходится сомневать насчет носкюл-решений, ведь придется городить ее поверх.

Есть кому что сказать?
447 1159380
>>159361
SQLite?
448 1159438
Возможно ли создание mysql ndb-кластера между машинами, когда на одной ubuntu и mysql, а на другой debian и mariadb?
1512503507118789672.jpg118 Кб, 611x610
449 1159592
Объясните, пожалуйста, partial functional dependence и transitive functional dependence.
450 1159677
Здравствуйте, аноны.

Есть допустим таблица сообщений от пользователей.

id userId text timestamp

Какой селект написать, что бы выцепить по последнему сообщению каждого юзера? Желательно с пояснением, что бы я смог запомнить принцип работы и больше не тупить на этом, потому что уже второй раз сталкиваюсь с подобным, и совсем не помню как решал в прошлый раз :(
452 1159699
>>159693
Спасибо, думал что там всё немного проще, а оказывается такие вот сложности для типовых решений.
453 1159929
>>159699
Можешь сохранять дату последнего сообщения отдельно, например, колонку заведи в таблице пользователей. Небольшие издержки при вставке, но зато не надо лопатить большую таблицу.
454 1159930
>>159929
Пиздец. У меня бугурт с твоей нормализации. 8 нормальная уровня pr, блядь

Делается по max(id сообщения). Индекс "user_id, id desc"
images.jpeg10 Кб, 259x194
455 1159966
>>159677
если твоя субд умеет в over, то
select select id, userId, text, timestamp from (
select id, userId, text, timestamp,
row_number() over (partition by userId order
by timestamp desc) as rn
from tbl_message
) m
where rn = 1

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

select id, userId, text, timestamp
from tbl_message tm
inner join (
select userId, max (timestamp) as max_ts
from tbl_message
) max_t on tm.userId = max_t.userId and tm.timestamp = max_t.max_ts
456 1159968
>>159930
Как будто денормализация - что-то плохое.

Разумеется, можно и как ты говоришь сделать и еще другими вариантами. От контекста и условий зависит, от количества записей, которые он выгребает, какие у него джойны еще там есть.
Я подъебнулся, кстати, не дату, а id, конечно.

Если ему нужен текст или дата, то в твоем варианте ему два раза надо к таблице сходить, а в моем - один.

А так мне нравится вариант с not exists, сразу все поля из таблицы получаются.
Иногда аналитическая функция удобна, вариантов масса.
457 1160075
>>159968
Есть где почитать, где стоит использовать денормализацию? А то то как с ооп, если все денормализовать, получится неподдерживаемая хуета вместо базы, если все нормализовать - тоже не есть гуд.
458 1160262
А я бы хотел узнать зачем вообще существует релятивистская система в базах?

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

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

Полагаю что в огромных реально проектах это роляет, но когда у тебя простая система таблиц из: юзеры, сообщения юзеров, балансы, посты, картинки, объявления, лог_действий_юзеров ну и максимум еще пара таблиц, то там в принципе наплевать.

Кто-то на работе сталкивался с реальной необходимостью?
459 1160454
>>086747 (OP)
Суп, аноны. Думаю писать чатбота который будет анализировать сообщения в чате, потом сопостовлять по регексу с набором разнообразных заготовок вроде "[Заорал|Орнул в голосину|Проорал]" и другими условиями вроде время>22:00 и отвечать "Какого дьявола ты здесь ШУМИШЬ!", ну в зависимости от сообщения.

Имеет ли мне смысл изучать для такого базы данных?
Как вообще пишется бэкенд для всяких "умных" чатботов?
460 1160470
>>160262
Для тебя есть монгодб.
461 1160471
>>160454
Базы данных здесь вообще не нужны. У тебя всё равно будет линейный перебор по всем регексам с твоим алгоритмом. Ну разве что ты захочешь как-то хранить этот список регексов отдельно или не перезапускать бота. Тебе нужно будет просигналить как-то что обновление случилось чтобы бот заново из базы вытащил весь список.
462 1160472
>>160075

> если все нормализовать - тоже не есть гуд


Почему?
463 1160537
>>086747 (OP)
Подскажите есть ли задачник для MS SQL Server?
464 1160559
>>160537
sql-ex.ru
465 1160560
>>160262

>пытался что-то из какой-то таблицы вычистить, то у тебя только сыпались эроры, что нужно вот еще вот то говно вычестить перед этим, потому что в том говне сидит id этого говна. И на этом собственно всё.



Я так понял в итоге все говно в таблицах и осталось.

https://technet.microsoft.com/en-us/library/ms186973(v=sql.105).aspx
466 1160565
>>160472
Кешировать (сохранять) уже рассчитанные данные иногда хорошо (см. устройство хранилища 1с, например).
Но это противоречит концепции нормализации. Бай зе вей, хранить рассчитанный адрес "улица пушкена дом колотушкена" хуже червя пидора. Поэтому мы подходим к вопросу гуд практиз.
467 1160574
>>160471
Ну можно линейно перебирать, а можно было бы взять тот же список строк, загнать в несколько потоков и уже их парсить, при этом не выгружая из памяти.

Например сходу разбить файл из 80 строк на 8 частей по 10 строк и уже эти 10 строк парсить в своих потоках. Сработает ли такой подход?
468 1160578
Котаны, как сделать ограничение на количество обновлений за час?

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

Я так понял, нужно дополнительно два поля добавить. Одно поле будет счётчиком 'rewardCount'. Другое поле будет хранить дату и время 'rewardLastUpdated'.
469 1160602
>>160574
Сработает. Но будет то же самое что и несколько независимых нод под лоад балансером, каждый из которых переваривает целые куски из 80 строк. Тебе лучше какой-то индекс построить, например разбить на слова и каждое слово искать в маппинге. Либо применить банальный парсинг с последовательным проходом по символам + префиксное дерево чтобы в один проход по тексту найти все нужные вхождения.
470 1160603
>>160565
Тогда лучше логически отделить БД как source of truth и кэша, которые наверное лучше поместить в NoSQL. Транзакции и констрейнты вещи достаточно дорогие, но при этом необходимые.
471 1160608
yo ребзя, есть постгрес база в которой в одной из колонок хранятся данные в json, приблизительно так {"age_range":{"max":57,"min":43},"gender":"male"}
Как разпарсить и селектнуть gender из строк?
На вскидку пробовал json_value - но не находит такую функцию. Халп.
472 1160609
>>160578
Так как данные временные и некритичные, почему бы вообще не елозить диск понапрасну? Например если записывать в редис, можно установить определённый expire time для ключа, в твоём случае час. И просто обновлять число по этому ключу. Если больше 10, то не добавлять coins. Если ключа нет это равносильно 0. Фишечка в том что такое решение ты можешь закрутить ещё во много разных мест, например для защиты от брутфорса, и работать оно будет достаточно быстро.
473 1160611
>>160608
SELECT jfield->'gender' FROM table;
474 1160615
>>160611
Или я тупой или шутка такая. Попробую еще раз:
Есть база постгрес, в которой в одной из таблиц, кроме остальных полей редяционных таблиц есть поле в котором хранится строка json которая так выглядит:
{"age_range":{"max":57,"min":43},"gender":"male"}
Знатоки, вопрос: как мне из строки json селектом вывести в отдельную колонку (чтобы потом в цсв выгрузить) gender
475 1160619
>>160615
Разобрался, так:
select jsonfield::json -> 'gender' from table
476 1160628
>>160619
Может лучше ALTER TABLE сделать? Всё равно жсоны лежат.
477 1160642
Шапки с материалом у вас нету, поэтому прошу :
Посоветуйте гайды по MongoDB и Mongoose
478 1160670
>>160628
Ридонли права я АНАЛитик, хотя и локальная мини-копия есть, но не хочу перезапускать репликацию.
479 1160739
>>160609
Челик, ебани пожалуйста на твиче стрим как вывести кеш на редис с рдмс.
Мы подонатим всем тредом если покажешь сиськи
480 1160741
>>160739
*рдбс. И не кеш, а инкапсуляцию логики.
фаст фикс
481 1160874
Мне нужно делать лабу вместе с другом, у него на компе есть часть начала базы данных, можно ли как-то настроить доступ к ней, чтобы я со своего компьютера могла добавлять в нее свой код и она обновлялась у друга на компе
482 1160898
захостите базу на какой-нибудь бесплатной параше по типу
http://000webhost.com/
и работайте оба с ней через phpmyadmin (у вас mysql база надеюсь)
483 1160899
484 1160938
>>160874
Пускай друг порты откроет у себя.
15217282860840.png35 Кб, 677x414
485 1161011
Просьба о помощи:

В общем мне надо провести работу по документированию mysql базы, описав её структуру в doc (см пик).
Пытался сделать через HeidiSQL, но это зараза хоть и отображает то что надо (см тот же пик) , но при копировании вставке выдаёт блин опять таки структуру в виде "create table".

Прошу помощи - есть ли какие-то программные средства не вносить вручную в таблички doc структуру mysql таблиц?
sage 486 1161030
>>161011
1. https://dev.mysql.com/doc/refman/5.7/en/show-columns.html
2. Можешь попробовать экспортнуть в csv:
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';
Потом открыть его экселем и копировать в ворд. Но имхо, гемороя только добавится.
487 1161224
В универе поставили задачку перенести бд с MySQL в Postgresql, какие пути решения? желательно без левых программВ универе поставили задачку перенести бд с MySQL в Postgresql, какие пути решения? Гугл выдет всякие программки-конверторы, есть ли решение не прибегаю к использованию других программ?
488 1161270
>>161224
Выгрузить ддл же. Ты получишь огромный sql файл. ( по хорошему выгрузи сначала таблцы) и в ручную замени величины на те, что есть в постгресс, потом так же делай с триггерами, и прочим.
Функции переделывать придется полностью скорее всего.
А потом комплияй и прочее.

В вики постгре есть тулзы для миграции, тебе не пойдут?
489 1161313
>>161030
спасибо, но сцуко всё таки не совсем то. буду искать.
490 1161319
>>161313
Да нет другого решения. Все крутится вокруг одного - выгружаешь описание схемы из MySQL (DDL - скрипт, анон выше про то же самое пишет) и загружаешь в postgresql. Другого глобуса у нас нет.

Можно поискать утилитки которая отрежет MySQL -специфичные штучки, чтобы получился максимально простой DDL. Можно самому написать выгрузку из словаря MySQL, можно найти готовые скрипты выгрузки и допилить их чтобы лишнее не выгружали.
491 1161430
>>161011
Попробуй Navicat. Если веб макака, то у Jetbrains тоже есть инструмент для построения диаграмм.
492 1161492
Как имитировать работу с огроменной бд, если в ней на самом деле всего 20 записей?
493 1161495
Мне кажется SQL - это ошибка.
494 1161502
>>161495
Мне кажется твое рождение - это ошибка.
495 1161524
>>161492
Так добавь туда пару миллионов записей и не еби нам мозги.
496 1161577
>>161495
Попробуй Tutorial D.
497 1161584
>>161492
Запусти приложение в поток двадцать, которое будет инсертитб, селектить, апдейтить какую-нибудь хуйню постоянно. И залей миллион записей.
498 1161719
>>159677
В MSSQL можно через CROSS APPLY.
499 1163205
Всем привет. вопрос по монге, хочу получить значение максимально близкое к нужной дате.
сначала попробовал через mongoose, но там запрос не отрабатывал как надо, потому полез в консоль руками пробовать.
но возникла проблема - монга не выполняет команду, будто она не завершена, хотя запрос полностью написан, но она только новую строку создает чтобы ввести символ. если введешь - ошибка лишнего символа
заметил что это только тогда, когда я использую $gte или $lt, вплоть до того что пытался выполнить следующий запрос:
db.collection.find({time:{$gte:"2018-03-26T18:38:00.457Z"}})
посоветуйте плз что сделать или ткните в ошибку
500 1163442
Привет, погромач.
Очень годный тред, хотелось бы ваш совет.
Я уебываю со своей работы (аналитик) и хочу вкатиться к вам. Хуйня в том, что я не особо секу за направления. То есть я знаю, что разработчик бд-чаще всего пилит etl (надеюсь все верно), а еще есть администратор бд. У меня есть порядка пары месяцев на изучение документации и погружения. Знал когда-то неплохо sql и вот думаю про изучение tsql с установкой mssql и работы. Куда податься? Админ, разраб? Конечно, хотелось бы больше зп, но вангую, что на мне розовые очки и вообще хуй меня кто возьмет.
Спасибо!
501 1163457
>>163442

>>mssql


Good luck
502 1163507
Как сделать, чтобы при определенном условии выводилось сообщение? Например, сравниваются столбец1 и столбец2, надо чтобы выводилось следующее "столбец1 | столбец2 | сообщение". Я так понимаю, для сообщения надо запилить свой столбец и писать туда сообщения. Мб в мускл можно сделать как-то проще?
503 1163516
>>163507
У тебя каша в голове, братишка. Какое сообщение? Откуда вывоилось и куда? Сравниваются - это "равняется" или больше/меньше? А если не равны, то что? Хорошо сформулированный вопрос - залог успеха!
504 1163979
>>163507
select
столбец1
, столбец2
, N'сообщение'
from таблица
where столбец1 <> столбец2

это если твои столбцы в одной таблице. Если в разных, надо использовать join.
505 1164153
Анон выручай я криворукий жопохуй какой-то.
Есть SQL база данных postgres и mysql вся хуйня, что требуется реализовать для двух баз данных, заказчик хотел ещё mssql но я убедил, что ему она не нужна. Выбора между двумя более чем достаточно
Есть таблица в которой есть три числовых поля условно A, B, C, есть и другие поля но они нас не интересуют.
Мы вставляем в таблицу данные при этом мы знаем значения для полей A и B, в C мы должны вставить инкрементальное значение. Сложность в том, что счётчик должен быть уникален для каждой пары A и B
то есть вставляем
(0, 0, ?) => (0, 0, 1)
(0, 0, ?) => (0, 0, 2)
(0, 0, ?) => (0, 0, 3)
(0, 1, ?) => (0, 0, 1)
(0, 1, ?) => (0, 0, 2)
(0, 0, ?) => (0, 0, 4)
(7, 9, ?) => (0, 0, 1)
(0, 1, ?) => (0, 0, 3)
(0, 0, ?) => (0, 0, 1)
506 1164173
>>164153
Ну так вычисляй сам значение инкремента для пары, залочив перед этим таблицу на запись.
507 1164180
>>164153
Триггер напиши, который проверяет пары данных.
Благо расширенный sql умеет в ветвление
508 1164204
>>164173
>>164180
Звучит не плохо, вот только в них я нихера не умею. Да и даже с ветвлением не очень понятно как это сделать. без нескольких дополнительных запросов.
509 1164223
>>164204
триггер позволяет обрабатывать данные для INSERT, через nvl ебашишь данные и всё.
гляди вот такая структура :new.stolb1 :new.stolb2 :new.stolb3 обрабатываешь через nvl, например.

create or replace trigger kartopler before insert on belorus_table
for each row
DECLARE
тут что-то объявляешь
BEGIN
if :new.stolb1 is not null ( или ебашишь обработку с nvl дабы ускорить перебор и точно не попасть в жопу)
then
if
then
belorus_kartopler1:= belorus_kartopler1 + 1;
и не забывай закрывать ветвления ENDIF

END;
510 1164297
>>164223
Меня смущает момент генерации нового значения, так как инкремента должна расти, то нужно хранить информацию о последнем её значение в другой таблице или дёргать из этой, но в случае удаления записей счётчик может сбиться или повториться и второе насколько это будет медленно?
511 1164438
>>164297
>>164297
Ну так это повод узнать что-то новое.
Зачем и как лочить таблицы.
Как делать триггер.
Как делать индексы на таблицу, чтобы было быстрее.
Насчет быстрее - ты ведь не финтех приложение пишешь, я надеюсь? Так что делай обычный селект для вычисления инкремента.
Насчет удаления - либо делай только пометку об удалении, либо действительно храни инкременты для пар в отдельной таблице.
512 1164500
>>164297
Почитай теорию. Хоть не постгресс - Том Кайт с его томиком
513 1164603
>>163457
А что с ним не так7
514 1164633

>>116460


Рынок же проебали.
515 1164943
>>164297
ну пиздец, pragma ебани. Почитай про индексы. По сути ты можешь создать представление с индексами и ебашить их туда и назад, благо расширенный sql предлагает ебашить и не такое
516 1165441
Как обратиться к строке таблицы по индексу? Например, удалить именно 5 строку.
517 1166352
>>165441
В общем случае - никак.
В таблице нет как таковых номеров строк.
Ты можешь отсортировать таблицу по какому-нибудь критерию и взять уже в сортированном наборе строчку №5.
image.png13 Кб, 354x243
518 1166482
Как мне теперь триггер создать на то, что, если quanity < 0 - то больше не пихать людей?
sage 519 1166929
>>086747 (OP)
Топ ораклист, перекати тред.
521 1167090
>>167019
Обнял няшу :3
522 1180023
>>154797
не слушайте его. эти мудаки форсят и создают вокруг postgresql необоснованный хайп. только вот работать потом и семью кормить вам а не им. postgresql до оракла и mssql еще очень очень далеко технически. это во-первых.
кроме того (и что кстати куда важнее), 99% проектов с postgresql это дауны с нищеебскими задачами. не замечать этого, не догадаться логически - это надо быть идиотом. карьера постгресиста - это глупость, такого вообще бывает, (полтора инвалида на весь мир в расчет можно не брать). исключение те компании/инсталляции где покупают EDBPostgres, Citus или рашкенский PostgresPro.
523 1180060
>>180023

> 99% проектов с postgresql это дауны с нищеебскими задачами


Проиграл с этого.
Нищеебские проекты как раз таки делают на дерьме простых субд на вроде майэскюэль.
А крупные проекты с миллионами+ записей делают на божественном постгресе. Скайп например.
524 1186127
>>180023
Пфф, да ты, вообще, как СУБД-шник должен шарить и в мс скл, и в май скл, и в постгресе, хотя бы на уровне тех фич, которыми эти системы выделяются.
Тред утонул или удален.
Это копия, сохраненная 12 мая 2018 года.

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

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