Главная Настройка Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски


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

Check this out!


[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 512 | 50 | 206
Назад Вниз Каталог Обновить

ЕДИНЫЙ БАЗ ДАННЫХ ТХРЕАД Аноним 15/04/17 Суб 11:18:31  973923  
IMG0052.PNG (327Кб, 2048x772)
В этом итт ай-ти треде собираются все любители Баз данных, гордо именующие себя айтишниками.
Доказываем друг другу, что
>SELECT ID FROM b_entity_tvoya_mama
это тоже программирование,
Креэйтим индексы на одно и то же поле по 100 раз и инклудим в них всякие поля на всякий случай,
Храним gender в NVARCHAR(2000),
Поясняем, как можно без задней мысли хранить бизнес-логику в бд, а не в приложении,
Рассказываем, как обновлять хранилище данных актуальными real-time данными раз в минуту,
Называем логично и понятно поля в логичных и понятных таблицах
>CREATE TABLE tablica_s_clientami (
>ID_CLIENTA INT NOT NULL
>IMYA NTEXT,
>"DATA ROJDENIYA" NVARCHAR(MAX))
Ну и, конечно же, выбираем лудшую СУБД для всего:
MY SQL
MS SQL
PostgreSQL
ORACLE
MongoDB
SQLite
Excel
И даже Google Docs!
В общем, это очередной баз данных тред.
Аноним 15/04/17 Суб 13:35:01  973979
>>973923 (OP)
>SQLite
>Храним gender в NVARCHAR(2000)
Поэтому SQLite лудшая. Строки хранит не фиксированного размера. Как и числа.
Аноним 15/04/17 Суб 13:58:44  973990
>>973979
Кстати, да, никогда не понимал, почему у всех языков программирования есть один тип данных string, а в Бд char nchar varchar nvarchar text ntext хуита какая-то.
Аноним 15/04/17 Суб 14:21:46  973997
>>973990
В С++ как минимум три типа "строк": std::string, char* и char[].

Разница в основном будет при оптимизации перформанса. Исторически, если тебе был известен размер одной записи, и этот размер был фиксированным, ты мог очень просто выбрать n-ную запись просто сместив указатель.

Если размер записи варьируется - хуй ты так всё просто сделаешь. varchar(max) и text в современных базах как правило - синонимы.
Аноним 15/04/17 Суб 16:19:34  974054
>>973990
Оптимизация.
Аноним 15/04/17 Суб 16:22:10  974055
Full text search реализуется COINTAINS?
Аноним 15/04/17 Суб 16:26:15  974059
1.PNG (62Кб, 737x635)
Что они имеют ввиду, когда говорят "search TABLE on the FIELD"? Это как?
Аноним 15/04/17 Суб 16:32:01  974062
>>974059
тебе надо захуячить полнотекстовый поиск по полю name таблицы продукт. Альсо, в квере должен быть использована функция to_tsvector и to_tsquery.

Ебашишь индекс, пилишь кверю полнотекстовую https://www.postgresql.org/docs/9.5/static/textsearch-tables.html#TEXTSEARCH-TABLES-INDEX

Аноним 15/04/17 Суб 16:33:24  974064
>>974059
Вангую, что
>искать подстроку Awsome по колонке name в таблице Product.
Аноним 15/04/17 Суб 16:40:13  974067
>>974064
>>974062
Понял, спасибо. Буду пытаться. Чот сложный этот ваше Postgres.. Я прост хотел SQL потренить, а они мне хуйню свою пихают, я бы лайком заебашил и все, епта, похуй на оптимизацию.
Аноним 15/04/17 Суб 17:41:30  974091
>>974067
А чо за треня? Я тут как и многие, собираю сайты с тренями, которые не буду проходить.
Аноним 15/04/17 Суб 17:52:12  974094
>>974091
codewars.com
Аноним 15/04/17 Суб 19:24:21  974130
>>974094
Спс.
Аноним 15/04/17 Суб 20:03:11  974163
Посоветуй сайты/книжки/курсы про проектированию БД, у вас в шапке нихуя нет.
Аноним 15/04/17 Суб 21:10:39  974196
1.PNG (58Кб, 600x693)
2.PNG (62Кб, 737x701)
3.PNG (23Кб, 738x465)
http://ideone.com/RT3vJW

Что я делаю не так? Он в как-то неправильно COUNT делает.
Аноним 15/04/17 Суб 21:11:04  974197
4.PNG (77Кб, 1284x824)
Абуша ебанутый?
Аноним 15/04/17 Суб 21:41:13  974206
>>974196
Ссылочку на задание кинь.
Аноним 15/04/17 Суб 21:42:23  974207
>>974206
https://www.codewars.com/kata/sql-bug-fixing-fix-the-query-totaling/train/sql
Аноним 15/04/17 Суб 22:01:56  974214
1.PNG (14Кб, 431x152)
Вот так нормально работает, мне подсказали, что группировка без DATE() группирует по каждой секунде. Поэтому надо использовать DATE() в группировке.
Аноним 15/04/17 Суб 22:03:59  974216
>>974196
Ещё можно было написать s.transaction_date::date. Вот пытался вдуплить, почему твоё решение не работало.
Аноним 15/04/17 Суб 22:06:08  974218
>>974214
Ах да, в postgresql можно писать просто group by day. Православный MS SQL так не умеет.
Аноним 15/04/17 Суб 22:15:31  974222
>>974218
Да, можно группировать по алиасу. А разве в МС так нельзя?
Аноним 15/04/17 Суб 22:18:54  974224
>>974222
Не, не умеет. Доки мелкософта и слезы бедолаг на stackoverflow это подтверждают.
Аноним 16/04/17 Вск 00:09:25  974268
ВЫБРАТЬ
*
ИЗ
Справочник. Номенклатура

Освятил.
Аноним 16/04/17 Вск 02:24:46  974285
>>974268
1С-оБог?
Аноним 16/04/17 Вск 11:46:04  974371
>>974285
Конечно. Спецназ мира DBA.
Аноним 17/04/17 Пнд 13:42:25  974884
>>974371
Вот скажи, у 1С свой движок бд и интерпритатор запросов или же они эти "Выбрать из" транслируют в какую-то субд, типа postgre?
Аноним 17/04/17 Пнд 15:44:19  975014
>>974884
http://v8.1c.ru/overview/Term_000000662.htm
Аноним 17/04/17 Пнд 19:37:19  975179
Ребят, подскажите, как выполнить следующую вещь:

TABLE
month sells
1 10
2 20
3 30

Результат должен быть такой:

month sells
1 10
2 30
3 60

Понимаю, что селфджоинить надо, но не могу допереть, как именно.
Аноним 17/04/17 Пнд 19:56:45  975187
>>975179
А по какому правилу/формуле должны меняться sells?
Аноним 17/04/17 Пнд 19:58:29  975188
>>975187
Приплюсовываться значения должны

10
20
30

=

10
10 + 20
10 + 20 + 30
Аноним 17/04/17 Пнд 20:27:20  975200
>>975179
>sum(sells) over (order by month rows between unbounded preceding and current row)
t. несчастная фулл-стек макака с зарплатой 45к
Аноним 17/04/17 Пнд 20:29:41  975203
f64138c60f5a267[...].] (5Кб, 364x150)
>>975200
Не очень врубаю в твое решение. Я думаю, что вот так может быть:

SELECT b.sell, SUM(a.sell) AS cum_sell
FROM TABLE1 a, TABLE1 b
WHERE a.month <= b.month
GROUP BY b.month, b.sell
Аноним 17/04/17 Пнд 21:27:54  975251
>>975203
А что там сложного: http://rextester.com/YAFPJ99445?
Считаешь сумму в окне от первого до текущего кортежа, отсортированном по месяцу для предсказуемого результата.
God bless Oracle.
Аноним 17/04/17 Пнд 21:30:18  975255
1.PNG (10Кб, 329x595)
>>975251
Не, я на чистом sql хотел. не могу пока в эти ваши синтаксисы..

Вот пикрил мне понятен!
Аноним 17/04/17 Пнд 21:31:34  975256
>>975251
И постгрес http://rextester.com/BSTM28097
Аноним 17/04/17 Пнд 21:32:15  975258
>>975255
Ну в православном тоже это всё есть.
Аноним 17/04/17 Пнд 21:32:53  975259
>>975251
По-моему, я тут генерю большую часть постов.

Слушайте, есть такая таблица с двумя колонками:
c1 c2

a 3
a 4
b 5
b 6

Мне надо получить вот такой вывод:

c1 c2
a 12
b 30

Помогите плиз. Тут вообще нет идей, как сделать.

inb4 не твой личный стек оверфлоу
Аноним 17/04/17 Пнд 21:33:33  975260
>>975259
Надеюсь, понятно, что 34 = 12, 56 = 30.
Аноним 17/04/17 Пнд 21:33:56  975261
>>975260
бля 3х4=12, 5х6=30
Аноним 17/04/17 Пнд 21:34:32  975263
>>975255
Это здорово, например, но не на mock-таблица можно внезапно встретить проблемы с производительностью у self-join'ов. Аналитические функции такого изъяна лишены.
Например, http://stackoverflow.com/questions/16870336/how-to-tune-self-join-query-in-oracle-11g и http://dbaforums.org/oracle/index.php?showtopic=6184.
Ну и ещё на реальных примерах, скорее всего, выбирать ты будешь не два поля, а, значит, либо придётся убирать эту помойку в дополнительный подзапрос, либо копипастить километровый group by c очевидным эффектом.
Аноним 17/04/17 Пнд 21:39:44  975265
>>975259
http://rextester.com/UGDE88643
Аноним 17/04/17 Пнд 21:43:06  975268
>>975265
Спасибо. Я понял, как работает функция, да. Так намного проще, но нет ли идей, как это на чистом SQL реализовать?
Аноним 17/04/17 Пнд 21:48:20  975270
2chdb.png (13Кб, 383x532)
>>975259
Это было сложно: https://pastebin.com/M8J56Lp5 .
Аноним 17/04/17 Пнд 21:51:27  975271
>>975268
https://www.codeproject.com/Articles/548395/The-Product-Aggregate-in-T-SQL-Versus-the-CLR
Аноним 17/04/17 Пнд 21:52:51  975272
>>975270
Спасибо. Да уж, выглядит как пиздец какой-то. Но большое спасибо!

Кстати, что можешь посоветовать почитать/порешать?
codewars решаю, sql-ex решаю, но как-то туго пока идет
Аноним 17/04/17 Пнд 22:00:30  975282
>>975271
Да, я nullif для нуля проебал.
>>975272
SQL Cookbook для начала. Дальше зависит от того, каким именно диалектом пользоваться будешь. Для Оракла ничего лучше Тома Кайта нет, наверное.
Аноним 17/04/17 Пнд 22:29:09  975304
2.PNG (11Кб, 466x783)
Я решил это задание по-другому. Оно будет не ОК работать с отриц. знач., но у мекня условие, что вторая колонка имеет положительные значения:
Аноним 17/04/17 Пнд 22:30:20  975305
3.jpg (96Кб, 720x1280)
Общий случай решения:
Аноним 17/04/17 Пнд 22:39:47  975308
>>975304
Ебать ты наркоман.
Аноним 17/04/17 Пнд 22:42:35  975309
>>975308
Скудность знания порождает изощренные решения.
Аноним 17/04/17 Пнд 22:44:42  975310
>>975309
Это дичь, оно не работает. Тебе с примером не повезло.
Аноним 17/04/17 Пнд 22:47:51  975312
>>975310
>оно не работает
Почему? Я же получил ответ
Аноним 17/04/17 Пнд 22:49:04  975313
>>975312
Ещё по строке к a и b добавь.
Аноним 17/04/17 Пнд 22:58:01  975323
>>975313
Да, дичь выходит. Какой же я тупой, хосспаде.
Аноним 17/04/17 Пнд 22:59:32  975325
>>975268
Вообще-то, оконные функции - это T-SQL, они не реализованы только в уебищном MySql, но это уже проблема этой субд, что она не поддерживает станадрт полностью.
Умение использовать оконные (аналитические) функции тебя на любом собеседовании на разработчика бд/аналитика по отчетности спросят, гарантирую, как опытный ходитель по этим самвм собеседованиям.
Аноним 17/04/17 Пнд 23:05:36  975330
>>975325
Я на аналитика собеседуюсь.

Пойду курить SQL Cookbook. Чет расстроился со своей тупизны в последнем примере.

Анон с логарифмом нормально предложил.

lgxy = lgx + lgy;

f(lgx, lgy)

f(x,y) = 10
Аноним 17/04/17 Пнд 23:13:14  975331
>>975330
Только если реально будешь юзать, не забудь про nullif(field, 0) вокруг аргумента логарифма.
Аноним 18/04/17 Втр 00:13:05  975351
>>975331
select qwe, exp(log(sum(asdd)) as aggregate_product
from t
group by qwe;

где мне учесть этот nullif?
Аноним 18/04/17 Втр 00:27:10  975356
Разобрался!

select qwe, nullif(exp(sum(log(asd))),0) as total
from t
group by qwe;
Аноним 18/04/17 Втр 13:45:31  975526
>>975272
Больше задавай вопросов человеку, который не пишет ключевое слово AS перед алиасом в селекте.
Аноним 18/04/17 Втр 14:33:31  975552
>>975356
Какой полезный нуллиф. Один дебс посоветовал, другой ищет куда-бы впихнуть.
Аноним 18/04/17 Втр 19:09:57  975742
>>975552
>>975526
А вот и toxic-чмохи без конструктива подкатили.
Вместо того, чтобы человеку помочь, только пердите в лужу, мамины админы mysql на localhost.

>>975526
Во-первых, AS опциональный в SQL-92.
Во-вторых, это дело принятого в вашей компании код-стайла.
В-третьих, единственный аргумент в пользу этого бесполезного говна мамонта — backward compatibility, в моём случае это неинтересно.

>>975552
Выполни-ка select log(x, 0) from dual. Это ты бесполезный, а не nullif.
Аноним 18/04/17 Втр 19:21:01  975762
>>975356
nullif должен быть вокруг аргумента log(), чтобы в случае, если он равен нулю, подставлялся null. А нужно это потому, что логарифм от нуля не существует — нет такой степени, в которую надо возвести основание, чтобы получить ноль.
Аноним 18/04/17 Втр 19:22:58  975764
>>975762
Пруфы.
Аноним 18/04/17 Втр 20:09:01  975838
Довольно много работал с фаербердом. Под него есть божественная ide ibexpert. Решил познакомиться с постгресом, посоветуйте что-нибудь хорошее на подобие.
Аноним 18/04/17 Втр 22:06:22  975977
>>975838
очевидный pgAdmin
Аноним 18/04/17 Втр 23:21:55  976025
>>975977
Неужели это верх инженерной мысли?
Аноним 18/04/17 Втр 23:23:17  976028
>>976025
Я psql cli использую. Да, я мазохист.
Аноним 18/04/17 Втр 23:27:55  976033
>>975838
DataGrip (хотя бы не такая багованная, как пгадмин ебанный)
Аноним 21/04/17 Птн 07:14:19  977175
>>975742
От какого значения ты собрался защититься своим нуллифом? От нуля? А почему не от -18?
Ну а про AS такой глупой макаке даже и пытаться пояснять бесполезно.
Аноним 22/04/17 Суб 10:50:36  977630
Есть разница в скорости выборки между postgres и mongo?
Аноним 22/04/17 Суб 11:37:58  977639
>>977630
Не узнаешь, пока не проверишь, что тебе надо.
Аноним 22/04/17 Суб 11:46:19  977641
>>977639
Ну это понятно. Но вот это нормально вообще
>Count: 3230567
>Time: 5.378092123s
Два запроса, select count() from table и select from table where condition like '%пизд%';
Аноним 22/04/17 Суб 11:46:54  977642
Проебал разметку
Аноним 22/04/17 Суб 13:03:08  977691
>>977641
По скорости? Мне кажется, что да, в пределах нормы. Чудес от других баз не жди.
Аноним 22/04/17 Суб 13:09:01  977697
>>977641
Вот тут ещё можно глянуть. Под like нужны специальные индексы, чтобы ускориться.
http://stackoverflow.com/questions/1566717/postgresql-like-query-performance-variations
Аноним 22/04/17 Суб 19:35:28  977953
Ребят, на sql-ex.ru есть одна задачка, в ней нужно отобразить выборку вертикально (на пике)
http://sql-ex.ru/exercises/index.php?act=learn&LN=41#resPlace

Каким образом это можно сделать менее костыльно? Интересуют MySQL и PostgreSQL.
Моё ужасное решение примерно выглядит так:

select 'cd', cd from pc
where code = (select max(code) from pc)

union

select 'hd', hd from pc
where code = (select max(code) from pc)

...

и так для каждого столбца.
Аноним 22/04/17 Суб 19:45:50  977961
>>977953
Pivot
Аноним 22/04/17 Суб 19:53:05  977964
>>977961
А PIVOT/UNPIVOT есть в MySQL/PostgreSQL?

Ещё попытался занести результат select max(code) from pc в переменную через DECLARE, чтобы к ней потом обращаться, но беда в том, что sql-ex.ru почему-то требует, чтобы мой запрос начинался с SELECT'a.
Аноним 22/04/17 Суб 22:44:39  978054
>>977964
Pivot есть в PostgreSQL:
https://www.postgresql.org/docs/9.1/static/tablefunc.html
Аноним 22/04/17 Суб 23:39:40  978086
>>977961
Пивот от анпивота не отличаешь?
>>977964
Нет в постгресе того, что тебе нужно, делай с юнионами. И код отдельно тебе не нужен, нужно выбрать требуемую строчку (с тем самым кодом) и с ней работать.
Аноним 23/04/17 Вск 00:14:32  978107
Анон, поясните за постгрес. Им кто-то сейчас пользуется? Какая у него сфера деятельности, для чего его лучше использовать, чем он лучше мусклес? Я просто из кейсов только сервер для аллодов онлайн видел и все.
Аноним 23/04/17 Вск 00:21:47  978112
>>978107
Стильно, модно, молодёжно. Всё, что я знаю.
ms-sql-работяга
Аноним 23/04/17 Вск 00:27:41  978117
2017-04-23-0026[...].png (20Кб, 392x271)
>>978086
Спасибо, так лучше? Решение засчитали на сайте.
Аноним 23/04/17 Вск 14:15:49  978392
postgres. таблицы
diaries(id, name)
diary_entries(id, diary_id, content)

если
CREATE TABLE diary_entries
.. id SERIAL
.. diary_id INT

при добавлении записи, id инкрементируется:
INSERT (diary_id) VALUES (1)
INSERT (diary_id) VALUES (1)
INSERT (diary_id) VALUES (2)
теперь:

SELECT diary_id, id FROM diary_entries;
1, 1
1, 2
2, 3

нужно что бы diary_entries(id) начинался с 1 для разных diaries.
пример:

SELECT diary_id, id FROM diary_entries WHERE diary_id = 1;
1, 1
1, 2
1, 3

SELECT diary_id, id FROM diary_entries WHERE diary_id = 2;
2, 1
2, 2
2, 3

как? не советуйте инкрементировать в программе, хотелось бы что бы это было в суб
Аноним 23/04/17 Вск 14:33:16  978402
>>978392
хуй с ним. не хочу ебаться с процедурами и тригерами. думал, может есть специальный тип или что еще SERIAL_DEPENDENT(diary_id, id)
Аноним 23/04/17 Вск 14:39:52  978410
>>978392
когда создаешь новый дневник создай секвецию с идентификатором дневника, затем при добавление записи в дневник номер записи бери из секвенции.
Аноним 23/04/17 Вск 14:52:38  978421
>>978392
вам в оконные функции
Аноним 23/04/17 Вск 14:54:22  978422
>>978410
спасибо.
CREATE SEQUENCE diary_1_entries_seq;
INSERT INTO diary_entries (diary_id, id) VALUES(1, nextval(diary_1_entries_seq));
Аноним 23/04/17 Вск 17:55:58  978568
Untitleud.png (15Кб, 621x190)
>>973923 (OP)
Суп аноны, на хостинге сайт, часто выскакивает пик. Кто виноват?
простой юзер
Аноним 23/04/17 Вск 18:06:10  978575
>>978568
течет
Аноним 23/04/17 Вск 18:23:14  978586
>>978575
Что течет? Это важно помоги.
Аноним 23/04/17 Вск 20:40:37  978685
>>978568
https://www.google.ru/search?q=if+you+are+not+out+of+available+memory
Аноним 24/04/17 Пнд 00:20:12  978844
>>978685
Сайт на сервере бомжа ясно.
Аноним 24/04/17 Пнд 00:21:57  978848
>>978844
Грит уменьшить нагрузку, бля да там 100 записей достать сука бля.
Аноним 24/04/17 Пнд 14:06:41  979091
>>978117
Зачем ты пиздишь? Решение нерабочее в принципе.
Аноним 24/04/17 Пнд 14:16:50  979097
>>979091
Не злись, я для MySQL решаю.
Если не веришь, то вот задача: http://sql-ex.ru/exercises/index.php?act=learn&LN=41#resPlace
Там есть "Select DBMS", выбери MySQL и вбей этот код: https://pastebin.com/Mfg6TQZx
Аноним 24/04/17 Пнд 15:01:52  979139
>>979097
Понял, извиняюсь.
Аноним 24/04/17 Пнд 15:28:58  979155
Снимок.PNG (9Кб, 124x661)
14928684510140.jpg (105Кб, 645x900)
Поясните, пожалуйста. Есть таблица, пикрелейтед. Как выбрать строки например со значениями "меньше .200" после точки перед последним значением? Как вообще выбирать такие строки, если критерий выбора - значение конкретной части строки, причем не точное, а в заданном диапазоне, н-р "от 100 до 200"?
Аноним 24/04/17 Пнд 15:47:10  979162
>>979155
В MS SQL есть для этого DATEPART.
https://docs.microsoft.com/en-us/sql/t-sql/functions/datepart-transact-sql
Аноним 24/04/17 Пнд 15:52:36  979166
14901126078540.jpg (245Кб, 1414x1000)
>>979162
Да, это то, что нужно - выбор по секундам, миллисекундам и т.д. А в SQLite ничего похожего нет?
Аноним 24/04/17 Пнд 16:18:39  979180
>>979155
в селекте сплить строку потом в тайм стэмп дату транкуй в 1970-ый год, в кондишан части фильтруй по тайм рэгджу, затем в селекте добавь вывод оригинального столбца, вот тебе и нужный вывод.
Аноним 24/04/17 Пнд 16:21:47  979181
>>979166
в лайте вроде нет дэйттаймов, можно попробовать отсабстрингать правую часть и по ней фильтрануть.
Аноним 24/04/17 Пнд 16:32:23  979183
>>979181
в лайте вообще нет смысла заморачиваться с любой обработкой. это все всеравно на части сервера, который читает файл выполнится. поэтому если бэк енд вменяемый, то делай все там.
Аноним 24/04/17 Пнд 17:06:56  979203
14787881189520.jpg (69Кб, 508x604)
>>979183
>>979181
>>979180
Думаю, мне проще сразу мокрософт SQL-сервер накатить. Этих таблиц будет штук 30, и все они 500+Мб csv файлы. Спасибо еще раз :3
Аноним 24/04/17 Пнд 18:30:37  979233
>>979155
substr('20170301 00:00:00.865', 19)
Аноним 24/04/17 Пнд 21:25:13  979317
>>973923 (OP)
>Рассказываем, как обновлять хранилище данных актуальными real-time данными раз в минуту,
А вот с этого места по подробнее плиз
Аноним 24/04/17 Пнд 21:27:16  979319
>>979317
Без задней мысли.
Аноним 24/04/17 Пнд 21:27:34  979320
>>979317
Без задней мысли.
Аноним 24/04/17 Пнд 21:29:49  979325
>>979319
>>979320
Ну бле, ребята.
А если по серьезному?
Аноним 24/04/17 Пнд 22:17:28  979359
>>977953
Как же я бугурчу от таких задач, типа транспонируйте таблицу, заебашьте сводную sql-запросом. Вот нахуя это реализовывать заебным PIVOT/UNPIVOT в mssql, может есть субд где pivot легкий и удобный? ? Я конечно может слегка тупой, но в сотню раз проще выгрузить все в эксель и вертеть таблицы как душе угодно.
По сути, кроме группировки и джойнов sql не нужен.
мимо-аналитик
Аноним 24/04/17 Пнд 22:20:17  979361
>>979317
Очень просто (надеюсь, что, что такое хранилище, рассказывать не нужно), это называется инкрементальной загрузкой данных. Для этого в первоисточнике (откуда грузим в двх а к а HRANILISHЕ) должен быть признак того, что запись изменена - update_date или же нужна уверенность в том, что данные в первоисточнике статичные и вовсе не меняются, а только добавляются новые, причем с идентификатором-инкрементом (Identity), в таком случае нам не нужно каждый раз грузить все 10000000 строк, а выбрать из них только те, у которых update_date >= update_date той же сущности у нас в хранилище. (Или id источника >=id в хранилище), теперь, когда мы их выбрали, нам нужно все это дело смэтчить (в скл сервере для этого юзают MERGE) но можно и обычными update - insert с проверками на существование записи у нас в хранилище. Если есть - апдейтим, если нет - инсертим.
Аноним 24/04/17 Пнд 22:24:37  979365
>>979359
А если данные нужны не аналитику, а какому-нибудь другому приложению с доступом через API со строгой спецификацией? Тоже Excel-файлик отдавать будешь? Нет, ты используешь анпайвот при необходимости, чтобы привести их в треюуемый вид для удобной обработки back-end приложением.
Аноним 24/04/17 Пнд 22:57:04  979392
>>979361
Давай подробности о построении SSIS пакета. Insert там есть оче быстрый, это все круто, update же - увы нет. Наиболее оптимальный вариант который удалось нагуглить - делать Staging таблицу, отправлять туда данные которые надо будет проапдейтить, а потом из нее выполнить batch update. Но блин, это получается на каждую мигрируемую таблицу надо иметь свою Staging таблицу, какое-то не очень хорошее решение. Вообще стремно что разрабы SSIS такого не предусмотрели, либо ест ьсекретка какая?
Аноним 24/04/17 Пнд 23:57:53  979446
IMG0055.PNG (212Кб, 1893x1014)
>>979392
Держи.
Я юзаю такой шаблон для инкрементального обновления.
Есть бд Staging, как ты правильно отметил, есть боевая с полными данными. В стеджинг сущности, как раз, грузятся кучосками по update date или id.
Есть таблица staging_entity, в которой хранится описание сущностей и их последние даты и айдишники (опционально)обновления, чтобы на их основе строить запрос к источнику.
Add new staging entity - добавляет новую сущность в таблицу на основе переменных, которые не воези в скрин с айпада на рдп.
Import started и import finished - небольшие скрипты, которые просто пишут системное время сервера для логов.
Staging prepare - процедура, к которой на вход отправляется айдишник сущнсоти staging_entity, в сотстветствии с которым определяется таблица в стеджинге, которую нужно очистить перед заливкой в нее данных.
staging import - дата флоу, в котором подставляется полученная из get import details последняя дата обновления сущности (или айдишник) через экспрешены в виде
"SELECT id, update_date, name, value FROM ololol WHERE " + (а тут переменная, которая тоже делается через экспрешн, который мне западло писать, но, думаю, ты и так поймешь),
В результате получается
"SELECT id, update_date, name, value FROM ololol WHERE update_date >= '20170101 14:03:21'"
Ну и результат этого запроса уже грузится в стейджинг.
attempt succeded/failed - скрипты, которые проверяют, успешно ли прошел импорт. Если безуспешно, то в лупе (bulk insert attempts) начинается новая итерация после пятисекундного ожидания, вдруг подключение недоступно было некоторое время?)
main load - процедура, которая грузит данные из стейджинга уже в хранилище. В основном, это мерджи, состоящие из when matched then update, when not matched then insert
Import failed - тоже для логов.
Finilize import - процедура, которая выбирает из стеджинга последнюю дату обновления (или айдишник) и пишет в таблицу с сущностями в стейджинге, из которой их в следующем запуске опять прочитает get import details.

Инб4: ошибка в датафлоу - всего лишь следствие того, что это шаблон для пакета, в котором еще не настроено подключение.
Аноним 25/04/17 Втр 00:45:27  979475
>>979446
Правильно ли я понимаю, что пакет со скрина выполняет обновления по разным таблицам (представленным в staging_entity)? Эдакий универсальный скрипт?

Еще такой вопрос по перформансу. Как часто запускается пакет и сколько по времени выполняется?
Аноним 25/04/17 Втр 00:47:44  979479
>>979446
И еще такой вопрос. У тебя заведены отдельные скрипты для формирования записей в лог. Пользуешься ли тем что SSIS генерирует сам? Я имею в виду вьюху catalog.operations и catalog.operation_messages в базе SSISDB. Или скрипты логирования просто пишут дополнительную инфу помимо того что предсотавляет SSIS?
Аноним 25/04/17 Втр 00:58:49  979486
>>979475
>Правильно ли я понимаю, что пакет со скрина выполняет обновления по разным таблицам (представленным в staging_entity)? Эдакий универсальный скрипт?

Нет, такого в ссис не завезли, так что по этому шаблону создаются новые пакеты (их можно объединить по сущностям, если у них одна дата обновления, например, "документ" и "пакет документов" из 1С, тогда пакет один, а в датафлоу сразу несколько движений данных.
Но, в основном, просто до хуя пакетов.

>>979479
Скрипты, конечно, свои, ибо так удобнее и все кастомизируемо.
Пакеты добавляются пачками в другие пакеты, которые имеют название hourly_updatable_tables или daily_updatable_tables, например. А те, в свою очередь, уже запускаются соответствующими джобами по требуемым расписаниям.
Аноним 25/04/17 Втр 01:03:13  979490
>>979475
А по времени работы:
Если нету ебанутых НЕОБХОДИМЫХ полей с джейсонами и иксэмэлями длинной по 50000 символов, то грузится все очень быстро - буквально секунд за 15.
Но, все равно, это отстой, ибо по дефолту двх обновляется 1 раз в день, а такая вот хуйня приводит к локам, которые выстраиваются в очереди: пока кто-то там что-то селектит из твоей таблицы, хер ты ее смержишь, а после мерджа кто-нибудь опять уже хочет выполнить селект и т.п.
Но реалии бизнеса требуют вот таких вот танцев вокруг пепелища.
Аноним 25/04/17 Втр 02:39:39  979520
>>979490
Это да, у нас в организации выставлено требование - пакеты должны запускаться раз в 15 секунд, соответственно время выполнения должно быть совсем маленьким. Сейчас удалось свести время выполнения к 3 секундам, благо что новых данных не так много.
Аноним 25/04/17 Втр 07:54:40  979554
>>979365
Аноним 25/04/17 Втр 10:39:53  979621
>>979520
Отлично же.
Аноним 25/04/17 Втр 10:40:42  979622
>>979554
Важнота
Аноним 25/04/17 Втр 11:59:02  979693
Появилось у меня желание создать процекдуру для мониторинга одной очень важной хрени.
Суть - есть некоторые данные. Эти данные должны равномерно распределятся по некоторому набору таблиц. Мне нужно знать в состояние каждой порции данных.
Т.е. в каждой таблице могу быть записи с определенным id - первое состояние
Данные с этим id есть в некоторых таблицах - вторрое состояние
Данных с таким id нет ни в одной из таблиц - третье состояние

Пока таблиц всего 10 штук. На интуитивном уровне я понимаю что делается это просто - надо просто по очереди проверить есть ли в каждой из таблиц нужный id, потом срапвнить число положительных ответов с числом таблиц и вернуть один из трех ответов. На каком нибудь шарпе я бы это написал за 5 минут. Но вот на sql что то не соображу как это реализовать.
Аноним 25/04/17 Втр 22:03:40  980113
>>979693
Если хочешь сварганить динамически на уровне sql-сервера, то в помощь динамик sql. Я так понимаю, количество таблиц будет только увеличиваться.

Делаешь таблицу с таблицами (лол), далее делаешь переменную @sql_query nvarchar(max) = 'SELECT 1 WHERE EXISTS (SELECT 1 FROM '
Далее херачишь цикл, в котором проходишь по строкам созданной таблицы и имя таблица добавляешь к переменной, а потом вызывешь этот запрос с сам через EXEC sql_query или через EXEC sp_execute_sql, ну а дальше ты, думаю, разберешься.

Аноним 26/04/17 Срд 00:29:15  980239
Почаны, где токены в бд лучше всего хранить?
Аноним 26/04/17 Срд 01:35:06  980263
Ещё нубский вопрос, вот есть таблица со значениями
1
4
3
2

Из неё нужно получить
1 2
4 null
3 4
2 3

То есть поставить в соответствие каждой из цифр самую близкую из больших. Я делаю так

select b1.id, (select min(id) from b where id > b1.id) from b b1
GROUP BY id

Но можно ли как-то одним джойном?
Аноним 26/04/17 Срд 01:41:34  980266
>>980263
Ещё вот так решил:
select b1.id, min(b2.id) from b b1
left join b b2 on b1.id < b2.id
group by b1.id

Но по-прежнему буду рад вашим предложениям.
Аноним 26/04/17 Срд 07:38:09  980302
>>980266
mssql:

select id, lead(id) over(order by id)
from #mytmp
group by id
Аноним 26/04/17 Срд 10:25:39  980357
>>979621
Так то да, но если объемы данных на каждой инвокации пакета будут расти то и время выполнения будет увеличиваться.
Ну и спрашивал еще чтоб сравнить как у других, а то DW и прочим связанным начал заниматься в текущей конторе и опыта еще маловато.
Аноним 26/04/17 Срд 10:31:57  980360
Вопрос про группировки по времени. Есть некоторая таблица заказов, заказы распределены по времени не равномерно.
Задача:
1. Сгруппировать суммы заказов, скажем, по дням
2. Поскольку распределение не равномерное то могут быть дни когда заказов не было совсем, однако в конечной выборке должны присутствовать все дни без перерывов, а напротив тех дней в которые заказов не было ставить null
3. Выборка может быть отфильтрована по любому из полей таблицы заказов

Нашлось решение через подзапрос (или еще пизже через CTE). Делаем основной запрос с группировкой по дня, получаем на выходе почти готовую выборку но с пропущенными днями. Далее результат обертывается как подзапрос (или же вьюха в CTE) и к нему джойнится непрерывный список дней (либо генерим на лету, либо берем из таблицы времени), т.о. получаем как раз то что нужно.
Однако может есть еще хорошие решения?
Аноним 26/04/17 Срд 10:35:55  980364
>>980360
А нельзя просто выбрать все заказы включая нулевые поля? Выглядит как говнокод
Аноним 26/04/17 Срд 13:53:23  980455
>>980364
Что это значит вообще?
Аноним 26/04/17 Срд 17:43:17  980593
[Postgres] Обязательно ли для каждой колонки указывать тип? Нельзя сделать как-то так
>CREATE TABLE 2ch (1,2,3,4,5 int, q,w,e,r,t,y char);
?
Аноним 26/04/17 Срд 18:48:23  980623
>>980357
Ну расскажи, как у вас тогда, что ты, как фуфел?
Аноним 26/04/17 Срд 21:56:45  980751
>>980360
Двачую, однако принято наоборот делать.
Сначала рекурсивно создаем времянной диапазон, удовлетворяющий нашим нуждам, а потом к нему лефт джойном прихуячиваем сгруппированный подзапрос (или врем. Таблицу) с заказами. Все ок.
Аноним 26/04/17 Срд 21:59:58  980753
>>980364
Ну для тебя, такого нелюбителя говнокода, поясгю на примере:
В таблице (date, amount) есть две записи:

20160101, 3
20160105, 20

Напиши без "говнокода" запрос, который выведет

20160101, 3
20160102, null
20160103, null
20160104, null
20160105, 20

А мы плсмотрим.

Аноним 26/04/17 Срд 23:08:51  980800
>>980623
Да шибко разницы нет.
Один пакет на все. Внутри него под каждую сущность заведены Data Flow, выполняющие запрос из источника, сравнение с данными в DW и перенаправление на insert или update.
Запросы тягают только новые данные по timestamp. В особо плохих случаях новые данные определяются сравнением колонки версии, хрень в том что у каждой записи свой номер версии (другими словами он не сквозной) из-за этого приходится тягать все данные (id и та самая колонка версии) и сравнивать с таковыми в DW. Тут и возникает некоторый оверхед. Благо что такое встречается не во всех сущностях.
Через staging и batch update работает только одна сущность, наиболее критичная к перформансу и времени выполнения.
Все датафлоу выполняются последовательно-параллельно. Т.е. большей частью датафлоу раскиданы так чтобы выполняться параллельно, но в случаях когда одна часть зависима от другой то такие датафлоу выстраиваются в последовательную связь.
Данные вытягиваются хранимыми процедурами размещенными в оперативной базе. По одной процедуре на сущность. Вывел даже самые простецкией запросы не отличающиеся большим объемом кода - для единообразия.

Вот как-то так. Возможно несколько сумбурно, но ты задай наводящие вопросы, постараюсь ответить.
Аноним 26/04/17 Срд 23:12:16  980803
>>980364
Нету в исходной таблице заказов с нулевыми значениями.
Представь себе такие данные для примера

id, date, sum

1001,2017-04-01,34
1002,2017-04-01,10
1003,2017-04-03,20
1004,2017-04-04,30
1005,2017-04-07,89

И с группируй это так, что бы на выходе получить выборку
date, sum
2017-04-01,44
2017-04-02,null
2017-04-03,20
2017-04-04,30
2017-04-05,null
2017-04-06,null
2017-04-07,89

Как видно в исходной таблице нет данных за 2,5 и 6 число, но по задаче в конечной выборке эти числа должны присутствовать с null или 0 значением.
Аноним 27/04/17 Чтв 08:05:03  980887
hqdefault[1].jpg (16Кб, 480x360)
>>980753
select 20160101, 3
union
select 20160102, null
union
select 20160103, null
union
select 20160104, null
union
select 20160105, 20
Аноним 27/04/17 Чтв 08:17:57  980889
0D5468F5-7724-4[...].jpeg (57Кб, 500x498)
>>980887
Классика.жпг
Еле удержался, чтобы самому так не пошутить.
Аноним 27/04/17 Чтв 10:42:27  980918
Посоны, поясните за графовые базы данных.
Аноним 27/04/17 Чтв 11:05:46  980923
>>980753
Select *.
Тебе выберет записи и с нулями
Аноним 27/04/17 Чтв 11:10:54  980925
>>980803
А ну элементарно, проходишься циклом по дате в диапазоне от (дата) до (дата). Если в таблице таких дат нет, то присваиваешь полю sum нулевое значение. Теперь в запосе все это опиши (мне лень). Там сложный многоуровневый запрос будет Гугл в помощь
Аноним 27/04/17 Чтв 16:26:25  981058
>>980925
>сложный многоуровневый запрос
>проходишь циклом

И это, по-твоему не говнокод?
А заджойнить 2 простые цте-шки - говнокод?

У меня для тебя плохие новости
Аноним 27/04/17 Чтв 22:03:35  981202
>>980925
Ты траллируешь чтоли?
Аноним 28/04/17 Птн 13:36:03  981465
Посоны бдщики, поясните за ммошки, как я понял там все персонажи хранятся в бд. Статы, опыт, лвл, это всё ясно, но как хранятся предметы? Неужели там тейблы "айди игрока/айди шмотки", это же миллионы миллионов записей для того же ВоВ. Или они хранят шмотки в файлах и как-то загружают их для игроков? Хранят несколько баз данных или там и одной хватит? Я в вопросе бд почти ноль, но интересно стало. А ведь ещё есть квесты, банки, гильдейские банки. Интересно услышать что вы думаете.
Аноним 28/04/17 Птн 13:59:25  981472
>>981465
Всё лежитъ въ плоскихъ таблицахъ, БД разнесены на несколько серверовъ (это называетьса "шардингъ"), хостингъ на Амазоне.
Аноним 28/04/17 Птн 15:47:07  981506
посоны, как внести изменения в таблицу из 3х стобцов если 1й стобец играет роль идентити, он же является PK, 2 столбец - рандом текст хуета, 3й столбец - FK с референсом на 1й столбец - PK.

задача - изменить данные в 3м столбце, куда тыкать для результата:?
Аноним 28/04/17 Птн 15:53:53  981510
>>981506
>куда тыкать для результата
Алан Бьюли, «Изучаем SQL».
Аноним 28/04/17 Птн 15:56:48  981513
>>981510
это все круто конечно, но пока я докопаюсь до решения, я уже забуду его целевое предназначение
Аноним 28/04/17 Птн 15:58:23  981515
>>981513
Там в первых трёх главах примеры есть.
Аноним 28/04/17 Птн 18:25:25  981580
mgo.png (116Кб, 1026x678)
Ну и чем монга такая плохая?
Аноним 28/04/17 Птн 18:27:54  981583
Screenshot2017-[...].png (27Кб, 934x307)
Аноним 28/04/17 Птн 22:32:16  981682
>>980918
базы данных, хранящие записи в виде графа
Аноним 28/04/17 Птн 22:52:56  981698
>>981682
Пояснение 10/10
сам не ебу, что это, если что
Аноним 29/04/17 Суб 08:14:54  981789
>>981698
что такое граф ниибешь?
вощем это базы, заточенные под операции над графовыми структурами. в случае запроса "выбери мне всех пользователей, которые у меня не в друзьях и которых я не игнорю, но которые имеют со мной общие связи" реляционная базочка охуеет просто, в то время как структура гсубд позволит выполнить его без самых больших проблем
Аноним 29/04/17 Суб 08:21:58  981792
>>981789
Монга тоже не сильно напряжется.
Аноним 29/04/17 Суб 08:51:48  981805
>>981792
Ахха, в таком случае РСУБД с плоскими таблицами тоже не напряжотьса.
Аноним 29/04/17 Суб 11:12:26  981855
>>981805
xml на диске тоже норм
Аноним 29/04/17 Суб 11:14:13  981857
>>981855
Так-то да, только графы строить придется самому.
Аноним 29/04/17 Суб 14:15:16  981921
>>981855
посадить стажёра выбирать вручную тоже работает
Аноним 30/04/17 Вск 16:38:02  982441
Кто мне согласен как тупому ОБЪЯСНИТЬ одну из задач с sql-ex? Я вроде понял КАК она решается, но не понимаю ПОЧЕМУ именно так. если оставите контакты, сброшу условие полностью
Аноним 30/04/17 Вск 16:45:35  982448
>>982441
nomad@ag.ru
Аноним 30/04/17 Вск 16:54:34  982455
>>982441
Кидай сюда, чё ты как неродной.
Аноним 30/04/17 Вск 17:02:20  982457
blob (6Кб, 341x159)
>>982455
Окей

Схема БД состоит из четырех таблиц:
Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, price, screen)
Printer(code, model, color, type, price)
Таблица Product представляет производителя (maker), номер модели (model) и тип ('PC' - ПК, 'Laptop' - ПК-блокнот или 'Printer' - принтер). Предполагается, что номера моделей в таблице Product уникальны для всех производителей и типов продуктов. В таблице PC для каждого ПК, однозначно определяемого уникальным кодом – code, указаны модель – model (внешний ключ к таблице Product), скорость - speed (процессора в мегагерцах), объем памяти - ram (в мегабайтах), размер диска - hd (в гигабайтах), скорость считывающего устройства - cd (например, '4x') и цена - price. Таблица Laptop аналогична таблице РС за исключением того, что вместо скорости CD содержит размер экрана -screen (в дюймах). В таблице Printer для каждой модели принтера указывается, является ли он цветным - color ('y', если цветной), тип принтера - type (лазерный – 'Laser', струйный – 'Jet' или матричный – 'Matrix') и цена - price.

Задание: 14 (Serge I: 2012-04-20)
Найти производителей, которые выпускают более одной модели, при этом все выпускаемые производителем модели являются продуктами одного типа.
Вывести: maker, type

Решение типа такое:
SELECT maker, min(type) AS type
FROM product
GROUP BY maker
HAVING COUNT(DISTINCT type) = 1
AND COUNT(model) > 1

Результат на пике.

Я понял, что min(type) возвращает "Laptop". Но до меня не доходит как далее работает
>HAVING COUNT(DISTINCT type) = 1
>AND COUNT(model) > 1
И почему в конечном итоге правильный результат такой, какой он есть? Как это получилось из взятия минимума по типу?
Объяснение на форуме читал и не понял всё равно. У знающего человека спрашивал, вроде дошло сначала, но вот сегодня снова потерял в голове логику.
Аноним 30/04/17 Вск 17:44:22  982478
>>982457
Ну вроде ничего сложного. Для начала поменяем кое-что.

SELECT maker, min(type) AS min_type
FROM product
GROUP BY maker
HAVING COUNT(DISTINCT type) = 1
AND COUNT(model) > 1

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

COUNT(DISTINCT type) - количество типов аппаратуры. Т.к у нас группировка по производителю, то количество типов аппаратуры, которыми занимается производитель.
COUNT(DISTINCT type) = 1 - производители с единственным типом производимой аппаратуры

COUNT(model) - количество моделей аппаратуры. Т.к у нас группировка по производителю, то количество моделей аппаратуры, которые создаёт производитель.
COUNT(model) > 1 - производители, с количеством производимых моделей больше одной.

min(type) - это просто финт ушами, чтобы вывести тип. Иначе ругалось бы, что мы не группировали по type, а нам это и не надо. Т.к. тип аппаратуры у итоговых производителей только один, то всё равно min(type) = type.
Аноним 30/04/17 Вск 18:17:27  982496
>>982478
А, ну вот, теперь понял! Спасибо. Меня и путало именно то, что ты поменял, так как я думал, что в дальнейшем используется именно значение минимум/максимум из type, которому и присвоили имя этого столбца, а не оригинальный столбец. Короче, придумал себе, что это что-то вроде переменной и не понимал как из неё выходит решение. А оказалось, что это просто не особо нужная штука, внедрённая лишь чтобы избежать ошибки при выполнении.
Аноним 01/05/17 Пнд 10:12:51  982769
Аноны, я застрял со своим затупом:
Задача 18 DML с sql-ex: Перенести все концевые пробелы, имеющиеся в названии каждого сражения в таблице Battles, в начало названия.

Вот запрос:
update battles
set name = ' '+name
where right(substring(name, 1, len(name)+1),1) = ' '

Пишет, что 33 несовпадения на базе проверочной.
Первый затуп за все время и на такой казалось бы простой задаче. В чем подвох?
Аноним 01/05/17 Пнд 10:40:52  982775
>>982769
Ты же не переносишь ничего.
Аноним 01/05/17 Пнд 10:48:55  982780
>>982775
Я видимо дурак и неправильно понимаю поставленную задачу.
Аноним 01/05/17 Пнд 11:25:57  982791
>>982780
У тебя есть строка, которая начинается с 3 пробелов и заканчивается 10 пробелами. После преобразования строка должна начинаться с 13 пробелов, пробелы в конце должны исчезнуть.
Аноним 01/05/17 Пнд 11:31:53  982792
>>982791
Спасибо, я конечно очень затупил.
Аноним 02/05/17 Втр 15:21:37  983564
Каким образом разумнее хранить объекты с различными атрибутами (например, товары с набором их характеристик, которые различны для каждой категории и иногда отличаются в её пределах) в базе так, чтобы поиск по этим атрибутам не был затруднён? Есть ли нормальные альтернативы Entity-Attribute-Value для реляционных БД?
Аноним 02/05/17 Втр 15:34:36  983574
Captured1.png (7Кб, 809x440)
>>983564
Есть конечно же.
Аноним 02/05/17 Втр 15:50:53  983588
Кто-нибудь может объяснить, почему в качестве кластерного индекса рекомендуется юзать что-то уникальное и инкрементальное, например, айдюха? По идее при вставке б-дерево будет очень часто перебилдываться.
Аноним 02/05/17 Втр 15:57:35  983592
>>983588
Вставка/удаление в двоичное дерево занимает O(1) действий, с чего бы ему "часто перебилдываться".
Аноним 02/05/17 Втр 16:10:50  983600
>>983592
В обычное сбалансированное двоичное дерево - да, но б-дерево - это не двоичное сбалансированное дерево в общем случае
Аноним 02/05/17 Втр 19:12:27  983682
Пол дня убил на то чтобы подружить ебаный sqlite с юникодом, шёл 17 год, база данных не умеет в lower/upper case для non Ascii, пиздец просто пиздец.
Аноним 02/05/17 Втр 23:06:59  983850
>>983682
Чего там подруживать? sqlite поддерживает только юникодовские кодировки
Аноним 02/05/17 Втр 23:35:42  983861
>>983850

> не умеет в lower/upper case для non Ascii

Ты с первого раза не прочел что-ли? Подробности тут, https://habrahabr.ru/post/57915

Закончилось тем что поправил исходники библиотеки поддерживающий юникод, скомпилировал, подружил с iorm и это гавно заработало.
Аноним 02/05/17 Втр 23:37:24  983864
>>983600
несбалансированное
медленнофикс
Заодно бамп вопросу.
Аноним 02/05/17 Втр 23:38:45  983865
>>983861
Тогда красава. Пуллреквест сделал?
Аноним 02/05/17 Втр 23:45:25  983866
>>983865

Статья в 2009 опубликована, за эти много-много лет уже все до меня (не)сделали.

Как я понял, не хотят добавлять upper/lower cases т.к. куча специфических нюансов типа письма слева-направо, возможности кодировать один символ разными способами, и т.д. В это все углубляться не стал, так как нужен был исключительно русский язык. Под самый конец (как и полагается) даже нашел статью о примерном решении к которому сам пришел, вобщем все как обычно.
Аноним 03/05/17 Срд 13:33:40  984120
1.png (26Кб, 413x464)
2.png (95Кб, 1166x604)
Добро пожаловать в phpMyAdmin
Что с ним со мной не так?
Аноним 04/05/17 Чтв 09:16:57  984567
>>983682
Зато весит 600 кбайт, в отличии от скл-сервера, например, который несколько гигов занимает.
Аноним 04/05/17 Чтв 09:22:30  984570
>>984567
функционал у него соответствующий, на 600кб
Аноним 04/05/17 Чтв 11:01:21  984604
>>973923 (OP)
сап двач.
сижу в шараге 4 пары практики по БД!!!! Нужна помощь с запросом. нада вычеслить разность количества товаров из двух таблиц: ПОСТУПЛЕНИЕ и ПРОДАЖИ(есть еще таблица ТОВАРЫ но похуй). То есть сгруппировать товары в обеих таблицах по коду товара и sum(Postuplenie.Kolvo)-sum(Prodaji.Kolvo). ВОТ таблицы:

Продажи

Номер________int PK
Код товара____int FK
Дата__________date
Количество____int
Цена__________money

Поступления

Номер________int PK
Код товара____int FK
Дата__________date
Количество____int
Цена__________money

Вот мои наработки:
SELECT sum(hui1)-sum(hui2)
FROM(
SELECT Номер, Название, Дата , Количество AS hui1, Цена, КоличествоЦена AS Стоимость
FROM Товары, Поступления
WHERE (Код = [Код товара])
UNION
SELECT Номер, Название, Дата , Количество AS hui2, Цена, Количество
Цена AS Стоимость
FROM Товары, Продажи
WHERE (Код = [Код товара])
)
GROUP BY Номер
Аноним 04/05/17 Чтв 13:54:50  984689
>>984604
SELECT t.Номер, SUM(Количество * Направление)
FROM
(
SELECT Номер, Название, Дата , Количество, Цена, КоличествоЦена AS Стоимость, 1 as Направление
FROM Товары, Поступления
WHERE (Код = [Код товара])
UNION
SELECT Номер, Название, Дата , Количество, Цена, КоличествоЦена AS Стоимость, -1 as Направление
FROM Товары, Продажи
WHERE (Код = [Код товара])
) t
GROUP BY Номер
Аноним 06/05/17 Суб 10:41:04  985687
Решил продолжить оттачивать свой sql-скилл через sql-ex. Мне, как лишь иногда макросописцу на VBA, очень трудно дается абсолютно новая сфера.
Решил влететь на рейтинг и с первой задачи охуел:
Дима и Миша пользуются продуктами от одного и того же производителя.
Тип Таниного принтера не такой, как у Вити, но признак "цветной или нет" - совпадает.
Размер экрана Диминого ноутбука на 3 дюйма больше Олиного.
Мишин ПК в 4 раза дороже Таниного принтера.
Номера моделей Витиного принтера и Олиного ноутбука отличаются только третьим символом.
У Костиного ПК скорость процессора, как у Мишиного ПК; объем жесткого диска, как у Диминого ноутбука; объем памяти, как у Олиного ноутбука, а цена - как у Витиного принтера.
Вывести все возможные номера моделей Костиного ПК.

Ладно, пара часов и всё свел, получил правильное решение на общей базе, но на проверочной встрял.
Походу встрял на пункте, где надо вытащить модели с общим 3 символом.
Итак, вот мой подход:
>Выбираем все модели с количеством символом от 4, где можно применить правило "первые два символа и все после третьего должны совпадать"

with baze as(Select model, left(model, 2)+right(model, len(model)-3) num3 from printer
where len(model) > 3
union
select model, left(model, 2)+right(model, len(model)-3) num3 from laptop
Where len(model) > 3)
select model from (select num3, count(num3) ct from baze
group by num3) ac left join baze on ac.num3=baze.num3
where ct > 1
>Дальше объединим с "все модели с <4 символов, у которых должны совпадать только первые два". Тоже самое, только чуть иначе:
with baze as(Select model, left(model, 2) num3 from printer
where len(model) < 4
union
select model, left(model, 2) num3 from laptop
Where len(model) < 4)
select model from (select num3, count(num3) ct from baze
group by num3) ac left join baze on ac.num3=baze.num3
where ct > 1


Ну и далее я при определении ноута Димы буду просто ссылаться на полученную таблицу с моделями.
Все равно не могу дополучить 2 значений на проверочной базе. Где я дурак?

Аноним 06/05/17 Суб 12:12:02  985729
>>985687
А если предположить, что 3 символ должен быть?
Аноним 06/05/17 Суб 12:21:24  985740
>>985687
Во втором запросе ещё не хватает проверки, что обе модели длины 3 или что одна модель длины 3, а вторая длины 2.
Аноним 06/05/17 Суб 12:56:10  985755
>>985687
И ещё эти запросы не смотрят вообще на 3 символ. Он же должен отличаться.
Аноним 06/05/17 Суб 19:33:26  985951
Реквестирую вводную книгу по SQl. А то знакомый-студент попросил решить пару заданий, а я даже после беглого гуглинга понял, что нихуя не понял этот ваш SQL.
Аноним 06/05/17 Суб 21:06:01  986027
>>985951
У нас в универе были базы, но вдуплил во всё это дело только на работе. Так что какой-то книги, чтобы взять и понять, не посоветую.
Аноним 06/05/17 Суб 22:05:57  986064
>>985951
Любая книга подойдет, если ты совсем по нулям. Я выучил sql как начал с ним работать. Не скажу что дохуя эксперт, но для решения большинства задач знаний хватает. Пока читаешь про сферический left join в вакууме в памяти откладывается все это плохо. Нужна постояная практика.
Аноним 06/05/17 Суб 23:22:50  986119
>>985951
Хороший гайд: https://github.com/codedokode/pasta/blob/master/db/databases.md
Сам его прошёл, как раз в конце есть 4 интересные задачи.
Аноним 07/05/17 Вск 22:03:34  986546
>>986027
Полностью двачую, аналогичная хуйня. В универе были курсы по бд и хранилищам, все проебланил, как мудак. Думал, что хуйня, все казалось скучным и неинтересным.
А на работе а к а стажировке проникся прям, тепеь жить не могу без двх, кубов скл и мдх. (И соответствующей приятной зп, конечно.)
Аноним 09/05/17 Втр 17:22:15  987659
image.jpg (406Кб, 1336x600)
Не пойму чего хотят и как это получить.
Желательно подскажите с помощью чего решить (не решать за меня), хочется нубские навыки развить.
Аноним 09/05/17 Втр 18:40:53  987700
>>987659
Хотят, чтобы ты табличку с подразделениями заджойнил на себя 4 раза и вытащил в оезультат запроса коды и наименования "родительских" подразделений.
Проиграл с термина
>историзация
Принято говорить историчность прост

для про-левела можно вместо 4 джойнов заебашить рекурсию, но, если ты не понял суть задания, то про рекурсию, скорее всего, не слышал
Аноним 09/05/17 Втр 18:43:22  987702
>>987700
> заджойнил на себя 4 раза
нихуя стопэ. еси уж говнокодить, так с пивотом, а не вот это вот вы
Аноним 09/05/17 Втр 20:21:36  987769
>>985740
То есть должны попадать только те, что длины 2 и совпадают по этим двум символам, а например ххх и хх не должны считаться как совпадающие?
В таком случае опять ошибка:

With bazex as (select l.model lapmod, pr.model prmod from
(select model from laptop where len(model) >3) as l, (select model from printer where len(model) >3) as pr
where substring(l.model,4,len(l.model)-3)=substring(pr.model,4,len(pr.model)-3) and substring(l.model,1,2)=substring(pr.model,1,2)
and substring(l.model,3,1)<>substring(pr.model,3,1)
union
select l.model lapmod, pr.model prmod from
(select model from laptop where len(model) =3) as l, (select model from printer where len(model) = 3) as pr
where substring(l.model,1,2)=substring(pr.model,1,2)
and substring(l.model,3,1)<>substring(pr.model,3,1)
Union
select l.model lapmod, pr.model prmod from
(select model from laptop where len(model) =2) as l, (select model from printer where len(model) = 2) as pr
where substring(l.model,1,2)=substring(pr.model,1,2)
and substring(l.model,3,1)<>substring(pr.model,3,1)
),

OLap as (Select p.model, l.screen screen,ram from product p left join laptop l on p.model = l.model
where p.model in (select lapmod from bazex union select prmod from bazex) and p.type = 'Laptop'),
VityaP as(
Select p.model, printer.type, color, price from product p left join printer on p.model = printer.model
where p.model in (select lapmod from bazex union select prmod from bazex) and p.type = 'printer'),
TanyaP as(Select model, type, color, price from printer
where type not in (select type from VityaP) and color in (select color from VityaP)),
MishPC as(
Select p.maker, PC.model, PC.price, speed from PC left join product p on p.model = pc.model
Where PC.Price in (Select price*4 from TanyaP)),
DimLap as (Select maker, l.model, hd from laptop l left join product p on l.model = p.model
where screen in (select screen+3 from OLap) and l.model not in (select model from OLap) and maker in (select maker from MishPC))
Select model from PC

Where speed in (select speed from mishPC) and hd in (select hd from dimlap) and ram in (select ram from OLap) and price in (Select price from VityaP)

Аноним 09/05/17 Втр 20:28:57  987775
Не знаю связанно или не связано с тематикой данного треда,
сам нуль поэтому и спрашиваю тут:
Есть короче друпал у него есть бд, я через phpmyadmin в друпальскую БД добавил свою колонку допустим с Id и Name
как мне их вывести на странице?
Скиньте либо тутор какой нибудь, либо наставьте по пацански, можете даже обосать, только не бейте.
Алсо если друпал говно предложите альтернативу. По сути мне нужно только выводить информацию с бд на странице.
Спасибо.
Аноним 09/05/17 Втр 20:35:42  987777
>>987775
>Алсо если друпал говно предложите альтернативу.
Ви таки будете смеялъсо, но — чистый похапэ.
Аноним 09/05/17 Втр 20:43:53  987784
>>987769
Наоборот: две модели с длиной 2 не подходят под данное условие по определению. То, что ты пытался отсеять, допустимо, если это допустил автор задачи.
Аноним 09/05/17 Втр 21:18:28  987805
>>987784
Значит только те, что имеют 3 символа и более?
А модели xxx и xx тоже отсеиваются, так как у них не отличается третий символ за неимением.
Аноним 09/05/17 Втр 21:38:23  987815
>>987805
Ну вот про последний случай я и говорил, что тут не понятно. Отсутствие и наличие символа может считаться различием.
Учитывая, что тебе нужно сам третий символ сравнивать. В теории модели принтеров и ПК могут совпадать
Аноним 09/05/17 Втр 22:03:01  987827
>>987815
Ну а зачем сравнивать с 2 символами, если можно ограничиться только двумя выборками - с 3 символами и с более 3х?
А для третьего символа я добавил substring(l.model,3,1)<>substring(pr.model,3,1)
Аноним 10/05/17 Срд 02:16:15  987948
>>987702
У тебя написано, что максимальный уровень вложенности 4. Считаешь, что 4 джойна - это говнокод, вперед, развлекайся с пивотами.
Аноним 11/05/17 Чтв 10:44:09  988661
>>987948
Пивот - пкремещение?

100.500.100 - это какой тип данных?
Аноним 11/05/17 Чтв 11:42:30  988689
Пацаны, если я хочу учить SQL по книге. То год выпуска книги не имеет большого значения?
Аноним 11/05/17 Чтв 13:15:48  988740
>>987948
да я вообще эту хуйню городить не буду. ни с пивотами, ни без, лел
Аноним 11/05/17 Чтв 13:33:38  988751
>>988689
если книга разгоняет за сыкуль соответствующий какому-то актуальному стандарту то да.
SQL вроде консервативен дохуя так что просто не бери книги старше 20 лет лол
Аноним 11/05/17 Чтв 16:48:56  988874
image.jpg (22495Кб, 4032x3024)
Есть 2 таблицы, по ним нужно сделать задания.
Делаю, но никак не в дуплю.
В заданиях говорится о пользовательских отчетах.
Что значит пользовательский отчёт?
Потом ещё требуют сделать с параметрами для выбора пользователя.


Как их делать то?
Аноним 11/05/17 Чтв 16:50:25  988875
image.jpg (23940Кб, 4032x3024)
>>988874
Аноним 11/05/17 Чтв 17:32:45  988883
>>988874
>22мб
Аноним 11/05/17 Чтв 18:19:05  988904
>>988883

Ты бы лучше по теме сказал, в Эксель это выпадающий список. А тут что?
Я нуб совсем.
Аноним 11/05/17 Чтв 19:22:15  988931
>>988904
Не скажу я ничего, интернет не позволяет.
Аноним 11/05/17 Чтв 22:24:09  989011
>>988661
Я твой вопрос вообще не понял, если честно.
Аноним 11/05/17 Чтв 22:27:06  989016
>>988874
Пользовательский отчет - это результатов запроса куда-угодно: в Excel, Reporting и т.п.
Суть в том, чтобы этот отчет имел возможность обновляться и отображать всегда актуальные данные.
в Excel это делается через "Данные"-"Подключения", куда ты должен запилить процедуру или вьюху.
Аноним 12/05/17 Птн 00:15:22  989054
>>988904
Ты не просто нуб, ты еще и долбоеб.
У тебя на картинке тектса меньше чем на килоайт. Но ты, блядь, запихнул его в картинку на 22 мегабайта. Качать 22 метра так себе удовольствие. Если не можешь описать задачу нормально, то сиди и страдай. Тебе никто ничего не обязан.
Аноним 12/05/17 Птн 00:39:18  989064
>>989054
Извините, с айфона фоткал
Аноним 12/05/17 Птн 18:05:41  989379
Что за хуесосы придумали ms sql, почему нельзя просто перенести базу данных с одного компьютера на другой?
Аноним 12/05/17 Птн 18:28:48  989393
>>989379
BACKUP/RESTORE DATABASE))))
Аноним 12/05/17 Птн 19:54:25  989485
>>989379
что за хуесос придумал тебя? просто кек
Аноним 15/05/17 Пнд 08:04:22  990858
>>989379
Там же несколько способов: бэкап/рестор, детач/аттач, копирование в двух режимах. Чего не хватает?
Аноним 15/05/17 Пнд 10:07:06  990892
>>973997
std::string обертка над charЗВЕЗДАЗВЕЗДА
char[] тоже самое, что и charЗВЕЗДАЗВЕЗДА, просто по другому написанное
Аноним 15/05/17 Пнд 10:08:19  990893
>>973923 (OP)
>выбираем лудшую СУБД
Перечислил говно, а Firebirda и нет.
Аноним 15/05/17 Пнд 10:08:56  990895
>>990892
>ЗВЕЗДАЗВЕЗДА
просто ЗВЕЗДА
фикс
Аноним 15/05/17 Пнд 10:11:03  990898
>>990892
Если тоже самое значит может работать приведение типов, как между char и byte... ох вэйь оно не рботает, а ты долбоеб просто не понимаешь о чем пишешь. Кокая печалька.
Аноним 15/05/17 Пнд 10:54:07  990920
>>990893
Каковы преимущества файрбёрда перед перечисленными СУБД?
Аноним !ELITA480uA 15/05/17 Пнд 12:47:30  991000
>>973923 (OP)
FOXPRO ЗАБЫЛИ
Аноним !ELITA480uA 15/05/17 Пнд 13:01:59  991007
Leto DB Server - ПРОДВИГАЛ NOSQL ДО ТОГО КАК ЭТО СТАЛО МОДНА
Аноним !ELITA480uA 15/05/17 Пнд 13:02:38  991009
XBASE РАБОТАЕТ ДАЖЕ НА 8И БИТНЫХ КОМПЬЮТЕРАХ!
Аноним 17/05/17 Срд 01:42:23  992051
>>990893
>эксель гугл спред щитс
>перечислил говно
Wait...
Нужно, чтобы ты убедил нас в преимуществе своего говна над экселем, тогда, так и быть, включим его в следующий тред.
Аноним 19/05/17 Птн 12:17:22  993227
Это нормально что ILIKE раза в три медленнее LIKE в постгресе? Как юзать LIKE без зависимости от регистра?
Аноним 19/05/17 Птн 12:33:59  993232
>>993227
>RDB
>LIKE
Сам поймёшь где обосрался?
Аноним 19/05/17 Птн 13:14:27  993240
>>993232
MONGOEB ETO TI?
Аноним 19/05/17 Птн 16:11:12  993344
>>993227
UPPER(t.field) like UPPER(filter)
Аноним 22/05/17 Пнд 17:29:11  994781
Есть таблица в Sqlite как на пике. Колонки А и В содержат условные числа, в С - произведение А и В. Некоторые ячейки в колонке С не заполнены должным образом. Как это сделать?
Аноним 22/05/17 Пнд 18:28:06  994802
>>994781
Как сделать что?
Аноним 22/05/17 Пнд 18:55:51  994818
>>994802
Это
Аноним 22/05/17 Пнд 18:57:52  994820
>>994802
Записать результат произведения А и В в С, стоящих в одном ряду, если С - пуста.
Аноним 22/05/17 Пнд 19:10:36  994829
>>994820
update table
set c = a * b
where c is null
Аноним 23/05/17 Втр 01:22:21  995066
>>994829
>>994820
Лол, там уже запрос на русском был написан, нужно было просто перевести на скл.
mysql Аноним 23/05/17 Втр 21:26:36  995354
>SELECT `name` FROM `items` ORDER BY `name`
>Item - Stage 10
>Item - Stage 11
>Item - Stage 6
>Item - Stage 7
Ору с этой парашной сортировки в 2к17. Пиздец, стыдоба, просто пиздец.

Существует НОРМАЛЬНЫЙ способ (т.е. максимум в одну строку) правильно отсортировать имена? Чтобы стало вот так:
>Item - Stage 6
>Item - Stage 7
>Item - Stage 10
>Item - Stage 11
Аноним 23/05/17 Втр 22:38:19  995398
>>995354
Опиши критерий, по которому ты хочешь сортировать?
В твоей табличке в поле name есть только записи в стиле
>Item - Stage X
?
На каком месте, напрмер, должна находиться запись
>Item - Stage 1x1?
В общем, напиши нормально постановку задачи.
Mysql сортирует твоим имеа, как строки, в которых 11, очевидно, идет перед 2.
Аноним 23/05/17 Втр 22:46:13  995408
>>995398
Мне нужна натуральная сортировка (Natural Sort https://en.wikipedia.org/wiki/Natural_sort_order), где результат будет такой:
...
>ItemOne - Stage 6
>ItemOne - Stage 7
>ItemOne - Stage 10
>ItemOne - Stage 11
>ItemTwo - Stage 6
>ItemTwo - Stage 7
>ItemTwo - Stage 10
>ItemTwo - Stage 11
...
В пхп есть функция natsort http://php.net/manual/en/function.natsort.php однако я спрашиваю про такую же функцию в mysql. Других колонок для сортировки в таблице нет, есть только рандомные айдишники.
Аноним 23/05/17 Втр 23:01:43  995419
>>995408
А в гугле тебя забанили, чудило?
Аноним 23/05/17 Втр 23:10:31  995425
>>995408
https://stackoverflow.com/questions/153633/natural-sort-in-mysql
Аноним 23/05/17 Втр 23:19:30  995428
>>995419
Перед тем, как задать вопрос, я все проверил и те костыли не рабоают на моем примере.

>>995425
Разберем по частям написанное:

>A solution could be to create another column
Для того, чтобы создать колонку с сортировочным ключом нужно изначально отсортировать правильно и/или написать сортировочную функцию. Перечитай мой первый пост, там сказано "НОРМАЛЬНЫЙ способ (т.е. максимум в одну строку)".

>SELECT alphanumeric, integer FROM sorting_test ORDER BY LENGTH(alphanumeric), alphanumeric
Обосрётся как только изменится размер строки с "ItemTwo - Stage 11" на "ItemThree - Stage 11".

>SELECT names FROM your_table ORDER BY games + 0 ASC
Работает только на числовых строках.

>несколько ответов, где предлагают создать функцию на сотню строчек
Тут всё ясно.

>CAST(mid(name, 6, LENGTH(c) -5)
Не сработает на строках разной длины и структуры.

>REPLACE(`table`.`column`,'Scene ','')
Не сработает на строках разной длины и структуры.

>Utilise the "Release Date" column
У меня нет подобных колонок.

>ответы, которые повторяются и уже давали выше

А теперь я попрошу опять. Мне нужен короткий способ натуральной сортировки МОИХ строк. Кто-нибудь может помочь?
Аноним 23/05/17 Втр 23:27:56  995433
>>995408
Так и не добился от тебя ответа на вопрос, что за данные лежат в поле name.
Если они все только заканчиваются каким-то числом, идущим после пробела, то отсортируй по нему:

>Order by right(name, instr(reverse(name), ' ')-1), name
Аноним 23/05/17 Втр 23:29:03  995434
>>995433
Рандомное имя
>ItemOne - Stage 6
>ItemOne - Stage 7
>ItemOne - Stage 10
>ItemOne - Stage 11
>ItemTwo - Stage 6
>ItemTwo - Stage 11
>ItemThree - Stage 11
>ItemFour
>ItemFive - Stage 1
>ItemFive - Stage 2
Аноним 23/05/17 Втр 23:31:00  995436
9.png (17Кб, 313x532)
>>995433
Вот я даже полез и заскринил.
Аноним 23/05/17 Втр 23:32:06  995437
>>995434
Ответь на вопрос, в каком порядке должны возвращаться следующие строки в результате твоей сортировки?
>name1
>nam1e
>name01
> 1
>name
>2name

Потому что пока не очень понятно, что ты хочешь получить.
В доке пхе слишком простой пример описан.
Аноним 23/05/17 Втр 23:35:10  995440
14955714608390.png (24Кб, 313x532)
>>995437
>Мне нужен короткий способ натуральной сортировки МОИХ строк. Кто-нибудь может помочь?
Я не знаю, как нужно отсортировать твои строки. Могу показать, как нужно получить на скрине на настоящией колонке с данными.
Аноним 23/05/17 Втр 23:37:58  995443
>>995440
>natural sort
>This function implements a sort algorithm that orders alphanumeric strings in the way a human being would while maintaining key/value associations
>human being
>я не знаю, как отсортировать твои строки

О чем разговор тогда?
Числа могут встречаться только в конце твоих слов или где угодно?
Аноним 23/05/17 Втр 23:41:10  995444
>>995443
По твоим строкам не очевидно, как их нужно сортировать. В моем же случае полностью очевидно - по названиям и по стейджу. Или ты хочешь сказать, что человек при сортировке моих данных поставил бы стейдж 12 выше стейджа 7 имея "Baleful Staff - Stage 12" и "Baleful Staff - Stage 7"? Нет, поставил бы правильно, т.е. как
>human being

Числа только в конце.
Аноним 23/05/17 Втр 23:54:14  995451
Если только в конце, то сортируем по
1. Имени, обрубленному до первому встречному числу, если оно есть,
2. По числу, если оно есть.
Order by
Case when right(name, instr(reverse(name), ' ')-1)+1=right(name, instr(reverse(name), ' ')-1)
Then
Left(name, len(name)-instr(reverse(name), ' ')-1)
Else name
End,
Case when right(name, instr(reverse(name), ' ')-1)+1=right(name, instr(reverse(name), ' ')-1)
Then
Cast(right(name, instr(reverse(name), ' ')-1) as int)
Else 0
End

К сожалению, в mysql нет нормальной проверки на то, является ли строка числом, поэтому приходится так извращаться.
В одну строчку не сделаешь, думаю.
Аноним 23/05/17 Втр 23:54:58  995452
>>995451
Это ответ на
>>995444
Аноним 23/05/17 Втр 23:57:01  995454
>>995451
Пишу с айпада, извиняюсь.
Там, где написано
>+1
Нужно написать +0
Таким образом мы и осуществим проверку на то, является ли строка числом.
Аноним 23/05/17 Втр 23:59:21  995456
>>995454
Благодарю, человек хороший.
Аноним 24/05/17 Срд 00:01:24  995457
43B6EFF4-A9F1-4[...].jpeg (60Кб, 460x594)
>>995456
Аноним 27/05/17 Суб 12:48:26  996959
Помогайте
Есть таблица, в ней поля
Id, дата открытия договора , дата закрытия
Все за 2015 год
Договор открыт - считается активным.

Надо вывести все активные договора в мае месяце!
Договор может быть открыт 1 мая и закрыт второго. Такие тоже выводить.


Второе задание.

Есть те же данные, получить разбивку по месяцам и кол-во активных дней. К примеру.
1,01.01.2015,15.05.2015
Должный получить 3 поля
Айди, месяц, кол во активных дней.
Из даты выше выйдет такое:
1,январь,30
1,февраль,28
1,март, 30
1,апрель,31
1,май,15. 15 - так как договор был закрыт 15 мая, то есть активен 15 дней

Аноним 27/05/17 Суб 13:37:59  996981
>>996959
УСТАНОВИ FOXPRO 2.4 DOS
Аноним 27/05/17 Суб 13:54:48  996988
>>996959
>Договор может быть открыт 1 мая и закрыт второго. Такие тоже выводить.

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

http://sqlfiddle.com/#!9/4f9d1/2/0
Аноним 27/05/17 Суб 14:11:46  996993
>>996959
Select
*
From tbl_agreement
Where date_close > cast('20170501' as date)

Как я понял, нужно вывести все договора, которые были активны в мае.
Аноним 27/05/17 Суб 14:18:55  996997
>>996988
1С установи
Аноним 27/05/17 Суб 18:16:37  997102
>>996988
Спасибо, ебать
Я подвох искал. Думал через вьючу там или под запрос,
Оказывается так легко все
Аноним 27/05/17 Суб 18:22:12  997106
image.png (69Кб, 1136x640)
>>996959
Первое задание сделано. Теперь второе. интервал разбить на пик
Аноним 27/05/17 Суб 18:51:03  997117
>>997102
Ошибочка, должны выводится все договоры
В твоём примере должен выводится договор 1,2,4,5
Так как они тоже в мае были "активны"
Аноним 27/05/17 Суб 18:55:09  997121
>>997117
>>996993
Аноним 28/05/17 Вск 15:05:53  997467
Посоветуйте БД, где сама база данных размещается в одном файле, аналог Sqlite и Access. Первая не подходит потому, что только под дотнет шифруется, а вторая потому что проприетарщина. Я смотрел на H2, но так и не нагуглил, можно ли всю БД иметь в подключаемом к моей программе файле.
Аноним 28/05/17 Вск 15:12:32  997473
>>997467
> H2
Можно
Аноним 28/05/17 Вск 15:13:44  997474
>>997473
А вообще это годный вариант? Или есть лучше?
Аноним 28/05/17 Вск 15:25:27  997481
7.png (87Кб, 448x464)
>>997473
Просто в голос. Поставил на бд логин с паролем, а в HEX редакторе все равно видно последнее действие.
Аноним 28/05/17 Вск 15:27:19  997485
8.png (36Кб, 234x442)
Ясн, там вся бд в открытом виде.

Дайте аналог sqlite с шифрованием файла, пожалуйста.
Аноним 28/05/17 Вск 15:28:38  997486
>>997485

SQLCipher?
Аноним 28/05/17 Вск 15:31:25  997489
>>997486
Это же не БД, это шифровалка sqlite, да еще и платная. Мне нужно что-то другое.
Аноним 28/05/17 Вск 15:33:56  997491
9.png (56Кб, 279x445)
А не, сори. Это я даун, который не умеет читать документацию. H2 умеет в AES шифровку из коробки, и это прекрасно.
Аноним 28/05/17 Вск 18:35:29  997573
fjoFZ8Uw1gY.jpg (19Кб, 300x428)
>>974094
>codewars.com
>Submiting your final solution...
Аноним 28/05/17 Вск 19:55:46  997594
>>997106
Помогайте....(
Аноним 28/05/17 Вск 20:03:10  997599
>>997594
Чем тебе помочь? Ставь конкретную задачу.
Из того что ты писал выше ни слова про пик нет.
Аноним 28/05/17 Вск 23:17:31  997690

>>996988

Надо из этой таблицы.

>>997599

Получить тот пик который я скинул.

Аноним 29/05/17 Пнд 10:44:26  997843
>>997690
Блять, ты заебал, напиши нормально все в одном посте:
Данные,
Задача

А то у тебя все разбросано: часть на скл фидле, часть на пикчах, все в разных постах, блять, хуево описано.
Аноним 29/05/17 Пнд 11:12:28  997857
image.png (69Кб, 1136x640)
>>997843
http://sqlfiddle.com/#!9/4f9d1/2/0

Айди договора, дата открытия, дата закрытия.
Договор 1,01.01.2015,05.05.2015
Посчитать кол-во активных дней,т.е.
Построить отчёт следующего вида:
Договор 1,январь,30дней
Договор 1,февраль 28 дней
..
Договор 1, май,5 дней

Приложил пик для наглядности
Аноним 29/05/17 Пнд 13:42:36  997903
>>997857
Один я ничего не понял?
Аноним 29/05/17 Пнд 14:06:44  997922
image.png (69Кб, 1136x640)
>>997903
Вот пик что надо получить, блядь

Аноним 29/05/17 Пнд 14:07:56  997924
>>997922
Есть данные
Договор, открыт 1 января, закрыт 15 марта.
Посчитай кол-во активных дней по месяцам.
Аноним 29/05/17 Пнд 14:17:22  997930
>>997857
Количество активных дней считается через разницу между датой начала договора и сегодняшним днем или датой закрытия?
Какая у тебя СУБД? В разных субд даты вычитаются разными функциями.
Аноним 29/05/17 Пнд 14:23:50  997935
>>997930

MySQL

Функцией dateiff мы получим 70 с хуем. дней, то есть январь февраль и 15 дней марта
Мне же надо посчитать в каждом месяце сколько дней "активных". Я скинул пик даже, что непонятного?
Аноним 29/05/17 Пнд 14:54:09  997959
>>997935
В том то и дело, что нихуя не понятно. Пример дай нормальный.
Аноним 29/05/17 Пнд 15:01:16  997963
>>997935
А, я понял. Ну ничего очевидного в голову не приходит.
Аноним 29/05/17 Пнд 15:02:40  997965
>>997963
Подсказали, таблицу с датами сделать и к ней джойнить ;)
Аноним 29/05/17 Пнд 15:46:26  997986
>>997965
А это вообще законно? Обычно явно пишут какие таблицы есть и какие можно использовать.
А тут не особо ясно что ты к чему джоинить собрался. Годы? Месяцы? Дни?
Аноним 29/05/17 Пнд 16:48:49  998012
>>997986
Месяцы, а потом исходя из этого вывести кол во дней. Хз
Аноним 29/05/17 Пнд 16:54:10  998013
>>998012
Вот есть у тебя дата открытия 1 января 2015 и дата закрытия 1 января 2017. Если джоинить по таблице с месяцами, то джин даст ровно одну строку.
И в чем смысл?
Аноним 29/05/17 Пнд 17:25:25  998026
>>997935
>>997965
>>997986
>>998013

U N I O N A L L
N
I
O
N

A
L
L
Аноним 30/05/17 Втр 05:18:32  998378
Допустим есть таблица с большим количеством записей. Что эффективней:
- делать запрос в такую таблицу
- или разбить таблицу на несколько (таблица1, таблица2...) и делать запросы в них, а результат объединять
?
Аноним 30/05/17 Втр 05:59:11  998392
>>980239
Redis
Аноним 30/05/17 Втр 06:06:35  998395
>>998378
А сам-то как думаешь? Какие данные? Какой запрос?
Аноним 30/05/17 Втр 10:12:31  998448
>>998378
Эффективнее будет их проиндексировать. Разбиение нарушит целостность данных.
Аноним 30/05/17 Втр 14:47:58  998575
>>998448
базачую.
Аноним 31/05/17 Срд 16:12:33  999191
>>976033
датагрип божественный, хотя денег стоит
Аноним 31/05/17 Срд 16:30:15  999204
>>978107
постгрес это хайп, хомяки все на него побежали. вопреки кукареканию EDB и Бартунова до оракла и MSSQL ему пока еще слишком далеко, т.е. совсем, лет так 10-15 не меньше (представь куда уйдет оракл за это время), а многих вещей у него вообще никогда не будет. в сравнении с MySQL он до сих пор проигрывает по репликации, по сложности обслуживания (это кажется мол чего там, а потом всех заебывает), по скорости. у постгреса 55 сторонних левых решений по репликации, встроенное начало шевеличться только сейчас, на фоне MySQL это позор. ну когда там появится нормальный отлаженный отшлифованный мульти-мастер? что до модных хипстерских фишечек постгреса: даже консервативные mssql и оракл не отстают, в оракле уже есть Json. mysql тоже не отстает и там тоже есть json теперь, по поддержке SQL mysql уже подтянулся и реализовал и оконные функции, рекурсию в цте и вроде даже кубы. mysql вообще очень сильно вырос за последние 10 лет, я его вообще как качественно иной продукт воспринимаю. всякие прикольные экстеншены и хуйнюшки постгреса в массовой практике никто не использует, не воспринимает и не даст тебе этого сделать, тебя просто коллеги-программисты не поймут. полнотекст у него хороший но он хуже и всяких люсен и даже вшивого сфинкса. выбирает-то он быстро но выборка без ранка пользы не несет никакой, они сами это понимают и пишут и говорят, приставные костыли в виде рум начали появляться только сейчас, это при том, что люсенам и сфинксам уже хз сколько лет и там всё давно отлажено. проблемы постгреса с валлогами и переполнением транзакций - они вообще не будут никогда решены, это просто его особенность. ну а что у него есть особо? дмл транзакционный? это мелочь на самом деле незначительная. постгис - но это отдельный проект, и к БД отношения не имеет, ДБА на этом ЗП не увеличит, программист тоже, это нишевая вещь очень (постгис), это надо идти тогда в ГИС куда-то но там надо много чего другого. т.е. постгес это такая красивая идеальная картинка, всё прикольно, модно, правильно, но на практике всё разбивается о реальность: всё это свистелки мелочные, а постгресу реально нет места особенно-то.
Аноним 31/05/17 Срд 17:16:18  999233
>>998378
все ответы неправильные. таблицу с "большим кол-вом" данных нужно оставить как есть. базы данных на то и придуманы.
если запрос тормозит, значит проблема в чем-то другом (может быть в запросе?)
Аноним 31/05/17 Срд 17:29:20  999243
>>999233
Ну расскажи нам как правильно написать select * from из таблицы с миллиардом записей
Аноним 31/05/17 Срд 17:38:18  999251
>>999243
тебе в приложении нужен весь миллиард?
если нет, то выбирай то, что приложению/аналитику нужно. where параграф-то тебе на что?
Аноним 31/05/17 Срд 18:00:33  999274
>>999251
>>тебе в приложении нужен весь миллиард?
Да. Мне нужен весь миллиард. Иначе зачем мне база данных, если не для хранения миллиарда записей.
Аноним 31/05/17 Срд 18:15:55  999303
>>999274
Дичь нам не втирай. Задача какая?
Аноним 31/05/17 Срд 18:18:35  999306
>>999274
Ну так выбирай весь миллиад строк, смотри, читай строки. Радуйся. Проблема-то в чем?
Аноним 31/05/17 Срд 18:31:35  999322
>>999274
Ну так пишешь select и выбираешь миллиард записей, в чем проблема-то?
Может, у тебя машина слабовата, так надо подбирать ее сообразно задаче.
Аноним 01/06/17 Чтв 00:58:02  999475
Итак, слушайте задачку не особо сложную на тему хранилищ данных:
у вас есть таблица-источник в виде матрицы:
В первой колонке города, откуда едет транспорт
Каждая следующая колонка носит название города, куда поедет транспорт. А на пересечении стоит значение:
>26дн.30000
где 26дн. - это время, затрачиваемое на поездку, а 30000 - стоимость перевозки.
Например,
>Города_____|Москва______|Спб
>Псков______|15дн. 150000 | 26дн. 210000


Придумайте архитектуру для расположения этих данных в вашем хранилище.
%%Инб4: Хули такой формат? данные в источнике изменению не подлежат
Аноним 01/06/17 Чтв 01:06:39  999479
Снимок.PNG (3Кб, 180x198)
>>999306
Двачаю, смотреть на миллиард строк - нечто странное, когда человек хочет посмотреть то, сам не знает, что.

Когда доходит до миллиарда строк, пора задуматься об OLAP, если честно, или писать самому агрегации и смотреть уже их. А, если вдруг появляется конкретный вопрос,
>%_Юзернейм_%, почему у меня тут такое число в отчете??
Тогда смотреть детализацию на конкретных срезах, априори, не весь миллиард строк.

Но индексы, конечно, не помешают, хотя бы кластерный, чтоб структура хранения была упорядоченной.
Аноним 01/06/17 Чтв 01:09:35  999480
>>999475
Записать колонки как строки.
Аноним 01/06/17 Чтв 05:36:50  999507
>>999475
Наверно надо все колонки с городами сократить до одной колонки с ключом на запись с первым городом маршрута во вспомогательной.

Вспомогательная таблица:
ID | город | стоимость | ID следующей записи с городом или -1 если конец маршрута

Не знаю как на это будет на скл(аллах хранил от этой дрисни).

Геморная таблица из-за многих селектов, например для любого расчета по цепочки городов, зато нормализованая.
Аноним 01/06/17 Чтв 09:29:16  999533
>>999480
>>999507
А как будете хранить города? Строками?
Аноним 01/06/17 Чтв 10:04:23  999538
>>997922

Анон который просто сделать два задания тут.

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

Причём писали: извините мы нашли другого и пал выбор в его пользу.
Мониторю эти ваканссии, а они каждый день обновляются. Ну что за пидоры.
Аноним 01/06/17 Чтв 10:13:38  999540
>>999538
> Ну что за пидоры
Просто ты недостаточно хорош для них. Смирись.
Аноним 01/06/17 Чтв 12:28:14  999578
>>999538
>25-30к прошу
это в каком городе ты такие днище копейки просишь?
поражаюсь с дебилов. небось еще на оракл работать пошел, это ж заебись - писать запросы в БД стоимостью в миллионы и просить три копейки за свою работу...
Аноним 01/06/17 Чтв 12:56:43  999592
>>978107
Мейлру на него с оракла переехали.
Аноним 01/06/17 Чтв 15:28:11  999646
bullshit.jpg (66Кб, 987x497)
Только изучаю эти ваши ЭСКВАЭЛИ. Есть пик.
Нужно для каждого издательства извлечь книгу, которая была напечатана в наибольшим тиражом реди всех книг этого издательства. Издательство должно быть из Москвы.
Если тираж в издательстве для данного жанра(т.е. жанр книги с максимальным тиражом) не превышает 100000 книг, то мы такой результат отсекаем.

Нужно составить соотвествующий SQL запрос. Вообще я с потсгресом работаю, но впринципе похрен.
Спасибо.
Аноним 01/06/17 Чтв 15:48:11  999650
>>999578
Я нуб чтобы выбирать между оракулом и скл.
Хожу куда пригласят или на оракл или на скл.

Город мой Москва.

А сколько просить? Все равно не берут, прошу по минимуму, 25-30.
Аноним 01/06/17 Чтв 16:05:00  999656
>>999650
Вот все и думают, что ты неуверенный в себе омежка. Хорошенько вызубри все вопросы, которые могут задать, проси сразу 50к, рычи, двигай тазом.
Аноним 01/06/17 Чтв 17:54:06  999706
Что означает точка в выражении FROM? Например
SELECT p.name FROM adventure.product AS p
Аноним 01/06/17 Чтв 18:28:32  999721
Есть один toad Data modeller, который я законно скачал с триал-лицензией, но вот теперь у меня проблема, триал кончился. Короче, нас только в нем учили базы рисовать, а кряк или ключ не могу найти, посоветуйте чего.
Аноним 01/06/17 Чтв 18:48:22  999730
>>999706
Точка означает обращение к члену структуры.
p.name -> член name объекта p
Аноним 01/06/17 Чтв 18:50:54  999734
>>999721
Если не можешь найти кряк, то ищи триал ресет. Попробуй переустановить на виртуальной машине. Если сильно нужно, качай IDA Pro и дисассемблируй исполняемый файл.Используя реверсинжиниринг можешь написать кишен сам.
Аноним 01/06/17 Чтв 19:23:24  999744
>>999734
Да, так я быстрее руками напишу тогда.
Аноним 01/06/17 Чтв 19:42:02  999750
>>999650
>А сколько просить? Все равно не берут, прошу по минимуму, 25-30.
Вот скажи, если ты будешь просить 15 000 тебя, ты думаешь, возьмут? Проси сразу 5 000 тогда - за день работу найдешь, а за 2 500 вообще сами прибегут, согласно твоей "стратегии".
Аноним 01/06/17 Чтв 19:44:27  999751
>>999730
Перечитай внимательно вопрос.
adventure.product - вот здесь что означает точка?
После FROM должно быть имя таблицы, откуда здесь точки?
Аноним 01/06/17 Чтв 19:46:57  999753
>>999650
если бы ты был им нужен, взяли бы на 65к безо всяких вопросов (в ДС-то). но раз ты не нужен им, то не возьмут, даже если будешь сам и доплачивать, вот поверь. деньги тут ни при чем. поднимай уровень
Аноним 01/06/17 Чтв 20:08:15  999762
>>999751
adventure - это название схемы, в которой лежит таблица product.
Общее расположение таблиц такое:
"База данных"."схема"."таблица"
В ms sql дефолтная схема - dbo
В postgesql - public
В mysql схем, кажется, нет. В таком случае, adventure будет уже названием бд, это неточно, мало работал с mysql
Схемы - это как папки, в которых у тебя лежат таблички.
Аноним 01/06/17 Чтв 20:13:10  999766
>>999753
Как поднять то уровень?
Уровень тех же запросов поднимается когда они по 30 раз в день пишутся запросы не похожие на те, который ты писал в прошлый день, сложнее. На работе есть такая возможность.
А дома что? Поставил криво Sql, порешил задачки на Sql ex. И усе.

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

Такое ощущение, что вместе со мной, на собеседование следом приходит гуру Sql -ик готовый пахать за 30
Аноним 01/06/17 Чтв 21:13:15  999790
>>999766
Как только ты осилишь оконные а к а "аналитические" функции, базарю, тебя будут брать.
На всех собеседованиях почти, на которых я был (на аналитика) только это и спрашивают.
ясное дело, джойны там хуейны, но это само собой разумеется

оп-кун
Аноним 01/06/17 Чтв 21:51:42  999811
>>999790

http://www.sql.ru/blogs/oracleansqp/1926

Оно?
Может проблема в том , что я свои знания подтягиваю без участия "книг"?
Щас начал читать sql для смертных - новое издание за дня 4 осилю надеюсь. А то на собеседованиях спрашивают, мол как изучаешь. А я говорю: статьи, гайды, задачки решаю. А тут ещё добавлю, что книги читаю, блчдь!
Аноним 01/06/17 Чтв 22:19:59  999827
>>999811
Оно. Я бы еще, все-таки, поставил себе дома субд и поигрался с открытыми данными, написал простое приложение, вытягивающее данные из БД, сделал пару отчетов на ssrs, jasper-е или powerBI, все это бесплатно, кстати говоря. И на msdn, например, куча инфы о том, как и что работает. А, если вдруг не понятно что-то, всегда есть stack overflow.
Аноним 01/06/17 Чтв 22:32:38  999834
>>999827
За 3 месяца без работы, можно и с голоду подохнуть и гола то идут.
А так да, MySQL стоит. Вкатиться бы в etl нубом или аналитиком тех же продаж. И дома попутно углубиться.
Был к слову на той неделе в одной крупной конторе на нуба скл.
Собеседование прошло ничего с рук проекта.даже эйчара не было. Но к сожалению "хорошо" я думал до сегодняшнего дня, так как мне отказали
Аноним 01/06/17 Чтв 23:38:50  999857
>>999811
хуею с вас. натурально. сейчас столько возможностей:
1. железо нормальное недорого,
2. если надо сервер не свой, то есть виртуализация, можно арендовать сколько надо, хоть по 10 минут плати
3. юниксов доведенныз до ума полно (это же пиздец): макинтош; фрибсд, линупс (бесплатная операционка, причем охуенная!)
4. появились бесплатные полноценные версии крутейших оракла, микрософт-скл, дб2 даже вроде есть
5. бесплатные опенсорсные реляционки: майскл, файрберд, склайт, постгрес
6. инструменты опенсорсные любые вообще, мощные
7. данные в интернете ПОЛНО. ПРОСТО ПОЛНО
8. каналы толстые, скорость скачивания бешенные
9. диски громадные и дешевые (террабайт уже вроде меньше 100 долларов сейчас)
10. литературы ворованной хоть жопой жуй, я в свое время даже обложек блеать не видел
11. литературы вендорской куча и хорошо сверстана в вся на сайтах
12. ИНТЕРНЕТ КОПЕЙКИ СТОИТ. просто КОПЕЙКИ по сравнению с тем что было

В Ы
Е Б А Н У Т Ы Е
В Ы
Д Е Г Е Н Е Р А Т Ы
Аноним 02/06/17 Птн 00:13:29  999867
>>999857
>В Ы Д Е Г Е Н Е Р А Т Ы

Так никто и не отрицает, поэтому и просят советов мудрых, что ты, как первый день на дваче. Мне, например, не в падлу рассказать, что знаю, и поделиться собственным опытом, в отличии от уебков
>гыгы, 150 к, попал с первого собеседования, не знаю, что вы не можете.
Аноним 02/06/17 Птн 12:44:56  1000014
>>999762
Ясно, спасибо. Не знал про эти схемы.
Аноним 02/06/17 Птн 12:49:56  1000015
>>999790
>>999811
>SUM(f)
>AVG (f)
Агрегатные функции штоле? У меня в учебнике по SQL так называются.
Аноним 02/06/17 Птн 13:25:58  1000030
>>1000015
Это функции, применяемые с выражением OVER ()
И классические задачи с ними, например,
в tbl_sale (sale_id, manager_id, sale-date, product_id)

>на каждый день вывести количество проданных продуктов с 2017-01-01

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

и т.п.
Аноним 04/06/17 Вск 13:00:08  1000804
у меня друг работал в обосранном нии сраным инженером, сосал хуй, затем его заебала зарплата в 15 т.р., было это лет 5 назад, взял месяц отпуска, выучил pl/sql, сразу взяли в ренесанс страхование за 30 т.р.
Аноним 04/06/17 Вск 13:47:08  1000828
Аноны, что можно почитать про производительность и оптимизацию БД?
И какую реляционную БД посоветуете выбрать для маленького-среднего проекта?
Аноним 04/06/17 Вск 13:56:39  1000836
Есть пустая бд из таблиц, нужно получить : 1 2 3 3
Аноним 04/06/17 Вск 14:01:11  1000840
>>1000828
> для маленького-среднего проекта
SQLite или MySQL
> что можно почитать про производительность и оптимизацию БД?
Гугол. Укажи ему конкретную БД, т.к. оптимизации в разных БД так же могут быть разными.
Аноним 04/06/17 Вск 15:05:32  1000888
>>1000828
sqlite
потом перейдешь на mysql
Аноним 04/06/17 Вск 17:15:26  1000960
>>1000836
Помогайте!
Аноним 04/06/17 Вск 18:34:43  1001008
>>1000960
SELECT '1 2 3 3'
Аноним 04/06/17 Вск 18:50:28  1001020
>>1000828
Индексы и планы запросов.
Аноним 04/06/17 Вск 21:39:51  1001109
В чем разница между PostgreSQL vs PostgreSQL Pro Standard? Что лучше юзать?
Аноним 04/06/17 Вск 22:15:49  1001125
>>1001109
>PostgreSQL vs PostgreSQL Pro Standard
PostgreSQL - нормальная версия постгреса
PostgreSQL Pro Standard - репак от Васянов

Аноним 04/06/17 Вск 23:00:54  1001136
>>1001125
>PostgreSQL Pro Standard - репак от Васянов
Походу Pro это форк? Непонятно зачем Pro версию вообще пилят. Основной разработчик Pro версии Олег Бартунов является основным котрибутором в PostgreSQL.
Аноним 04/06/17 Вск 23:07:43  1001141
>>1001136
>Непонятно зачем Pro версию вообще пилят
Чтоб срубить бабла на поддержке, очевидно же. Стандартная схема с опен сорс софтом.
Аноним 04/06/17 Вск 23:12:30  1001145
>>1001141
>Чтоб срубить бабла на поддержке, очевидно же. Стандартная схема с опен сорс софтом.

Ясно. Импортозамещение значит ( ° ʖ °).

Чуть было не установил.
Аноним 05/06/17 Пнд 10:30:51  1001273
IMG201706051025[...].jpg (2628Кб, 3264x2448)
Аноны, нид хелп. Второе задание там и там, я не шарю совсем.
Аноним 05/06/17 Пнд 10:59:53  1001283
INSERT INTO CELLAR (BIN#, WINE, PRODUCER, YEAR, BOTTLES, READY )f?
VALUES (80, 'Syrah', 'Meridian', 1998, 12, 2003 );


Что в этой строке означает "f?" ? Нагуглить немного проблематично такое. Алсо пример из книги. Дейт введение в ДБ, там без привязки к конкретной реализации СУБД, вроде как чистый SQL, я делаю задания и практикуюсь на postgresql
Аноним 05/06/17 Пнд 13:43:08  1001355
>>1001273
Тобi пiзда.
Аноним 05/06/17 Пнд 15:03:13  1001386
>>1001273
Посмотри каким хорошим вещам тебя учат. Берись за голову пока не поздно.
Аноним 05/06/17 Пнд 17:04:18  1001462
>>1001283
https://dev.mysql.com/doc/refman/5.7/en/insert.html

>PARTITION
кусочек таблицы
Аноним 05/06/17 Пнд 18:26:58  1001502
>>1001462
А нет, сори, партишн указывается до перечисления полей таблицы.
>>1001283
Тогда уточни, что за субд и где именно ты видел такой синтаксис.
Аноним 05/06/17 Пнд 18:41:07  1001512
Безымянный.png (68Кб, 1366x768)
>>1001502
В рот ебал переводы.
Чекнул оригинал - нету там никакого "f?"
Всего одну главу прочел, уже второй косяк нахожу, первый правда был смысловой, который меня в ступор вогнал и заставил найти оригинал, а в оригинале все логично и просто было.
Сук. Но с другой стороны оригинал только в качестве пикретейлед 8 издание нашел, да и вообще, 1 000 страниц на родном языке как то значительно проще было бы осилить ,чем на инглише.
Аноним 05/06/17 Пнд 22:14:11  1001656
>>1001512
По какому гавну ты скл изучаешь? На перфокартах программировать собрался, что ли? Sql-ex интерактивный, на русском и удобный, например.
Аноним 05/06/17 Пнд 23:17:52  1001695
Работаю уже больше года аналитиком в банке.
Пишу всякие хранимки на t-sql и pl/sql.
Смотрю сейчас вакансии Разработчик/администратор ms sql. Вот думаю надо как-то выучиться, но не знаю в какую сторону копать, где нужный материал искать. Есть тут разрабы бд, которые могут подсказать?
Аноним 06/06/17 Втр 08:36:05  1001823
>>1001695
Ты ебанулся? Из белых людей вкатываться в дно из админов-красноглазиков-в старых свитерах?
Аноним 06/06/17 Втр 10:02:30  1001836
>>1001512
Любой переводной контент это почти всегда шлак.
Аноним 06/06/17 Втр 10:02:55  1001837
>>1001823
Ну я больше к разрабам тянусь. У них вроде зп выше, хотя и у админов бд тоже, судя по вакансиям.
Аноним 06/06/17 Втр 11:19:36  1001866
>>1001823
В 40 любой программистишка это делает. Потому что из альтернатив лишь бомжевание.
Аноним 06/06/17 Втр 15:57:41  1002022
Аноны, помогите, есть таблица PETUH
В ней есть поля DATA_ROZHDENIYA, и поле SROK_ZHIZNI, дата рождения записана в форме даты, а срок жизни просто цифра, как сделать так, чтобы к дате рождения срок жизни добавился в виде годов?
Мне надо вывести всё что data_rozhdeniya + srok_zhizhni < Сегодняшнее число!
Помохите!
Аноним 06/06/17 Втр 16:35:49  1002044
>>1002022
DateAdd(Day, Lifetime, Birthdate)
Аноним 06/06/17 Втр 18:48:14  1002133
1.9BD.png (52Кб, 832x623)
Может кто подсказать все ли норм сделал и что можно поправить?
Сверху задача, снизу то что я накорябал.
Аноним 07/06/17 Срд 00:19:26  1002416
>>1002133
Почему бы не объединить
солиста,
дирижера,
композитора в таблицу people с атрибутом type,
а оркестр и оркестровую группу во вторую - play_groups, тоже с атрибутом type?

Меньше сущностей, как-то по-проще, всё-таки.
Да и связей меньше будет.
Аноним 07/06/17 Срд 00:45:44  1002425
>>1002133
Что ты накорябал не отражает типов отношений сущностей. Что за связи? 1 к 1? 1 к многим? Многие к многим? Я бы зачета не поставил за такую халтуру.
Аноним 07/06/17 Срд 00:48:25  1002426
>>1001695
Бля. Как раз рвусь в банк.
Как туда попал? Какие навыки были? Какой город и зп если не секрет.


Ходил на собеседование в три банка (я только запросы лёгкие решаю 1-2 лвл на скл екс если со и об этом эйчары были предупреждены) там такие задания дали, что я смотрю - и не понимаю нихуя.
Хотя в двух местах все таки дома сделал тестовое, го везде отказали.
К слову зп - 90 там где нихуя не сделал.
50 и 40 в других местах.

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


Вот как вкатиться то?
Аноним 07/06/17 Срд 01:01:31  1002433
>>1002426
Глянул на sql-ex, говно какое-то там а не упражнения.
Аноним 07/06/17 Срд 01:09:29  1002438
есть в sqlite множество строк которые начинаются одинаково как сделать запрос чтобы вернуло только строки с различным началом?
Аноним 07/06/17 Срд 01:32:02  1002447
>>1002438
Что ты понимаешь под различным началом? Первую букву?
Аноним 07/06/17 Срд 01:48:16  1002451
>>1002447

acc ji
acc je
bcc ji

а вернет
acc
bcc
Аноним 07/06/17 Срд 01:51:32  1002453
>>1002451
Ты на вопрос можешь ответить?
>Что ты понимаешь под различным началом?
Примера недостаточно.
Аноним 07/06/17 Срд 05:50:58  1002468
>>1002425
Ой все. Я блять только 1 главу прочел. И занимаюсь самостоятельно. Иначе очевидно у препода спросил бы, а не на дваче.
>>1002416
Короче, хер с заданием продолжу дальше изучать, ибо о том что такое атрибут таблицы еще не читал. Просто стараюсь максимально вникать в то что читаю и выполнять все задания, но выпоняю их естественно на своем уровне знаний, и конкретно - 1 глава Введения в ДБ Дейта.
Аноним 07/06/17 Срд 09:19:46  1002488
>>1002426
Что за задания были?

Мне либо повезло, либо ещё что, но сложностей вкатиться не было. Задания были несложные, диплом не спрашивали.
Банк иностранный. При этом другой банк даже отклик не просмотрел, а сразу отказал.
Аноним 07/06/17 Срд 11:35:53  1002535
>>1002468
>1 глава Введения в ДБ Дейта.
Тогда норм всё описал, не переживай.
Аноним 07/06/17 Срд 23:13:39  1002880
>>1002488
Какие навыки были?
Аноним 08/06/17 Чтв 14:30:35  1003095
Есть один mssql сервер и одна хранимка. В хранимке запускаются еще 3 хранимки. Каждая из них запускает приложение через xp_cmdshell. Все программы делают что надо и завершаются. Но в процессеработы выводят в консоль всякие важные замечания по своей работе. Нужно как то совладать с этим выводом. Каждая программа выводит все данные как результат отдельного запроса. Нужно как то сделать что бы они все писали в одну таблицу и потом уже ее выводила главная хранимка перед завершением. Как так сделать?
Аноним 08/06/17 Чтв 14:48:01  1003112
>>1003095
Ах да, самый очевидный вариант с созданием таблицы в бд меня не утсраивает. Хранимка может одновременно запускаться разными людьми. Так что нужно что бы все данные обрабатывались исключительно внутри нее.
Аноним 08/06/17 Чтв 14:55:02  1003117
>>1003095
Временная таблица же.
Аноним 08/06/17 Чтв 16:43:11  1003165
Котаны, есть один интернет-магазин на связке PHP+MYSQL, в котором есть одна таблица с товарами (около 40к позиций) и таблица с категориями. Нужно туда добавить характеристики товаров с возможностью фильтрации по ним. Проблема в том что магазин большой, категорий и товаров дохуя, следовательно и характеристик тоже.
Первое что мне пришло в голову - добавить две таблицы, одну со списком всех характеристик, вторую со связью характеристик и товаров:

PROPERTIES_LIST: ID, NAME, FILTER_NAME (опционально, если в фильтре нужно какое-то кастомное название характеристики), SORT (опционально, для сортировки вывода характеристик если понадобится определенный порядок), TYPE[bool,range,value] (тип характеристики для фильтра. Да\нет, подбор по диапазону, подбор по конкретному значению)

PROPERTIES_VALUES: ID, ITEM_ID, PROPERTY_ID, VALUE

Самое простое - просмотр одного товара. Ищем по PROPERTIES_VALUES записи с нужным ITEM_ID и выводим названия и значения характеристик согласно SORT в PROPERTIES_LIST

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

Если первое я еще примерно понимаю как сделать, то со вторым вообще хз. Подскажите куда смотреть, и вообще может я изначально хуевое решение придумал и нужно совсем по другому все сделать?
Аноним 08/06/17 Чтв 22:13:46  1003337
>>1003117
Пробывал временную таблицу, но как то нихера не выходит. Вложенные хранимки почему то ее не видят. Если кто напишет рабочий пример буду признателен.
Аноним 08/06/17 Чтв 22:36:08  1003347
>>1003337
Глобальная временная таблица, сздается через ##
Create procedure sp_test_start
As
Begin
If object_id('tempdb..##tbl_temp_logs') is not null drop table ##tbl_temp_logs
Create table ##tbl_temp_logs (id int)
Exec sp_test_logs_1
Exec sp_test_logs_2
Select id from ##tbl_temp_logs
End

Create procedure sp_test_logs_1
As
Begin
If object_id('tempdb..##tbl_temp_logs') is not null
Insert into ##tbl_temp_logs (id) values (1);
End

Create procedure sp_test_logs_2
As
Begin
If object_id('tempdb..##tbl_temp_logs') is not null
Insert into ##tbl_temp_logs (id) values (2);
End
Аноним 08/06/17 Чтв 22:38:25  1003351
>>1003347
В конце sp_test_start после селекта тока дропнуть не забудь, на всякий пожарный.
Аноним 08/06/17 Чтв 23:08:41  1003361
>>1003347
CREATE PROC dbo.p_first
AS
BEGIN
INSERT INTO #temp
VALUES (1)
END
GO

CREATE PROC dbo.p_second
AS
BEGIN
INSERT INTO #temp
VALUES (2)
END
GO

CREATE PROC dbo.p_something
AS
BEGIN
CREATE TABLE #temp
(
number INT
)
EXEC dbo.p_second
EXEC dbo.p_first

SELECT * FROM #temp
END
GO

EXEC dbo.p_something
Аноним 09/06/17 Птн 01:04:41  1003383
>>1003361
Что ты хотел этим сказать?
Аноним 09/06/17 Птн 07:25:14  1003429
>>1003383
Оно и с обычными временными таблицами работает.
Аноним 09/06/17 Птн 09:17:04  1003435
>>973923 (OP)
В БД есть таблица с регистрацией клиентов вида CustomerId, RegistrationDateTime и таблица с покупками клиентов вида CustomerId, PurchaseDatetime, ProductName.
Напишите два SQL-запроса:
- Запрос выводящий клиентов, которые покупали молоко, но никогда не покупали сметану.
- Запрос выводящий количество клиентов, которые совершили первую покупку через 0-5 дней после регистрации
Аноним 09/06/17 Птн 09:49:39  1003445
>>1003435
Даже пожалуйста не сказал, уебок.

Соси хуй.
Аноним 09/06/17 Птн 11:37:14  1003489
>>1003435
SELECT клиенты WHERE покупали молоко AND NOT покупали сметану
SELECT количество клиентов WHERE первая покупка - дата регистрации <= 5
Аноним 09/06/17 Птн 11:50:47  1003494
>>1003435
INSERT INTO sex(tool, place, whoreId)
SELECT 'anus' AS place, me.cock AS tool, whores.id AS whoreId
FROM me, whores JOIN parents
ON parents.child = op.id AND parents.motherId = whores.id
Аноним 09/06/17 Птн 15:18:45  1003567
>>1003361
кстати, да, все процедуры в одной сессии же запускаются, так что, по всей видимости, кое-кто.. >>1003095
ни хуя, на самом деле, не пробовал.
Аноним 10/06/17 Суб 00:01:58  1003828

>>1003494

Grant alter on sex to erohin
Permission denied on table sex for user omejkin
Аноним 11/06/17 Вск 13:49:19  1004382
>>973923 (OP)
Посоны, я в этих ваших базах совсем нулевой. Что почитать по MS SQL, так, чтоб разжевано?
Аноним 12/06/17 Пнд 01:03:50  1004737
>>973923 (OP)
Есть два отношения:
-частные клиенты{код_клиента}
-компании{код_компании}
Также существуют еще два отношения:
-товар
-продажи {код продажи, количество, код скидки} - связанна "многие к одному" с товаром
Еще существует много других отношений (скидка, журнал продаж и т. д.), но они тут не важны.
Если мы соединим "продажи" с "частные клиенты" и "компании" одновременно, то смигрируют два ключа - "код_клиента" и "код-компании" и получится аномалия вставки. Я продумал только два варианта решения проблемы:
1) Ввести фиктивные кортежи в отношения "частные клиенты" и "компании" и присваивать этот фиктивный домен атрибуту "код_клиента" когда мы описываем продажу для компании и, соответсвенно, наоборот.(в данном случае отношение не находится во второй нормальной форме)
2) Создать два отношения "Продажи_Клиентам" и "Продажи_компаниям". Но тогда атрибуты будут одни и одни и те же, только будут зависить от разных детерминантов.
Какие еще существуют решения данной проблемы?
Аноним 12/06/17 Пнд 17:58:17  1004969
>>1004737
Две таблицы ДВА ОТНОШЕНИЯ ЛОЛ - нормальный вариант, навешиваешь над ним вьюху и не ебешь себе мозга.

Еще можно просто запихнуть все в одну таблицу, добавив атрибут sale_src_id какой-нибудь, по которому однозначно можно определить, кому продали товар:
1: частному клиенту
2: компании

Итого у тебя получатся
>cleint_id|sale_src_id
в таблице с продажами, на которые ты смело можешь ебашить индекс.
Аноним 19/06/17 Пнд 11:43:51  1008258
>>973923 (OP)
Посоны, есть одна таблица, в которой ID, имя и ID родителя (nullable). Как по имени вывести всех родителей и родителей родителей данного имени? куда копать то, джойны, рекурсивный запрос?
Аноним 19/06/17 Пнд 12:42:50  1008273
>>1008258
два джойна
Аноним 19/06/17 Пнд 13:03:52  1008286
>>1008273
Не, количество итераций не ограничено
Аноним 19/06/17 Пнд 13:20:48  1008290
>>1008258
https://technet.microsoft.com/en-us/library/ms186243(v=sql.105).aspx
Аноним 19/06/17 Пнд 15:46:41  1008344
>>1008290
Уже хуй знает, но что я делаю не так? По идее для каждого должна выводиться вся иерархия, то есть для Иванова она будет выглядеть
Иванов Петр Сергеевич Отдел логистики Отдел
Иванов Петр Сергеевич Служба логистики Служба
Иванов Петр Сергеевич Административная дирекция Департамент

Но проходит только один раз анкор и один раз рекурсивная часть
Аноним 19/06/17 Пнд 15:47:16  1008345
Снимок.PNG (7Кб, 715x139)
Снимок1.PNG (7Кб, 620x147)
Снимок2.PNG (28Кб, 676x681)
>>1008344
Картинки забыл
Аноним 19/06/17 Пнд 15:56:29  1008354
Как в этих ваших mssql сделать enum? Типа есть поле в таблице "статус", которое может принимать N значений. Поскольку в T-SQL не завезли enum, я вижу три варианта, но не знаю какой из них оптимален:
1. добавить constraint check (status = 'firstValue' or status = 'secondValue' or ... or status = 'lastValue')\
2. добавить статическую справочную таблицу, для которой в целевой таблице будет внешний ключ, и потом уже при запросе в скомпилированном view будет подставляться текст значения вместо его FK
3. в БД хранить поле в виде int, а в клиентском приложении биективно отображать в задуманное значение.

ИМХО 3 самый легкий и быстрый, а также позволяет хранить флаговое перечисление например, если статус имеет значение одновременно FirstValue, SecondValue и NthValue но заебистый в плане изменения значений.
Второй вариант вроде ничего, но постоянные обращения к справочным таблицам это чё то фу. Первый вариант вообще не рассматриваю, но знаю о его существовании.
Таки шо порекомендуете?
Аноним 19/06/17 Пнд 16:33:15  1008370
>>1008344
>>1008345
Все, разобрался вроде
Аноним 19/06/17 Пнд 17:00:28  1008387
>>1008354
Храни интом или стрингой. С интом можно наебаться, если enum изменится. Со строкой такого не будет, но места она займет больше (возможно, не такая уж и болая проблема).
Аноним 19/06/17 Пнд 23:09:22  1008543
Я наконец то сделал это! После очередного собеседования с руководителем, меня все таки взяли на джуна etl процессов, дс, крупный банк.
60к зп после вычета налога. Спросил меня виды джойнов, ответил и говорит: сегодня офер вышлем и выслали.

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

Теория читал около месяца и приняли)
Аноним 19/06/17 Пнд 23:53:30  1008556
>>1008543
Что за индексы ключей оптимизации?
Аноним 19/06/17 Пнд 23:55:16  1008558
>>1008556
По этому поводу читни Тома Кайта, у него есть.
Аноним 20/06/17 Втр 03:10:00  1008596
Как вкатиться то к вам?
Аноним 20/06/17 Втр 06:31:58  1008607
>>1008596
Не надо.
Аноним 20/06/17 Втр 10:35:10  1008633
>>1008607
Но я настаиваю.
Аноним 20/06/17 Втр 11:54:44  1008653
maxresdefault.jpg (505Кб, 3000x1686)
>>1008633
Настаивай.
Аноним 20/06/17 Втр 12:08:27  1008659
>>1008354

Третий способ классный, но только если у тебя есть хорошая актуальная документация.
Вот я сейчас, например, изучал кучу таблиц, в которых используется так называемый енам, реализованный третьим способом.
Спрашиваю у разрабов, что это такое, все плечами пожимают, тип кто-то делал, но уже уволился, нужно импирическим путем познавать через приложение.
Первый способ тоже часто вижу в использовании, как в оп-топике: пол кладется в nvarchar(2000), а потом вопросики, а хули так медленно работает?

В общем, тут, правда, ситуативно нужно применять. Хотя я, как любительно всего нормализованного, выступаю за второй, все равно, вынужден согласиться, что первый и, тем более, третий, будут гораздо быстрее работать.
Аноним 20/06/17 Втр 13:27:04  1008700
>>1008659
> импирическим
Ты хоть строки-то экранировал, ребенок?
Аноним 20/06/17 Втр 13:38:06  1008710
>>1008700
от слова ИМПИРАТАР же
Аноним 21/06/17 Срд 12:53:41  1009151
Есть ли какие-нибудь подводные камни при хранении булевого значения в MySQL в поле bit(1)?
Аноним 21/06/17 Срд 13:01:28  1009155
Чем отличаются разные издания Кайта и какое надо читать?
Аноним 21/06/17 Срд 15:05:05  1009218
И вот нахуя я вкатился в базы данных.
Я же нихуя не умею.
Пиздец кризис.
Есть работа за сто тысяч рублей. Но я просто клепаю отчетики и ничего больше не делаю. Не etl, не архитектура, просто ссаные отчетики. Мне неинтересно.
Аноним 21/06/17 Срд 19:45:23  1009426
>>1009218
Тоже самое. Только мне ещё и не платят вообще.
Аноним 21/06/17 Срд 22:39:59  1009577
>>1008659
Подумал короче, я всё равно с C# работаю, а там через EF можно code-first подход для генерации БД использовать, и там enum просто интом хранится будет без дополнительных таблиц. Короче, 3 вариант.
Аноним 22/06/17 Чтв 11:19:33  1009807
>>1009218
Просто отчетики - это ж аналитик тип да, по отчетности? Ну ты развиваешься не только в бд, но и в бизнесе же, потому что узнаешь, что все эти данные значат.
Можно потихоньку пытаться вставать на путь управления, если не нравятся сами бд.
Аноним 22/06/17 Чтв 20:00:37  1010088
Выучил теорию бд наизусть и запросы сложные научился писать.
Примерно около полугода потратил.
Устроился без опыта в дс на 80к, аналитиком.
Аноним 22/06/17 Чтв 20:02:26  1010090
>>1010088
Причём путь к таким деньгам я осознал только в 26, щас 27.
До этого менеджером работал по продажам, знал бы я раньше и был бы умнее, в 22 сразу же этим занялся.
На мой взгляд это интересно и перспективно. (Если развиваться дальше)

Аноним 22/06/17 Чтв 20:19:05  1010108
>>1010088
Сучечка, если бы я через полгода изучения кодинга понаехал в ДС уже бы сеньором был. Всех волнует только коммерческий опыт, а не знания.
Аноним 22/06/17 Чтв 20:29:19  1010118
>>1010108

Это Москва, это банки.
Опыт от меня хотели в гавно конторах, и предлагали по 40-60к, вставал уходил
Было две параллели. Ходил в гавно конторы и банки хуянки.
В первом варианте хотят кучу знаний и не готовы платить. В банках уровень теорий хотят и готовы платить и растить.
Вот и прокачало в банк.
Причём, человек работающий до меня, свалил с 120 на 150+ в банк на Павелецкой. (По -моему в открытие)
С нуля пришёл и через полтора года на 150, неплохо.
Понятно почему руководитель теперь на него злой, кучу сил в него вложил.
Аноним 22/06/17 Чтв 20:33:54  1010120
>>1010118
Круто, вышку требовали? Какие бд выучил?
Аноним 22/06/17 Чтв 20:38:50  1010122
>>1010120
MySQL только. И до сех пор не понимаю разницы между my и оракл, так как не имел дело со вторым. Запросы везде одинаковые))

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

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


Аноним 22/06/17 Чтв 20:39:19  1010124
Про написание триггеров и хранимок не спрашивали.
Аноним 22/06/17 Чтв 20:43:13  1010127
На одном собеседование попросили написать триггер на листочке, 40к они предлагали.
На что ответил я руководителю в лицо: триггеры для вас будет писать человек, которому вы и платить будите как профессионалу.
Он прихуел и начал кукарекать что 40к высокая зп
Аноним 22/06/17 Чтв 20:52:02  1010131
>>1010122
>общительный
>лощеный
>экономист
>знаний, кроме MySQL, нет
А ну тогда понятно, откуда такая зп.
Аноним 22/06/17 Чтв 20:54:24  1010135
>>1010127
Правильно ответил.
Аноним 22/06/17 Чтв 21:21:46  1010164
>>1010127
Ну в общем-то позиция правильная. Тригеры обычно нужно писать раз в полгода-год. Если у кого-то вся логика на тригерах висит, то лучше там не работать.
Аноним 22/06/17 Чтв 22:46:50  1010218
>>1010131
Я не понял твоего поста
Что тебе понятно то?
По банкам походи и поймёшь какие цифры они дают тебе.
Загляни в тот же сбертех, где каждый второй Джун имеет под сотню
Аноним 23/06/17 Птн 10:32:45  1010360
>>973923 (OP)
А Access кто-нить знает?
Аноним 23/06/17 Птн 10:35:58  1010363
>>1010218
Я джун и имею под сотню, но я программист, а не писатель запросов в бд, в отличие от тебя.
Аноним 23/06/17 Птн 18:53:15  1010542
>>1009155
Никакое. Доки читай.
Аноним 23/06/17 Птн 20:52:41  1010601
>>973923 (OP)
БЛЯТЬ АНТОН у меня горит
вот что ей нужно ??
что не так ?
как локальный сервер создать?
И да, нужно мне это для приконектенья этой бд к асп нету(пик2)

Аноним 24/06/17 Суб 01:23:38  1010723
>>1010601
Ты порт какой написал в коннекшне?
Аноним 24/06/17 Суб 01:24:48  1010724
>>1010360
Да.
Что спросить то хотел?
Аноним 24/06/17 Суб 15:33:48  1010941
>>1010723
стандартный 3306
Аноним 24/06/17 Суб 15:36:12  1010946
>>1010601
я немного обосрался со средой эта утилита конектит только ms sql
НО тут тоже лажа, я хз как локальный скул сервер запустить в списке их нет(пик1)
Аноним 24/06/17 Суб 17:25:38  1011035
>>1010601
>>1010946
ВСЕ антон ВСЕ заработало
сколько ебаных нервов было потрачено...
крч я просто скачал другую верчию sql сервера.
Аноним 24/06/17 Суб 19:00:57  1011099
>>1011035
Кек.
Аноним 24/06/17 Суб 20:09:11  1011154
Слышал релизнулся 2017 мс скуэль сервер. Чего нового завезли? Стоит осваивать?
Аноним 27/06/17 Втр 01:58:35  1012209
Мускулач, я решил для саморазвития написать борду. Теория баз данных рекомеедует создать сущность "пост", сущность "картинка", сущность "тред" и сущность "анон" для поддержки свободного™ общения. Соответственно, сделать связь один-ко-многим между тредом и постами. Проблема, как всегда, в запросах: во первых, нужно реализовать систему бампов со вложенными запросами - нужно получить у каждого треда дату последнего отправленного сообщения, не учитывая сообщения сверх бамплимита; во вторых, необходимо получить id только что отправленного поста, чтобы сделать запись в таблицу картинок и в таблицу связи пост-тред. Как эти запросы написать? По диагонали читал сурсы кусабы и других бордовых движков на гитхабе, и не нашел этих моментов, там просто и без задней мысли вставляется.
Аноним 27/06/17 Втр 02:23:47  1012217
>>1012209
>необходимо получить id только что отправленного поста, чтобы сделать запись в таблицу картинок и в таблицу связи пост-тред
Транзакции нужны, дело говорю.
Аноним 27/06/17 Втр 08:44:30  1012258
>>1012217
Насколько я шарю, транзакции есть в оракл.
Аноним 27/06/17 Втр 09:01:38  1012260
Краткое содержание предыдущих 2 постов: кокок-кукарек!
Аноним 27/06/17 Втр 10:02:56  1012281
>>1012260
У тебя проблемы с транзакциями?
Аноним 27/06/17 Втр 11:04:34  1012307
Как прописать каскадное наследование колонки в Access?
Аноним 27/06/17 Втр 12:17:55  1012337
>>1012217
Кстати, сабж только частично решает проблему - без подтверждения транзакции last_inserted_id выведет предпоследний id, а это не очень хорошо, ведь свободное™ общение предполагает удаление тредов и постов
Аноним 27/06/17 Втр 15:55:52  1012452
Здравствуйте, можно ли упростить этот запрос? https://pastebin.com/h7xtcaJ2
Есть связь M:M между книгами и жанрами, хочу вывести список жанров, количество книг в нём, и к каждому жанру добавить последнюю добавленную книгу из этого жанра. (СУБД - MySQL или PostgreSQL). Пытался залить код на sqlfiddle вместе с дампом, но сайт отдаёт Gateway Time-out.
Аноним 27/06/17 Втр 20:29:36  1012594
>>1012452
Ну нашлёпал что-то. Не знаю, будет ли на мускуле работать (или вообще).

https://pastebin.com/TxqHv8z5
Аноним 28/06/17 Срд 14:33:06  1012917
Что читать по теории бд? Опыт потихонечку капает, скилл поднимается тоже, зарплата растет. Но теперь я хочу стать большим специалистом по базам данных, чтобы все досконально понимать. Томас Кайт или что-нибудь ещё? Работаю с бд оракл.
Аноним 28/06/17 Срд 20:44:15  1013099
>>1012594
Да, MySQL не поддерживает часть операторов из твоего запроса, но всё равно спасибо за код. Я понял, что простым такой запрос в любом случае быть не может. Тут ведь уместно применить денормализацию - создать отдельную таблицу для самых новых книг каждого жанра? Тогда запрос превратится в простой джойн.
Аноним 28/06/17 Срд 22:02:50  1013129
>>1013099
Ну можешь сделать вьюху. Даже индексированную, если прям нужно (опять же, не знаю, чё там на мускуле в этом плане).
Аноним 29/06/17 Чтв 17:44:06  1013611
Антоши, вот накачал я MS Management Studio, SQL Server 2012. Поставил себе на комп базу данных. Теперь хочу создать свою бд, с таблицами и хранимками. Как мне можно быстро заполнить свои таблицы хоть чем нибудь? Есть ведь в интернете уже готовые заполненные таблицы с данными, чтоб я мог скачать и внедрить их в свою бд. Ну, там переводчики всякие, справочники.?
Аноним 29/06/17 Чтв 19:52:16  1013671
>>1013611
Да. База стековерфлоу, например, в открытом доступе.
Аноним 29/06/17 Чтв 19:54:23  1013676
>>1013611
А вообще, для начала самое то будут майкрософтовские учебные базы: адвенчеворкс, северный ветер. Есть и олтп и дв версии под разные сиквелы.
https://msftdbprodsamples.codeplex.com/
Аноним 30/06/17 Птн 14:14:55  1014083
>>1012917
Каков стаж, где работаешь, какая зп?
мимо-оракл-дб
Аноним 30/06/17 Птн 14:23:58  1014089
Привет, анон, помоги придумать оптимальное решение:
Есть таблицы А и В.
Нужно выбрать все такие A.pk_id, для которых
существует хотя бы один ряд A.pk_id = B.fk_id,
но при этом для всех таких рядов B должно выполняться условие B.x is not null
Пока на ум приходит только использование exists и not exists
select
A.pk_id
from
A
where exists(select 1 from B where B.fk_id = A.pk_id)
and not exists(select 1 from B where B.fk_id = A.pk_id and B.x is null)

Не нравится, что два раза приходится сканить B, хоть колонки и индексированы. Как можно сделать проще?
Аноним 30/06/17 Птн 14:56:19  1014106
>>1014089
Билли, про JOIN слышал что-нибудь?
Аноним 30/06/17 Птн 16:33:04  1014161
>>1014106
Не совсем уловил твою мысль.
Нужно убедиться, что в таблице B для всех B.fk_id = A.pk_id выполняется B.x is not null.
Допустим получили следующее:
select A.pk_id, B.x
from A left join B on A.pk_id = B.pk_id
Теперь надо как-то схлопнуть результат, чтобы
остались только те уникальные A.pk_id, у которых B.x
не null?

Аноним 30/06/17 Птн 16:43:41  1014167
>>1010164
Поясни, плс, а если все висит на instead of триггерах, но они просто промежуточное звено между клиентом и логикой в хранимках?
Аноним 30/06/17 Птн 19:14:22  1014260
>>1014167
Триггеры полезны, но нужно использовать очень аккуратно.
Они скрывают часть логики. Никогда не знаешь, когда какой триггер "триггернётся". Попаболь может быть дикой от таких моментов.
Ну и они включаются на каждый чих, а не тогда, когда тебе надо и не тогда, когда тебе кажется они должны включаться/не включаться. Замедляют базу.
>>1014161
Да, неправильно понял твоё задание. Можно через join решить, ну ты сам смотри.
Насчёт того, что там у тебя 2 скана, я подозреваю, что планировщик всё равно чётко сделает. Посмотри план выполнения.

select A.pk_id
from A
inner join B on A.pk_id = B.fk_id
group by A.pk_id
having count(*) - count(B.x) = 0


Аноним 30/06/17 Птн 20:15:28  1014309
Сап, други.
Посоветуйте годный мануал по Teradata для нубов.
В основном нужны ETL, отчеты, BI.
Админка вроде пока не требуется.
Аноним 30/06/17 Птн 20:16:35  1014311
Вчера на собеседовании спросили по sql, и я обосрался

Есть таблица

-------------------------
date | status | item_id
-------------------------
1.05 | 'ok' | 123
1.05 | 'cancel' | 124
2.05 | 'ok' | 125
3.05 | 'ok' | 126
3.05 | 'ok' | 127
3.05 | 'cancel' | 128

Нужно написать запрос, который вернет результат
Статус | Кол-во записей c этим статусом 1.05 | Кол-во записей с этим статусом 2.05 | ~ 3.05

То есть результат должен быть
'ok' | 1 | 1 | 2
'cancel' | 1 | 0 | 1

Пробовал группировать по статусу where date = N, потом джойнить полученные таблицы, получилась хуитта.
А главное, если кол-во дат неизвестно заранее, как сделать стоблик для каждой?
(И шапку еще юнионом присобачить штоле)

p.s. Нет ли сборника таких задач, потренироваться?
Аноним 30/06/17 Птн 20:26:40  1014316
>>1014311
Это пиздэц, тебе не повезло. Гугли PIVOT.
Аноним 30/06/17 Птн 21:12:04  1014330
>>975255
продажа_кончи
Аноним 01/07/17 Суб 18:16:45  1014745
>>973923 (OP)
Сиквел или ЭС КъЮ Эль?
Аноним 01/07/17 Суб 21:16:34  1014847
>>1014083
Привет, не самый частый гость здесь!
Стаж почти два года, работаю в топ-10 банке (без подробностей, деанон), зп чуть больше сотки чистыми.
Ты dba? А расскажи пожалуйста про свою работу побольше, мне это очень интересно. Сам я чистый dbd, к администрированию никакого отношения не имею, но подозреваю, что рано или поздно моя любовь к базам данных и желание углубиться в тему приведут к тому, что я стану администратором бд или архитектором.
Аноним 01/07/17 Суб 23:31:30  1014889
>>973923 (OP)
>Поясняем, как можно без задней мысли хранить бизнес-логику в бд, а не в приложении,
Вот это пиздец. Поясните, как это говно исполняется?
Аноним 01/07/17 Суб 23:48:51  1014896
>>1014889
Хранимки же. Либа на настольной приложухе запускает хранимую процедуру/селект/функцию. Результат выполнения хранимки - это изменения в базе + набор селектов. Уже селекты приложение обрабатывает, отображает, если надо.

Мне бы лучше кто рассказал, как белые люди логику реализуют. Ибо живу в вышеописанном мирке, света не вижу.
Аноним 02/07/17 Вск 00:01:02  1014900
>>1014889
Лучше не как, но зачем.
Аноним 02/07/17 Вск 00:14:24  1014907
>>1014896
>>1014900
Я просто видел это у огромной системы, это, блядь, нечитаемо.
Аноним 02/07/17 Вск 10:59:22  1014993
>>1014907
Не могу сказать, потому что я не видел альтернатив. Использовать ORM какую-нибудь?
Ну со стороны приложения логика на базе не выглядит сложно, самый ад начинается в самих хранимках. SQL особо не позволяет развернуться. Но со временем привыкаешь к этим бесконечным селектам, джоинам, необъяснимым условным ветвлениям и прочему дерьму.
Аноним 02/07/17 Вск 14:08:57  1015043
Аноны, кроме реляционных, используете штуки типа MongoDB и им подобное? В каких случаях?
Аноним 02/07/17 Вск 16:23:34  1015105
>>974196
хитрая группировка Аноним 02/07/17 Вск 16:54:29  1015117
needresult.png (1Кб, 222x59)
пацаны, всю жизнь мучает меня такая задача.
буду благодарен тому, кто подскажет, прям по гроб жизни.
как в группировке вывести значение столбца не участвующего ни в агрегатной функции, не в группировке, но соответствующее записи, в которой значение агрегатной функции равно значению её столбца
http://rextester.com/NOVC13144
Аноним 02/07/17 Вск 17:04:11  1015120
>>1015117
Обычно все время делаю это так
http://rextester.com/UJQR88038
Но, по моему, это неправильно, страдаю из за своего быдланства
Аноним 02/07/17 Вск 17:26:53  1015126
>>1015117
Впили что-нибудь вроде MIN, MAX, FIRST_VALUE и т.д.
Тебе ведь всё равно, какое значение будет.
Аноним 02/07/17 Вск 17:39:37  1015130
>>1015126
не все равно, а соответствующее записи
Аноним 02/07/17 Вск 17:57:06  1015140
>>980263
>>980266
http://rextester.com/DQHUZ6497
как то так
Аноним 02/07/17 Вск 18:20:33  1015157
>>1015130
А, ну тогда можно использовать rank over, где rn=1; first_value over с сортировкой по max_value; having max over = max_value.
Аноним 02/07/17 Вск 18:24:43  1015164
Аноны, помогите написать триггер, который будет подсчитывать сумму полей А и В в таблице 1 и вносить эти данные в таблицу 2.
Аноним 02/07/17 Вск 18:41:38  1015175
Поясните за ado.net + linq убергоднота же вроде.
Аноним 02/07/17 Вск 21:29:29  1015279
>>1015164
Зачем, вообще, хранить суммы?
Create trigger tr_lul on tbl_one after insert, update
As
Merge tbl_2 as t
Using (select lul_id, a+b as c) as s
On s.lul_id=t.lul_id
When matched then update
Set t.c=s.c
When not matched then
insert (c)
Values (s.c)
Аноним 02/07/17 Вск 21:30:37  1015282
>>1015279
>set c = s.c
Samofix
Аноним 02/07/17 Вск 23:29:29  1015321
>>1015279
Create trigger tr_lul on tbl_one after insert, update
As
Merge tbl_2 as t
Using (select lul_id, a+b as c from inserted) as s
On lul_id=s.lul_id
When matched then update
Set t.c=s.c
When not matched then
insert (c)
Values (s.c)

Вот, в общем, правильно
Аноним 03/07/17 Пнд 09:43:28  1015390
>>973923 (OP)
nvl(sum(case when ... then emp_fact_value
else d.d.emp_fact_value end) over (partition by...)

Это как вообще? Почему выделенное компилится и работает? Две точки? Первый раз вижу.
PL/SQL
Аноним 03/07/17 Пнд 10:02:06  1015398
Есть три типа сотрудников: employee, manager и sales. Информация о них хранится в базе. Сотрудник employee не может иметь подчиненных, а manager и sales могут. Для каждого типа сотрудников зарплата расчитывается по-разному и зависит от числа подчиненных. Нужно разработать схему БД для того, чтобы на языке высокого уровня можно было реализовать рассчет зарплаты.

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

Три разных таблицы для employee, manager и sales? Но тогда как определить, кто у кого в подчинении?

Одна общая таблица employee, в которой есть референсы к таблице должностей и поле superior, которое может быть NULL и в котором указывается id начальника?

Как-то еще?
Аноним 03/07/17 Пнд 10:17:23  1015411
>>1015398
Опять выходишь на связь, мудило?
>к таблице должностей
Зачем она тебе? Что там хранится?
Не вижу, пока, никакой проблемы в одной таблице employee с полем type, определяющим тип сотрудника. Чтоб нельзя было добавить обычному сотруднику подчиненных, сделаешь какой-нибудь constraint или триггер.
Тут, конечно, надо смотреть на ТЗ и перспективы, а то окажется, что всё совсем не так.
Если это bazi_dannih_laba4, то не еби мозги и делай как угодно.
Аноним 03/07/17 Пнд 10:30:32  1015416
>>1015411
>Зачем она тебе? Что там хранится?
Там хранится id должности и ее название. Это пригодится, например, для отображения должности в гуе.
Аноним 03/07/17 Пнд 10:47:06  1015435
>>1015416
Решается if-else или enum-ом в коде, а сущностью в БД. Опять же зависит от того, что за требования к системе. Если в системе сами пользователи могут на лету заводить новые типы сотрудников, задавать им какие-то свойства и т.п., без дополнительных таблиц никуда. Если у тебя всегда 3 типа сотрудников, то разруливай всё прямо в коде и не усложняй систему.
Аноним 03/07/17 Пнд 11:06:55  1015450
>>1015157
http://rextester.com/UJQR88038
Добра тебе, достойный человек, подсказал как делать.
Ну я и накалябал, кому интересно, результат запилил.
Аноним 03/07/17 Пнд 11:11:51  1015451
>>1015450
Извиняюсь, ссылка не та
http://rextester.com/UXGO19107
Аноним 03/07/17 Пнд 13:30:09  1015530
>>1015390

> Это как вообще? Почему выделенное компилится и работает? Две точки? Первый раз вижу.
d. - название бд
Второе d. - название схемы, в которой находится таблица emp_fact_value
Аноним 03/07/17 Пнд 13:38:08  1015535
>>1015530
sum([название таблицы]) ?
Не, там фишка в том, что d это сокращённое название для таблицы, из которой происходит селект.
emp_fact_value - это поле.

Если упростить, выглядит это как
>select d.d.emp_fact value from d_table d
Однако если писать такую хуету не в коде хранимки, а в обычном селекте, получается ошибка.
Аноним 03/07/17 Пнд 13:38:34  1015536
>>1015535
Подчеркивание забыл, ну вы поняли.
Аноним 03/07/17 Пнд 15:15:52  1015602
>>1015536
Поменяй алиас на другое что-то. Будет работать?
Аноним 03/07/17 Пнд 15:54:36  1015625
>>1015602
На бою компилить не буду, чтобы не наебнуть, а тест не обновлялся тыщу лет и там пакет не компилится по другим причинам.
Скопировал отдельно запрос, запускаю.
Результаты следующие.
Замена первого алиаса на что угодно не ведёт к ошибке.
Замена второго на что угодно ведёт к ошибке.
Добавление третьего и последующего алиаса ведёт к ошибке.
Если к полю из другой таблицы в этом деле селекте приписать второй алиас, валится ошибка.
Такая магия, чувак.
Аноним 03/07/17 Пнд 16:09:36  1015633
>>1015625
Фантастика.
Оказалось, что приписывать второй алиас можно для таблицы, которая подсоединена через лефт джойн, а для таблицы через иннер джойн - нельзя.
Попробуйте.
select t.t.field_name
from dual
left join vasha_tabla t on 1=1
Работает. Меняем лефт на иннер - ошибка.
Oracle 11g
И я жду пояснений.
Аноним 03/07/17 Пнд 16:10:52  1015636
>>1015633
Причем вместо первого алиаса можно любую ебалу написать.
Аноним 03/07/17 Пнд 19:52:14  1015790
Перекат
>>1015789 (OP)
>>1015789 (OP)
>>1015789 (OP)
Аноним 04/07/17 Втр 16:11:48  1016232
>>1014260
Спасибо за ответы, думал похоже сделать, но только через оконную функцию

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 512 | 50 | 206
Назад Вверх Каталог Обновить

Топ тредов
Избранное