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

02/12/16 - Конкурс визуальных новелл доски /ruvn/
15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!



Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 537 | 49 | 236
Назад Вниз Каталог Обновить

ЕДИНЫЙ БАЗ ДАННЫХ ТХРЕД Аноним 24/10/16 Пнд 11:02:02  862801  
(65Кб, 1020x743)
Это единый баз данных тред. Старый смыло.
СЕЛЕКТИМ мусор из помоек,
срёмся, какая субд хуже, решаем простые задачки на -T-SQL на собеседованиях,
поясняем за правильную табуляцию в запросах,
креэйтим колоночные индексы на таблички, в которые идёт инсерт и реализуем прочие хорошие практики разработки БД.

В треде приветствуются все: от студаков с обоссанными лабами до любителей анализа данных и машинного обучения.

Постим свои эс-ку-эли-сиквели-транзакты, хвастаемся понятным и без комментариев читаемым кодом с вложенными запросами,
решаем прикладные задачи Тети Вали из бухгалтерии "А сделайте мне программку" на уровне архитекторов. Убеждаем залётных, что в тырпрайзе софт не нужен, а автоматизировать можно всё и на процедурах-триггерах-Икселях.
Аноним 24/10/16 Пнд 11:27:36  862809
Поясните за sqlite.
Норм для новичка?
Аноним 24/10/16 Пнд 11:35:31  862813
>>862809
Не норм, а отличная штука, особенно если у тебя крутая многоплатформенная тырпрайз система с огромными объёмами кеша и попытками в офлайн работу. Особенно хороша в связке с многозвенной архитектурой сервера и T-SQL.
>>862801 (OP)
Триггеры - говно и не удовлетворяют реляционной модели, убивают прозрачность и превращают функциональный ЯП в в мультипарадигменный. Короче не нужны.Я ТАК СКОЗАЛ!
Аноним 24/10/16 Пнд 11:50:11  862819
Вообще что-то нечитаемое на картинке, хотя я изучал субд как строить эти отношения в нормальных формах. Понятно, что запрос. Но выбери объекты как объекты из значения как значения? Похоже на абстрактное заклинание-мантра. Обычный программист вообще прехнётся от такого.
Аноним 24/10/16 Пнд 11:58:45  862821

>>862819
То есть, юмора ты там не углядел? Печально.
Аноним 24/10/16 Пнд 12:05:02  862822
использую IDE Datagrip, но не очень доволен удобством(хотя удобнее чем pgadmin3)

есть ли что-нибудь удобнее чем DataGrip?
Аноним 24/10/16 Пнд 12:06:25  862824
>>862822
для постгри канешн
Аноним 24/10/16 Пнд 12:06:27  862825
>>862822
А что в pgadmin неудобного? Ты же постгрес, я так понимаю, юзаешь?
Аноним 24/10/16 Пнд 12:32:17  862832
>>862825
он сам по себе через жопу работает. иногда вылетает.
Аноним 24/10/16 Пнд 12:34:59  862834
>>862832
Ну, судя по тому, что я нагуглил про DataGrip, круче, вроде как, я ничего не видел.
Проблема в том, что он платный, а пгадмин - бесплатный.
Аноним 24/10/16 Пнд 12:40:51  862835
Посоны, как на джаве сделать бэкап из mysql одной таблицы и конвертнуть его в JSON?
Аноним 24/10/16 Пнд 13:02:08  862843
>>862834
ну 8 баксов в месяц не проблема, если используешь его в работе.

но все равно, эта ебанина триггеры не показывет(рутины показывает) и нехватеет функционала psql консольного.
Аноним 24/10/16 Пнд 13:09:14  862845
>>862835

http://stackoverflow.com/questions/14691112/import-a-dump-file-to-mysql-jdbc

а дальше как получиться.
Аноним 26/10/16 Срд 13:57:10  863895
Привет, подскажите какие есть варианты для хранения свойств товара в реляционной базе?
Погуглив я нашел следующие варианты:
1. EAV
2. Одна общая таблица для всех товаров, значение свойств NULL если оно не определено для данного товара. Наверное свойства должны быть более менее одинаковыми, и категорий 2-3.
3. По таблице на каждую категорию товаров. Для скольких категорий такой способ вообще рационален? 10-20 категорий при условии что они все известны на этапе проектирования?

Какие есть еще способы, решения?

И прокатит ли такой вариант, одна таблица Product для общих свойств всех товаров, такие как цена. А индивидуальные свойства категорий товаров хранить с помощью EAV? Что скажите?
Аноним 26/10/16 Срд 14:03:18  863899
>>863895

ПланВидовХарактеристик

или можно сделать по-простому. Сделать таблицу с 3 колонками: Ссылка На Товар (ид товара); Наименование Характеристики (строка); Значение Характеристики (тоже строка, с сериализованным значением)
Аноним 26/10/16 Срд 14:42:53  863907
>>863899
спасибо, это изобретение 1с или где-то еще встречается?
Аноним 26/10/16 Срд 15:43:37  863930
В буржевики на странице про EAV свободна секция "Physical representation of EAV data", можно запилить свою репрезентэйшен со ссылкой на свой гитхаб профиль.
Аноним 26/10/16 Срд 16:35:10  863979
>>863899
По сути это EAV? Те же пары атрибут-значение, только название атрибута будет иногда повторяться, т.к. находятся в одной таблице?
Аноним 26/10/16 Срд 16:57:48  863998
>>863979
Ну так и вынес бы название атрибута в отдельную таблицу, чтобы не повторялось.
Да и значения тоже, так меньше памяти займёт.
Аноним 26/10/16 Срд 17:35:06  864031
>>862801 (OP)
Что скажешь насчет даталога (и в частности Датомик)?
Аноним 26/10/16 Срд 19:42:28  864109
В английских статьях о ДБ часто упоминается термин sub-schema, это название определенной модели, или можно понимать(перевести) дословно под-схема?
Аноним 26/10/16 Срд 22:04:26  864208
>>863907
Да, изобретение 1С. А ещё там рядом с атомарными аттрибутами некоторой сущности может идти составной аттрибут (называется табличная часть). Вот для решения таких задач она и может использоваться, трюк называется "Дополнительные реквизиты и сведения".
Аноним 26/10/16 Срд 22:07:46  864213
Как делать инкрементальный бэкап в mysql только одной таблицы?
Аноним 27/10/16 Чтв 13:46:46  864526
>>863895
Способы 2 и 3 подойдут только для сделанного на коленке магазина селфи-палок. Особенно уныло то, что тебе придется при каждом новом свойстве добавлять новые колонки в рсубд, удалять ненужные (или класть на них хуй и создавать ночной кошмар для себя и других макак), а также дописывать в логику эти новые колонки и убирать старые. Очевидный EAV очевиден. Для годных фреймворков уже есть готовые библиотеки, реализующие EAV для произвольных объектов. Если будешь проектировать сам - не забывай, что value могут быть не только числом, строкой или "да"/"нет", а еще и опцией (одиночной или множественной), при проектировании это лучше учесть сразу, и в целом все сделать максимально абстрагированно, запрос должен сводиться к

СписокТоваров = ПолучитьТовары(Штаны, 20_штук, В_Порядке_Возрастания_Цены, Параметры("Цвет" => ["Зеленый", "Синий"], "Размеры" => [40,42,44])
Аноним 31/10/16 Пнд 00:19:41  866647
была задача построить дополнительное граф-ориентированное хранилище для прожекта. архитект, вместо очевидного решения выбрать ГОБД, построил самописный кал на редисе. видит ли кто-нибудь невероятное преимущество этого мува?
Аноним 31/10/16 Пнд 06:13:47  866767
>>866647
Только в случае "ну блять у нас все на редисе тип".
Аноним 31/10/16 Пнд 09:25:59  866799
>>866767
аргумент был почти: "я два года юзаю редис и крч прям в восторге от него"
мне казалось, есть что-то еще и я не понимаю сути
Аноним 05/11/16 Суб 00:29:25  869921
Бамп, он же вопрос.
Есть необходимость освоить postgres. Вот накатил я ее на свой нотебук. Как я понял, у меня нет никакого конфигфайла вообще? Мне его надо создать ручками и только потом запускать сервак, делать юзера, делать бд а потом уже подрубать ее к своим прости, Господи веб-приложухам?
Аноним 05/11/16 Суб 02:31:38  869954
>>869921
Написал хотя бы, что за ОС. Вообще ставил, что на винде, что на линуксе - все конфиги создавались автоматически.
Аноним 05/11/16 Суб 08:42:52  870055
Привет. Вопрос проектирования: допустим, есть какая-то сущность и справочник к ней. Например, машина и её фирма-производитель.

Есть два стула подхода:
1) Иметь две таблицы, машина и фирма, и хранить в таблице машина отдельным столбиком айдишник фирмы.
2) Иметь три таблицы, машина, фирма и таблица-связка МашинаФирма. Тогда связь между машиной и фирмой хранится в третей таблице (ид машины-ид фирмы).

Вроде как хорошей практикой считается подход №2. Кто-нибудь может пояснить в чём его профиты? И как быть с неудобством добавления новой машины и тем, чтобы вытащить инфу о какой-нибудь машины, надо заджойнить аж 3 таблицы.
Аноним 05/11/16 Суб 09:29:35  870068
>>870055
подход 2 - это связь многие-ко-многим. сомневаюсь, что тебе понадобится одну машину связать с несколькими фирмами
Аноним 05/11/16 Суб 10:56:00  870127
0YxkVnPrWb4.jpg (164Кб, 582x792)
Анончики, есть таблица пикрелейтед. В ней миллион записей. Бд PostgreSQL.

Дали мне заполнить уровни иерархии в колонке Level.

Ну так как я ньюфаг и вообще и умею писать только CRUD, то скажите в какую сторону копать, что изучать?

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

Сильно ли эта задача сложная?
Аноним 05/11/16 Суб 11:46:11  870159
>>870127
рекурсивный запрос чтили?
Аноним 05/11/16 Суб 12:00:39  870172
>>870068
Many to many это понятно. Но такой подход используется даже в отсутствие такой связи. Поэтому я и попросил пояснить плюсы и минусы каждого подхода. Например, при подходе #1, если мы захотим ввести новый справочник, нам надо будет добавить новую колонку в таблицу, это хуже, чем добавить две таблицы и две связи при подходе #2?
Аноним 05/11/16 Суб 12:54:37  870191
>>870172
использовать нечто при отсутствии на то необходимости никогда не даст никаких плюсов. в случае запиливания м2м связей это: а) необходимость дополнительного соединения таблицы; б) необходимость проверки/учета случая, когда связей оказалось две или более, хотя предполагалась всего одна
Аноним 05/11/16 Суб 13:38:02  870201
>>870159
я хз, только на пыхе такое могу сделать
Аноним 05/11/16 Суб 14:02:15  870211
Продублирую
>>869982
>>869990

Сап. Не могу нагуглить, как правильно сделать на postgresql ф-ию, которая возвращала бы записи из таблицы "лайки" (user_id, to_user_id, value) для первых 10 юзеров. Не спрашивайте нахуя, просто надо.

Эта хуйня ниже возвращает строки в виде "(1,8,1)" , а мне нужны нормальные колонки, как при обычном select-е.

http://pastebin.com/taRBHJ20
Аноним 05/11/16 Суб 14:10:17  870214
>>870211
Может надо курсор возвращать?
Аноним 05/11/16 Суб 14:18:01  870215
>>870214
Если я сделаю
RETURNS SETOF refcursor
и
RETURN NEXT c; (вместо rec, как было)
то на выходе получу такую ебалу:
<unnamed portal 14>
<unnamed portal 14>
..
Аноним 05/11/16 Суб 14:45:49  870224
>>864526
>Для годных фреймворков уже есть готовые библиотеки, реализующие EAV для произвольных объектов.
Какие, например? В php для yii, symfony такие либы есть?
Аноним 05/11/16 Суб 15:47:52  870262
ss (2016-11-05 [...].png (71Кб, 1684x1011)
DiagramNortwind.JPG (93Кб, 911x690)
Сап. Есть запрос с подзапросом, в котором 4 столбца - цена, имя продукта, год и месяц(из одного и того же столбца одной таблицы)) В запросе мы получаем в каждом месяце каждого года самый продаваемый товар. НО! выводится только кол-во продаж, без наименования товара. Если в select прописать x.NAME то sql посылает нахуй с ошибкой (Столбец "x.NAME" недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.) Если же добавить в group by тогда в выводе выводятся все товары, проданные за всё время, без сортировки по кол-ву самых проданных. Как можно вывести к данной таблице имя товара?

Сам код -
use Northwind
SELECT MAX(x.Quantity) AS Quantity, [YEAR], [MONTH] FROM
(SELECT SUM(Quantity) AS Quantity, Products.ProductName AS NAME, YEAR(OrderDate) AS [YEAR], MONTH(OrderDate) AS [MONTH] FROM Products
join [Order Details] ON Products.ProductID = [Order Details].ProductID
join Orders ON [Order Details].OrderID = Orders.OrderID
GROUP BY YEAR(OrderDate), MONTH(OrderDate), Products.ProductName)x
GROUP BY [YEAR], [MONTH] ORDER BY [YEAR], [MONTH]
Аноним 05/11/16 Суб 15:54:54  870265
>>870215
Я вообще больше по Ораклу, но "SETOF refcursor" - это разве не набор курсоров? А тебе тут надо вернуть лишь один курсор. Вдобавок не проще ли сделать "select * from mytable group by user_id order by user_id limit 10" и вернуть курсор на этот запрос?
Аноним 05/11/16 Суб 16:01:03  870271
>>870262
Может внешний запрос должен не юзать GROUP BY, а условие HAVING x.quantity = MAX(x.quantity) ?
Аноним 05/11/16 Суб 16:03:36  870273
>>870262
убрать ProductName из подзапроса
убрать внешнюю группировку (которая, нахуя-то, дублирует группировку подзапроса)
сделать джойн на продукты основному запросу

>>870265
>>870214
а зачем курсоры? я что-то не понимаю, или:
select *
from likes l
where l.user_id in (select top 10 user_id from user) ?
Аноним 05/11/16 Суб 16:03:39  870274
ss (2016-11-05 [...].png (19Кб, 1124x665)
>>870271
Не уловил суть. Просто заменить GROUP BY на HAVING?
Аноним 05/11/16 Суб 16:05:46  870275
>>870273
Без внешней группировки запрос не работает, так же жалуется на то, что он не содержится ни в статистической функции, ни в предложении GROUP BY.
Аноним 05/11/16 Суб 16:17:29  870290
>>870273
Если в подзапросе не будет продуктнейма, как мне сделать джойн на основном запросе? что к чему связывать тогда?
Аноним 05/11/16 Суб 16:21:21  870294
ss (2016-11-05 [...].png (28Кб, 1389x892)
>>870273
Извиняюсь за флуд. Если убрать продуктнейм то в продажах выводятся совсем большие числа, не знаю откуда. Таких в принципе нет в таблице.
Аноним 05/11/16 Суб 16:28:42  870298
>>870294
Можно попробовать в подзапросе добавить колонку max(quantity) over (partition by year, month), а во внешнем запросе проверять x.quantity = max(x.quantity).

Аноним 05/11/16 Суб 16:34:03  870302
>>869954
линь, конечно же.
сейчас бы на винде поразрабатывать веб
Аноним 05/11/16 Суб 16:38:55  870305
>>870298
Тоже совсем рандомные числа получаются, таких даже в таблице нет.
Аноним 05/11/16 Суб 16:45:00  870308
>>870305
Нет скрипта создания таблиц и их заполнения? Лень самому ковыряться.
Аноним 05/11/16 Суб 16:46:08  870309
>>870273
> а зачем курсоры? я что-то не понимаю, или:
> select
> from likes l
> where l.user_id in (select top 10 user_id from user) ?
Вообще да, так лучше, только limit 10, top нет в постгресе.

>>870211
Вообще ф-ия, оказалось, работает. Я ее вызывал через "select func()", поэтому такая хуйня была:
> Эта хуйня ниже возвращает строки в виде "(1,8,1)" , а мне нужны нормальные колонки, как при обычном select-е.
А надо через select
from func()

Но ф-ия работает чуть дольше, чем простой запрос выше, так что нахуй ее, да.
Я думал, что с подзапросом будет всяко дольше (у меня на самом деле будет число не 10, а намного больше), а курсоры должны быть дохуя быстрые, т.к. это нативная фича.
Аноним 05/11/16 Суб 16:50:06  870310
>>870302
Выполни запрос show config_file. У меня показывает:
"/var/lib/pgsql/9.5/data/postgresql.conf"
Аноним 05/11/16 Суб 16:50:19  870311
>>870308
Так таблица уже создана. Мне просто нужен запрос для вывода. И по сути есть запрос, но в него нужно добавить столбец с наименованием продукта.
Аноним 05/11/16 Суб 16:53:05  870315
>>870311
Скрипт нужен, чтобы у себя сделать таблицы и написать запрос, это всяко проще, чем теоретизировать.
Аноним 05/11/16 Суб 16:55:00  870317
>>870315
могу саму бд скинуть.
Аноним 05/11/16 Суб 16:56:32  870318
>>870315
http://rgho.st/82MsDMqtS
Аноним 05/11/16 Суб 21:57:09  870541
>>870191
Т.е. подход #2 будет даже неправильным, а препод пиздит?
Аноним 05/11/16 Суб 23:07:54  870568
>>870541
гм, я не знаю, что говорил препод, но в вышеописанном тобой случае при наличии, в теории, большого количества данных (да и без такового случая) - да. случаи всякие бывают, но при росте продукта подобные переусложнения приводят к проблемам, которые еще попробуй решить без костылей и последствий
Microsoft Access Анон 05/11/16 Суб 23:09:38  870570
Задача довольно простая, поэтому кто сможет сделать эту бд заплачу 300р
Задача: вы собираетесь купить себе телефон, всего существует две торговые сети (допустим связной и евросеть), у каждой из этих сетей есть по 5 филиалов (соответственно со своими адресами и телефонами) и мы выбираем из 5 фирм (например apple Samsung HTC Nokia Motorola) у фирмы есть несколько моделей (у каждой модели свой несколько цветов: белый и черный)
По запросу хотим иметь представление где (вам в каком магазине) можно купить телефон интересующей нас модели (соответственно его основные парматеры цвет, цена)
Анон 05/11/16 Суб 23:16:37  870576
Почта для связи desan5@mail.ru
Telegram @Vovan_Yragan
Аноним 05/11/16 Суб 23:18:59  870578
>>870570
>>870576
Аноним 05/11/16 Суб 23:19:15  870580
>>870578
хотел тебе расписать в красках, как это решить,но раз ты такой, то обойдешься
Аноним 06/11/16 Вск 11:15:38  870748
image.jpg (147Кб, 963x706)
>>870127
Правильно сказал тебе Анон, это рекурсивный запрос
Аноним 06/11/16 Вск 15:37:34  870860
>>870580
Двачую, у нас тут безвозмездная помощь, мы в добрых чувствах только, любовью к бд едины.
А он нам свои фантики предлагал.
Аноним 06/11/16 Вск 19:09:45  871008
>>870262
Ну же, пожалуйста. Помогите аноны
Аноним 06/11/16 Вск 20:22:47  871064
>>871008
проверь ибо хз
http://pastebin.com/mBmPRbbD
Аноним 06/11/16 Вск 20:33:16  871075
ss (2016-11-06 [...].png (47Кб, 1160x888)
>>871064
Спасибо за старание, однако это не то что надо было. Нужно получить наименование самого продаваемого товара за каждый месяц каждого года. Например на скриншлоте видно, что в 1996 году 7 месяца самый продаваемый - "Chang" Вот только его и надо вывести за период 1996 года 7 месяца, за 8й месяц 96го года другой товар, и так со всей таблицей( записей там вроде до 98го)
Аноним 06/11/16 Вск 21:05:52  871100
>>871075
аааа, в месяце должна была быть только одна запись. я не так понял условие. ну, доберусь до ssms, ченьть еще насочиняю
Аноним 06/11/16 Вск 21:19:24  871108
ss (2016-11-06 [...].png (29Кб, 1122x801)
>>871100
Условие - вывести самый продаваемый товар в каждом месяце каждого года.
У меня оно по сути выполнено, только запрос выдает мне таблицу с тремя столбцами - Год, месяц, кол-во продаж. Данные верны, т.е как в 96ом году 7 месяце продали товар "Chang" 105 штук, так он и выводит - 1996 года 7 месяца 105 продано. А чего продано - не выводит. Ввожу "Name" в SELECT основного запроса - выдает ошибку.
Аноним 06/11/16 Вск 22:55:38  871161
>>871108
там же http://pastebin.com/mBmPRbbD НО я хуй знает, почему запрос выдаёт несколько максимум 2 записей на один год/месяц. но уже поздно, завтра под кофе, может быть, придумаю получше)
Аноним 06/11/16 Вск 23:16:32  871178
>>871161
Ох, спасибо больше, правда! Работает конечно странно, да, иногда дублирует продукты, иногда просто выводит по несколько самых продаваемых за 1(!) месяц.
Аноним 07/11/16 Пнд 02:22:22  871318
В постгресе создал unique constraint на колонку.
Он работает как индекс? То есть он будет использоваться при быстрого order by по этой колонке? Или только проверяет уникальность?
Аноним 07/11/16 Пнд 06:39:06  871362
ss (2016-11-07 [...].png (35Кб, 672x783)
>>871161
Мне тут вот такое дали, только почему то здесь столбцы дублируются
with cte as
(SELECT SUM(Quantity) AS Quantity, YEAR(OrderDate) AS [YEAR], MONTH(OrderDate) AS [MONTH], Products.ProductName AS NAME FROM Products
JOIN [ORDER Details] ON Products.ProductID = [ORDER Details].ProductID
JOIN Orders ON [ORDER Details].OrderID = Orders.OrderID
GROUP BY YEAR(OrderDate), MONTH(OrderDate), Products.ProductName)

select * from cte join(
SELECT MAX(Quantity) AS Quantity, [YEAR], [MONTH] FROM cte
GROUP BY [YEAR], [MONTH]
)x on cte.quantity=x.quantity and cte.year=x.year and cte.month=x.month
Аноним 07/11/16 Пнд 08:35:40  871378
>>871362
ну так выбор идет с двух источников. самый простой выход - заменить select на select cte.
Аноним 07/11/16 Пнд 08:36:25  871379
>>871378


Вариант 1 (немного переработанный ответ @msi):

with cte as
(SELECT
SUM(Quantity) AS Quantity,
YEAR(OrderDate) AS [YEAR],
MONTH(OrderDate) AS [MONTH],
Products.ProductName AS NAME FROM Products
JOIN [ORDER Details] ON Products.ProductID = [ORDER Details].ProductID
JOIN Orders ON [ORDER Details].OrderID = Orders.OrderID
GROUP BY YEAR(OrderDate), MONTH(OrderDate), Products.ProductName)
SELECT * FROM cte
WHERE Quantity=
(
SELECT TOP 1 Quantity
FROM cte c
WHERE c.YEAR=cte.YEAR AND
c.MONTH=cte.MONTH
ORDER BY Quantity desc)

Выдаст несколько записей, если какие-то товары продавались одинаково.

Вариант 2 - с использованием ранжирования:

;WITH cte AS (
SELECT
ROW_NUMBER() OVER
(PARTITION BY
YEAR(orderdate),
MONTH(orderdate)
ORDER BY SUM(quantity) desc
) ord,
SUM(Quantity) AS Quantity,
YEAR(OrderDate) AS [YEAR],
MONTH(OrderDate) AS [MONTH],
Products.ProductName AS NAME FROM Products
JOIN [ORDER Details] ON Products.ProductID = [ORDER Details].ProductID
JOIN Orders ON [ORDER Details].OrderID = Orders.OrderID
GROUP BY YEAR(OrderDate), MONTH(OrderDate), Products.ProductName)
SELECT quantity, year, MONTH, NAME FROM cte WHERE ord=1 ORDER BY year, month

Всегда выдаст одну запись за месяц.

Вот, кинули два варианта, так что уже не надо. Спасибо за то что помогал.
Аноним 07/11/16 Пнд 13:29:10  871464
>>871379
Сразу добавлю, что второй вариант сейчас считается труъ, ибо работает гораздо быстрее.
К cte, все-таки, стоит прибегать только в самых крайних случаях, когда без них совсем никуда, ибо, а самом деле, тот же вложенный запрос получается.
Постгерс, конечно, материализует такие вот запросы, чтобы потом обращаться уже к кешу, но, если ваша субд поддерживает оконные функции, то грех ими не пользоваться.
Так что я за 2.
Аноним 08/11/16 Втр 18:57:54  872366
ПОдскажите норм бесплатный или продающийся на торрентах GUI для postgreSQL. pgAdmin3 ващпе расстроил после MSSQL MS. Пробовал Valentina studio, вроде ничё, автокомплит, подсветка, но чё то не открывает sql-файлы и drag'ndrop не работает на sql файлах (только копирование ASCII содержимого). Пробовал heidi SQL. Чуть хуже valentina, ибо нет автокомплита, но лучше слона.
Аноним 08/11/16 Втр 19:41:21  872400
>>872366
Data Grip от idea.

но он тоже специфичный.

консоль например не завезли(psql) как тригеры на таблице посмотреть хуй знает.
Аноним 10/11/16 Чтв 18:41:57  873570
>>872366
Думаю, нужно просто привыкнуть к пгадмину, на самом деле, он удобный. Подсказок, правда, нету, но, мне кажется, это только мотивирует хорошо разбираться в структуре даннных.
Аноним 11/11/16 Птн 13:57:03  873952
Анончики, вырисовывается перспектива устройства на должность стажера-разработчика oracle siebel (будут обучать). Поясните за нее. Мне сказали, что помимо проектирования интерфейса, всяких там джоинов, запросов, там нужно будет кодить на js, а я в нем вообще не шарю. Сильно ли это скажется? Сложно ли тогда будет учиться?
Аноним 11/11/16 Птн 15:53:05  874012
О, такой тред. Как раз хотел спросить.
Вот есть у меня джве mysql таблицы. В одной колонка с именами и в другой колонка с именами, плюс ещё одна колонка в первой и дохрена других колонок во второй. И нужно привести вторую таблицу в соответствии с первой: выкинуть те имена, которых нет в первой, добавить из первой тех, кого нет во второй, ну и проверить, чтобы второй столбец из первой таблицы соответствовал второму столбцу из второй.
Это всё можно сделать несколькими запросами, я в курсе. Но, может, по фен-шую всё более грамотно решается одним запросом?


Для примера, первая таблица: Имя-Должность, а вторая Имя-Должность-Зарплата-НДС-Ипотека-Кредит-Кладбище. Допустим, в первой мы добавили Иванова, удалили Петрова, а Сидорова повысили с гендиректора до дворника. Нажимаем кнопку "обновить вторую таблицу" и инфа в ней становится актуальна инфе в первой.
Аноним 11/11/16 Птн 15:53:05  874013
>>873952
Выучить убогий язычок гуру SQLа не должно составить труда.
Аноним 11/11/16 Птн 18:35:20  874078
>>874012
в MS SQL есть MERGE для таких целей, надейся, что некоторое дерьмо есть в My~
Аноним 13/11/16 Вск 03:45:15  874989
>>874012
У тебя тут проблема не в том, что это одним запросом проблематично сделать, а в том, что схема неправильно спроектирована. Если уж тебе и нужна зачем-то вообще первая таблица, то на второй таблице две первых колонки должны быть с FOREIGN KEY на колонки в первой.
Аноним 13/11/16 Вск 21:38:50  875279
>>874012
Сделай функции, которые приводят в соответствие же. И вызывай их по нажатию на кнопку.
1. Те записи, которые уже есть, апдейтим, если были изменения
2. Те записи, что пропали в первой, удаляем
3. Новые записи добавляем.

Что тут трудного-то?

Если мускл умеет в триггеры, то повесь триггер на первую таблицу, который будет все это делать за тебя.
Аноним 14/11/16 Пнд 07:56:50  875406
>>863895
Нахуя хранить товары в реляционной базе? Храни в монге.
Аноним 14/11/16 Пнд 11:44:11  875449
Есть таблица CREATE TABLE Posts (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
Pathlvl1 INT DEFAULT 0,
Pathlvl2 INT DEFAULT 0,
Pathlvl3 INT DEFAULT 0,
Pathlvl4 INT DEFAULT 0
)ENGINE = INNODB ;
Mysql
Надо чтобы быстро выполнялись запросы
"SELECT Pathlvl1,Pathlvl2,Pathlvl3,Pathlvl4 FROM Posts WHERE id = ?
SELECT COUNT() from Posts WHERE Pathlvl1 = ?
SELECT COUNT(
) from Posts WHERE Pathlvl1 = ? and Pathlvl2 = ?
Какие индексы посоветуете сделать?
Аноним 14/11/16 Пнд 11:55:41  875453
>>875279
>>874989
>>874078
В общем, сделал как предполагал, в несколько приёмов. Удалить лишнее, добавить недостающее, обновить, что осталось.
Аноним 14/11/16 Пнд 13:13:52  875486
>>875449
https://en.wikipedia.org/wiki/Nested_set_model
Аноним 14/11/16 Пнд 15:41:38  875554
>>862801 (OP)
О, круто, это я удачно зашёл. Так вот, есть следующая задачка (субд PostGreSQL + расширение PostGis): таблица с координатами полигонов. Нужно для вновь добавляемого в таблицу полигона проверить, пересекается ли он хотя бы с одним из тех, что уже в таблице есть? Как это сделать?
Аноним 14/11/16 Пнд 16:35:15  875567
>>875554
А, ладно, отбой. Сам сделал. Вас хуй дождёшься.
Аноним 14/11/16 Пнд 16:38:39  875569
>>875554
Бля ты бы хоть описал как там у тебя полигоны задаются. Таблица полигонов, таблица координат узлов, таблица связей? Или как? Вообще, перебираешь все отрезки существующих и добавляемых полигонов, подставляешь в формулу пересечения отрезков координаты отрезков, получаешь результат, либо пересекаются либо нет.
Аноним 14/11/16 Пнд 16:41:34  875570
>>875569
сам должен был догадаться, совсем охуел
Аноним 14/11/16 Пнд 18:32:21  875604
>>872366
EMS PostgreSQL Manager
Аноним 27/11/16 Вск 12:24:13  882989
1) Реально ли восстановить базу по ctl-файлам без создания структуры таблиц с прописыванием длины и типов полей?
2) Есть ли какой-нибудь охуительный инструмент для "реставрации" бд из разных кусков говна уровня: зашел в мастер - указал пак файлов - ждешь готовый велосипед с квадратными колесами?
3) Как быстро генерить таблицы с одинаковым типом полей и длиной?
4) Как более-менее распарсить данные уровня: 345345САШАNULL?

Суть в следующем. Есть много файлов нижеописанной структуры с данными на сотни тысяч строк. Поднял MySql server, прикрутил phpmyadmin и workbench.
Есть одна проблема: дохуя таблиц и дохуя столбцов, типы полей которых не прописаны. Если бы была одна таблица, я бы даже не заморачивался: распарсил csv и в полуручном режиме загнал. Но там блять целая база. Я нихуя раньше с таким не сталкивался, поэтому прошу твоего совета, анон, как побыстрее загнать все это дело в мою базу.
`LOAD DATA
INFILE *
INTO TABLE load_delimited_data
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
( data1,
data2
)
BEGINDATA
11111,AAAAAAAAAA
22222,"A,B,C,D,"`

Аноним 27/11/16 Вск 13:05:09  883011
\u003e\u003e882989
Аноним 04/12/16 Вск 13:28:43  887525
Сап анон.
Нужны TeraData девелоперы.
И тестеры со знаием DWH/SQL.
Аноним 04/12/16 Вск 19:15:28  887895
>>887525
Я бы поработал у вас по удаленке.
Но днем я на основной работе.
Mssql девелопер на olap пректе
Аноним 12/12/16 Пнд 16:37:09  893078
есть такая говнотаблица
something [ id, ..., date ]
надо удалить все записи кроме последних 5 по дате.

вот эта вещь похожа на правду?

DELETE FROM something WHERE id NOT IN (
SELECT id FROM something ORDER BY date LIMIT 5
)
Аноним 12/12/16 Пнд 17:15:37  893106
>>893078
DELETE FROM something WHERE id NOT IN (
SELECT id FROM something ORDER BY date DESC LIMIT 5
)
самофикс
Аноним 12/12/16 Пнд 17:17:58  893108
>>893078
дам тебе подсказку: перед тем, как дропать записи на продакшене, добавь в таблицу колонну is_deleted, апдейтом поставь 1 записям, которые надо стереть и после того, как проверишь, что удалятся именно нужные записи, дропаешь те, у которых is_deleted = 1.
Аноним 12/12/16 Пнд 17:19:32  893111
>>893108
На будущее запомню.
До продакшена еще не дорос, но все же спасибо.
Аноним 13/12/16 Втр 09:13:29  893472
Capture.PNG (89Кб, 1120x413)
>>862801 (OP)
Немного работы кодогенератора ИТТ
Аноним 13/12/16 Втр 15:43:20  893618
tumblrodn4vydXr[...].jpg (34Кб, 400x600)
>>862801 (OP)
Посоветуйте легкий удобынй эдитор, чтобы наглядно и быстро поселектить чегонибудь. Оракловский громоздкий, датагрип для моих целей тем более излишество.
Аноним 13/12/16 Втр 16:33:38  893639
>>893618
dbconnector
Аноним 13/12/16 Втр 16:34:10  893642
>>893618
или linqpad
Аноним 13/12/16 Втр 22:06:22  893830
Анон, вот есть у меня файл .sql, где у меня написана муть "createdb govno, create table hui..."
Как мне исполнить этот файло, например, в sqlite3?
Аноним 16/12/16 Птн 13:57:05  895253
14785400873311.jpg (51Кб, 421x604)
Сап, помогите с постресом!
1.Мне нужно вывести название производителя, который чаще всего встречается в данной таблице.
2. Есть таблица товаров вида
Наименование|тип товара|склад|стоимость
Нужно вывести все склады, в которых не встречается заданный тип товаров.
Хэлп плез!
Аноним 16/12/16 Птн 14:16:18  895267
Здравствуйте, любители баз данных.
Расскажите, кем вы работаете, сколько зарабатываете и все такое прочее. Интересует ДС, конечно. Можно ли сделать разработку БД своей специальностью и при этом жить красиво?
Аноним 16/12/16 Птн 14:31:33  895278
>>895253
иди нахуй

>>895267
серьезные фирмы не экономят на ДБА, но бОльшая часть работодателей пытается впихнуть обязанности администрирования бд на сеньоров (а иногда даже на рядовых макакей)
зорплаты можно поинвестигейтить. например, в бывшей шараге запросы на оплат у дба высокого уровня явно превышали аналогичный у девов (дотнет, джява, не говоря про фтонтовиков и ебалу типа пхп). но реальных предложений не видел, конеш
Аноним 16/12/16 Птн 15:31:11  895308
>>895278
А на что может рассчитывать мальчик, чуть больше года пишущий запросики в оракл и всякие хранимые хуевины на PL/SQL.
Я свою жопку уже пристроил в новое место, но вот думаю, не дешево ли пристроил.
Ну тут еще работа показалась очень интересной в плане опыта и развития скиллов, на текущей я с какого-то момента перестал в интересном для себя направлении развиваться.
Аноним 16/12/16 Птн 16:53:59  895370
>>895308
я тоже, имея пару-тройку лет опыта, постоянно спрашиваю себя, не дешево ли я себя пристроил? и, думаю, это нормально в ситуации, когда з/п является тайной пострашнее, чем документы про инопланетян
Аноним 16/12/16 Птн 16:55:48  895373
>>895370
>з/п является тайной пострашнее, чем документы про инопланетян
В смысле? Ты в какой-то секретной конторе или что?
Аноним 16/12/16 Птн 16:59:43  895378
>>895373
ну тип об этом не принято говорить как бы. и не каждый тебе ответит, какой у него размер зопэ. тем более тебе никто не ответит, какой средний размер по твоей позиции в шараге/отрасли. максимум, расскажут, что !N валютанейм - это для тебя много! или "нам это подходит"
Аноним 16/12/16 Птн 17:45:29  895430
>>895378
потому что каждый работодатель вкручивает паяльники сотруднику который об этом говорит, и заставляет подписывать всякие НДА.

по очевидным причинам которые обсасываеться в "мы вам перезвоним" - тредах
Аноним 16/12/16 Птн 17:48:24  895433
>>893472
как вы этом говне разбираетесь потом?

никак

Аноним 16/12/16 Птн 23:38:17  895633
>>895430
По закону ЗП под nda не попадает никаким боком. Как и условия работы.
Под nda может попадать только то, что составляет коммерческую тайну - особенности техпроцесса например, код внутренних инструментов, планы развития.
Также могут выкинуть на мороз за разглашение чужой ЗП, но только в том случае, если ты узнал ее по своим должностным обязанностям, т.е. ты бухгалтер и имеешь доступ к отчету по ЗП.
В любом другом случае на требования не разглашать ЗП можно смело класть - если ты узнал чужую ЗП не пользуясь доступом к внутренней документации и базам данных, можно смело разглашать.
А свою ЗП имеешь право хоть на каждом углу озвучивать.
Аноним 18/12/16 Вск 18:43:28  896664
Какие привилегии по дефолту даются пользователю в MS SQL, созданному через create user from login loginname, если он не занесет ни в одну роль?
Аноним 18/12/16 Вск 21:23:16  896769
>>896664
вродь только public

но было бы правильней попробовать, не
Аноним 19/12/16 Пнд 00:41:54  896887
Что такое делегирование и олицетворение простым языком?
Ms SQL server

Миможабапрогер
Аноним 19/12/16 Пнд 01:03:31  896891
А где вы хуярите код на sql? какая IDE?
Аноним 19/12/16 Пнд 09:43:31  896958
>>896891
oracle sql developer
Аноним 19/12/16 Пнд 10:35:56  896967
>>896958
Привет!
Тут все какие-то неправильные SQLи обсуждают, рад, что встретил тебя.
Расскажи, кем ты работаешь, как давно ты в этом, как вообще жизнь сложилась? Насколько оцениваешь свои навыки, видишь ли перспективы для роста?
Аноним 19/12/16 Пнд 10:40:48  896969
>>895633
А если я знаю, где в базе хранится размер начисленной зп и посмотрел селектом, сколько зарабатывает мое начальство, а после пригорел и рассказал друзьям, это считается нарушением законодательства?
Аноним 19/12/16 Пнд 14:11:49  897033
зашел в тред за вопросом, но подумал что он слишком прост и сам загуглил, в итоге поделюсь с вами энивей.

В общем вот такая тема есть:

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

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

where
max_huita * coeff >= value
Аноним 19/12/16 Пнд 14:16:34  897036
>>897033
Улыбнулся, держи в курсе.
Аноним 19/12/16 Пнд 14:22:38  897038
>>897033
> пик

>>896969
везет, у нас позаботились об таких вещах и зашифровали подобные значения какой-то хуитой, доступ к которым имеют особо привелигированные члены с собственной DLLкой в кармане
но зато открытыми остались размеры желаемой зорплаты для кандидатов. так вот я там охуел увидеть, что многие DBA на сеньорские позиции просили не менее 4-4.5К (404 если что). с другой стороны, а разве это много, если ты действительно Senior DBA, а не mysql онли?
Аноним 19/12/16 Пнд 20:40:59  897213
Чому у вас даже шапки нет? Где все действо происходит в visual management studio или можно хоть в консоли, разницы нет?
Аноним 19/12/16 Пнд 21:28:05  897231
>>896967
Я не дба. Просто неиспользование планов выполнения, оконных функций, когда надо, и просто неоптимальные (в понятии можно сделать лучше) запросы оборачиваются их переписыванием на ревью. У нас дба смотрят все pr и без их апрува ничего не мержится, где есть взаимодействие с бд.
Поэтому и приходится.
Аноним 20/12/16 Втр 03:09:50  897337
Хлопцы, а поясните за оконные и аналитические функции. Это добро хуёво гуглится,а там гед гуглится нихуя не понятно.
Аноним 20/12/16 Втр 10:23:06  897408
>>897337
оконные функции позволяют тебе использовать один экспрешн в нескольких местах запроса, дабы обойти дублирование кода
да и вообще, это просто красиво
аналитические функции удобны и прекрасны при построении сложной или не очень статистики. где, например, нужно учитывать предыдущие или последующие результаты, транспонировать матрицу. их (функций) немало знаю про mssql, мош у тебя конкретный вопрос по этому поводу?
Аноним 20/12/16 Втр 10:31:24  897409
>>897408
опсъ, я оконные функции спутал с CTE. окно позволяет сранжировать/сгруппировать некоторые данные в пределах вычисления одного столбца. где, например, нужно сгруппировать и отсортировать часть промежуточного результата и посчитать количество его-то. в общем случае тебе бы пришлось создавать подзапрос. в частном случае у тебя бы ничего не получилось
оконные функции считаются после выполнения основной части запроса, но до пагинации с сортировкой
Аноним 20/12/16 Втр 10:59:35  897416
>>897231
А можно быть чистым разработчиком баз данных и не писать на других языках?
Аноним 20/12/16 Втр 12:44:21  897457
>>897416
можно
Аноним 20/12/16 Втр 12:52:47  897463
>>897457
А что по зарплате и востребованности?
Аноним 20/12/16 Втр 12:54:58  897465
>>897463
востребованность меньше, офк, чем всяких других девелоперов ибо потому, что не каждая фирма выделяет средства/ресурсы на DBA отдел, а частенько спихивают в обязанности бэкэндщиков администрирование баз данных

по зарплате не знаю, но она есть
Аноним 20/12/16 Втр 13:00:11  897468
>>897465
Тогда мне стоит параллельно что-то еще осваивать, чтобы в будущем не обосраться? Часто вижу вакансии Разработчик Java+Oracle, Delphi+Oracle.
Аноним 20/12/16 Втр 13:39:22  897487
>>897468
ну смотря, какую цель ты преследуешь. если устроиться, лишь бы взяли, то да.
но в любом случае, стОит что-то осваивать параллельно и не загнивать на одной технологии, какова бы она не была
Аноним 20/12/16 Втр 13:46:47  897492
>>897487
Устроиться на большие деньги. 200к через 3-4 года опыта. Хочу.
Чем заниматься меня вообще не сильно парит, просто базы данных это то, что мне первым пришлось освоить, и они мне интересны.
Аноним 20/12/16 Втр 14:04:35  897503
Как сохранить результат выборки в качестве новой таблицы
MySQL Workbench
Аноним 20/12/16 Втр 14:07:54  897504
>>897503
результатом выборки является таблица

>>897492
тада учи все и будешь супер-крутым
Аноним 20/12/16 Втр 14:08:12  897505
>>897503
Попробуй
create table zaloopa as
select ...
Аноним 20/12/16 Втр 14:10:14  897506
>>897505
А гугл говорит, что у вас надо делать так...
CREATE TABLE bar (UNIQUE (n)) SELECT n FROM foo;
Простите, я больше не буду давать ответы по чужим базам данных.
Аноним 20/12/16 Втр 14:14:21  897507
>>897504
Я имею в виду, как сохранить этот результат в схему. Чтобы она там была сохранена в качестве таблицы и я мог производить с ней дальнейшие манипуляции
Аноним 20/12/16 Втр 15:48:12  897556
Хочу вкатиться в базы, умею только в Аксесе делать простенькие базы. С чего начать углубляться?
Аноним 20/12/16 Втр 15:57:49  897558
В какой книжке красиво написано про принципы построения реляционных баз данных? Ну там нормальность всякая и прочие заковыристые термины. Работаю с ораклом, если что, нужно подтянуть теорию.
Аноним 20/12/16 Втр 18:04:28  897649
>>897558
Том Кайт, «Oracle для профессионалов».
Аноним 20/12/16 Втр 18:05:34  897651
>>897649
>Том Кайт, «Oracle для профессионалов»
Нихуя себе, я уже профессионал.
Спасибо тебе большое, почитаю!
Аноним 21/12/16 Срд 12:31:30  898027
Здравствуйте.
Я не хочу, чтобы этот тред тонул.
Если не будете обсуждать базы данных, скачу этот тред к обсуждению своей личности.
Аноним 21/12/16 Срд 14:20:51  898054
>>898027
> алоэ, там зэкач, не постят по базочки
> постите про базочки сами
> я???
Аноним 21/12/16 Срд 14:30:40  898056
>>898027
И сразу главное: хуи сосешь?
Аноним 21/12/16 Срд 15:01:03  898065
Поставил я PostgreSQL, а там вообще нет pg_timezone_names,
как его добавить?
Аноним 21/12/16 Срд 17:43:44  898215
>>897409
Вот про последнюю часть подробнее. Когда какой кусок SQL-запроса выполняется? Может быть GROUP BY ORDER BY PARTITION BY и ORDER BY в одном запросе? И есть какой-нибудь адекватный источник, описывающий механику запроса?
Аноним 21/12/16 Срд 17:59:35  898229
>>862801 (OP)
Может кто с аксесом помочь? Проблемка возникла.
Есть одна база данных ресторана. В одной таблице(заказы) есть поля блюдо, клиент, сотрудник, сумма заказа. Блюдо сделано подстановкой из таблицы "меню". Возможно ли вообще сделать так, чтобы один клиент выбирал несколько блюд, и потом сосчитать стоимость всего заказа с одного клиента?
Аноним 21/12/16 Срд 18:01:54  898233
>>898229
Если чё могу скрины таблиц запилить
Аноним 21/12/16 Срд 18:02:42  898234
>>898229
>один клиент выбирал несколько блюд
Ещё одна таблица, связь "один ко многим", т.е. в первой колонке "id", во второй "id клиента", в третьей "id выбранного им".

Запросы с группировками - в справочное руководство по Аксессу либо к книге "Изучаем SQL", там с примерами.
Аноним 21/12/16 Срд 23:04:04  898456
>>898215
> Когда какой кусок SQL-запроса выполняется
где-то была картинка с наглядной иллюстрацией очередности стейтментов, но проёп куда-то. в обчем сначала все, что до SELECT ... . потом в рамках SELECT все оконные функции (с учетом тех результатов, которые уже скомпонованы), далее ORDER BY, далее SKIP OFFSET / LIMIT или чо там еще есть в СУБДах

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

> адекватный источник
ну если MSDN тебе не подходит, то вот почитай
https://professorweb.ru/my/sql-server/2012/level1/
https://professorweb.ru/my/sql-server/window-functions/level1/
или этот цикл
https://habrahabr.ru/post/255361/
https://habrahabr.ru/post/255523/
https://habrahabr.ru/post/255825/
Аноним 23/12/16 Птн 10:57:02  899367
Что такое SQL*Plus и зачем это нужно?
Аноним 24/12/16 Суб 02:53:39  899888
>>898456
На самом деле я бы мог делать EXPLAIN примеров, но это не объясняет как писать подобные запросы, лал

> ну если MSDN тебе не подходит, то вот почитай
Вторая ссылка то, что нужно. Получается будто оконные функции это супер продвинуто раз мало написано. Странно ведь.

> или этот цикл
Наверное, не так выразился, но проблема с пониманием именно работы оконных функций. Конкретнее, чем отличается обычный GROUP BY field заменённый на OVER (PARTITION BY field)? Как устроен оптимизатор? Как влияет на эффективность ORDER BY в запросе, в окне? Вот подбоное. Как выполняется проекция и фильтрация знаю.

> SELECT все оконные функции (с учетом тех результатов, которые уже скомпонованы), далее ORDER BY, далее SKIP OFFSET / LIMIT или чо там еще есть в СУБДах
Ну вот есть два ORdER BY. Движок БД выполнит обе сортировки по очереди или одну по состваному ключу? Какому ключу приоритет? Какой сортировке приоритет?
Аноним 24/12/16 Суб 09:45:54  899938
>>899888
> или этот цикл
по-моему во второй статье упор на аггрегатные функции, в т.ч. их работа в рамках оконных выражений

> есть два ORdER BY
ну-ну, обзавелся бы примером уже
если ты имеешь ввиду два - один в общем выражении, второй в оконной функции, то, конечно, они будут выполнены оба независимо
если это ORDER BY <field_1>, <field_2>, то, в зависимости от наличия индексов на этих полях. если есть составной и поля указаны в том порядке, что указаны в индексе, то эффективность такой сортировки будет максимальной
Аноним 25/12/16 Вск 16:19:02  900585
a2a15fcbdc[1].png (9Кб, 406x236)
Что за дела, макакены?
Аноним 25/12/16 Вск 17:57:11  900679
>>900585
так BINARY(N) же. или TEXT (или все остальное)
Аноним 25/12/16 Вск 19:24:12  900749
>>900679
Моё увожение.
Аноним 25/12/16 Вск 23:47:25  900971
blob (135Кб, 1214x659)
>>899938
> по-моему во второй статье упор на аггрегатные функции, в т.ч. их работа в рамках оконных выражений
Нет. Агрегатные функции рассматриваются в третьей части. Содержимое этой части уже знаю. Поэтому хотелось бы вот такую табличку как на пикрил. Проблема в том, что нет чёткого понимая работы оконных функций. Вот например открыл для себя ROWS и RANGE, которые как раз объясняют понятие оконности!

> ну-ну, обзавелся бы примером уже
Пример ужасно банален. Пусть у нас есть табличку users, в которую сохраняется вся информация об активности пользователя на сайте на заданную дату.
[code]
CREATE TABLE logs (
id INTEGER PRIMARY KEY,
user INTEGER,
date DATE,
url STRING
);
[/code]
Не думает сейчас о производительности или вроде того. Хочу сосчитать сколько пользователей из тех, что зашли первого декабря, заходило в каждый последующий день до тридцать первого декабя(возврат пользователей). Кажется, что такая задача решится следующим запросом
[code]
SELECT
u.date,
COUNT(DISTINCT u.user) OVER (PARTITION BY u.date)
FROM users u
JOIN (
SELECT
DISTINCT user
FROM users
WHERE date = '2016-12-01'
) tbl ON u.user = tbl.user
WHERE u.date BETWEEN '2016-12-01' AND '2016-12-31'
ORDER BY u.date;
[/code]
Обо что спотыкаюсь я.
1. `u.date` должен быть как в проекции так и в определении окна. Почему?
2. Вот здесь можно перенести ORDER BY в окно?
3. Что в это контексте может считаьт COUNT

Небольшой оффтоп: здесь есть язык какой-нибудь разметки? Что-то вроде Markdown?
Аноним 25/12/16 Вск 23:49:03  900973
Ребзя поясните за базы данных. Вот есть Mysql, Postgresql,Sqlite. Наверное, есть ещё что-то? Почему все суют мне в морду сраный MySQL?
Аноним 25/12/16 Вск 23:50:39  900974
>>900973
Развести бы срач здесь всея двачей с резолючей мол использовать только sqlite или вотэва.
Аноним 26/12/16 Пнд 00:13:30  900993
>>900971
> `u.date` должен быть как в проекции так и в определении окна. Почему?
кто тебе сказал? я не знаю, например

> Вот здесь можно перенести ORDER BY в окно?
можно, но результат не изменится

> Что в это контексте может считаьт COUNT
так как ты возвращаешь только [date] и count(), то на каждую _идентичную_ строку [date] у тебя будет посчитано количество уникальных пользователей. грубо говоря, если только select date from... вернул бы тебе:
2016-12-01
2016-12-01
2016-12-02
2016-12-02
2016-12-03,
то, добавляя count over, ты получаешь, к примеру:
2016-12-01 5
2016-12-01 5
2016-12-02 10
2016-12-02 10
2016-12-03 4

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

> Кажется, что такая задача решится следующим запросом
мне кажется очевидно, наверное, что ты эту задачу таким запросом не решишь. по фану щас посижу над запросом, может чего вымучаю
Аноним 26/12/16 Пнд 00:31:45  901001
>>900993
http://pastebin.com/mGkHnHqt
запрос в два подзапроса (да не обоссут меня местные дба-господа)
если я все правильно понял
Аноним 26/12/16 Пнд 03:21:52  901062
>>901001
Можно ли в этом запросе избавить от лишних подзапросов, используя Window Function и GROUP BY?
Аноним 26/12/16 Пнд 09:05:32  901091
>>901062
ну я не вижу предпосылок к этому. может и есть
а главное, что ты группировать собрался?
Аноним 26/12/16 Пнд 13:00:53  901200
>>897033 Снова на связи.

Надеюсь в этот раз на вашу помощь.

У меня есть например таблица с платежами, упростим её до 4 столбцов, всё остальное шелуха.

id_платежа, id_юзера, сумма, дата.

Как мне заселектить с этой таблицы юзеров, который насовершали платежей НА СУММУ НЕ БОЛЬШЕ Х да еще и в период С Дата_1 по Дата_2
?

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

Как в общем мне выдрать только пользователей, которые в сумме насовершали платежей от 0 до 500, за этот период?
Ну и потом далее по другим категориям от 501 до 1000 например.

Аноним 26/12/16 Пнд 13:34:47  901217
>>901200
всем спасибо, уже сам справился, то чувство когда википедия полезнее оказалась чем оверфлоу, аве википедия!
https://ru.wikipedia.org/wiki/Having_(SQL)
Аноним 26/12/16 Пнд 13:53:52  901229
>>901217
можэ лучше пару статеек почитаешь по sql? или ты упорствуешь?
Аноним 26/12/16 Пнд 14:24:40  901238
>>901229
Я периодически пытаюсь, даже за sql-ex садился, просто сложности с мускулем возникают не чаще раза в месяц, и то скорее потому что нужно вывалить какие-то голые селекты, а остальное время я тупо пишу трешак вида
$this->db->select('*');
$this->db->from('mnogo_hueti');
$this->db->where('type !=', $huita);
$this->db->where('id <', $id);

В общем что я пытался донести: на работе много дрочева на рутину, которая не способствует обучению особо, далее если я и сажу учить, то через 2 недели уже забываю считай. Ну и как-то так, спасибо за совет энивей.
Аноним 26/12/16 Пнд 14:40:39  901244
>>901238
берешь перед сном или в пути читаешь без задней мысли. даже если не поймешь, то в нужный момент вспомнишь, что что-то эдакое да прочитал когда-то
Аноним 26/12/16 Пнд 16:50:50  901320
Здравствуйте.
Кем престижнее быть, DBD или DBA? Ну и по деньгам и перспективам, конечно.
Аноним 26/12/16 Пнд 18:41:15  901399
maxresdefault.jpg (64Кб, 1280x720)
>>901320
Аноним 27/12/16 Втр 01:26:46  901651
>>901217
Поддвачну. Википедия оказывается лучше в данном случае из-за концентрации информации, а в статейках и книжка аворы растекаются мыслью, что теряешь концентрацию.

Вот рили. Не видел ни одной книжки по кавайному SQL да и не по кавайному тоже
Аноним 27/12/16 Втр 04:52:38  901708
Поясните за ОРМ, hibernate выглядит удобным, мне вот проект выдали с ним, ща блин разбираться что за зверь. Раньше просто DAO использовал.
Аноним 27/12/16 Втр 10:46:56  901809
>>901708
срань, позволяющая работать с базочкой и таблицами как с ООП-объектами, не подмешивая языковые запросы в код, а в некоторых экзотических случаях вообще не завися от конкретной СУБД или ее особенностей
Аноним 27/12/16 Втр 11:26:12  901843
>>901320
DBDA
Аноним 27/12/16 Втр 17:50:54  902045
Не могу найти нигде в продаже Томаса Кайта для профессионалов, поэтому обращаюсь к вам.
Может завалялся у кого-нибудь в ДС и продадите мне либо подарите? Очень хочу бумажную версию.
Или же посоветуйте хороший аналог, который реально купить.
Аноним 27/12/16 Втр 21:35:59  902172
sql4.png (79Кб, 1900x1034)
sql5.png (30Кб, 738x584)
Что за дела? Накатил такую же базу данных и у меня получается только такой ответ. Откуда еще два 2 значения?
Аноним 27/12/16 Втр 21:39:05  902175
>>902172
Нужно было DISCINT дописать.
Аноним 28/12/16 Срд 08:53:03  902355
>>902172
Аноним 28/12/16 Срд 09:59:40  902375
Oracle PL/SQL
Каковы преимущества использования %type по сравнению с обычным объявлением переменной? Если я знаю, что в переменной будет храниться только значение из одной таблицы, я всегда должен задавать тайп? А технически для базы это чем-то отличается или смысл в том, что для объявления копируется тип данных их таблицы?
Если у меня есть табличный тип, я могу каким-то образом сделать select * into из всей таблицы? Или же только циклом заполнять каждое отдельное значение?
Аноним 28/12/16 Срд 13:23:42  902512
>>902375
Если изменится тип у колонки, не нужно будет переписывать объявление же.
Чтобы сделать
>select * into из всей таблицы
объяви переменную tablename%rowtype.
Аноним 28/12/16 Срд 14:15:37  902536
>>902512
И не подумал, действительно очень удобно!
Роутайп я знаю. У меня вопрос был как в табличную переменную, состоящую из роутайпов, записать одним запросом всю таблицу.
Ну вот у меня есть type t_type is table of t_table%rowtype, я создаю такую переменную. Как в нее добавить сразу все строки из таблицы? Или никак кроме loop по всем строкам нельзя? Наверно, нельзя(
Аноним 28/12/16 Срд 14:47:42  902568
Здравствуйте. Мне нужно научиться оптимизировать запросы в СУБД Oracle. Знать всевозможные join'ы, уметь читать план запроса. С чего начать?
Аноним 28/12/16 Срд 17:02:38  902660
А правда, что все резервные слова в sql должны писаться капсом? Непривычно пиздец, я год маленькими писал...
Сделал автореплейс маленьких на большие в PL/sql девелопере, буду потихоньку привыкать.
Аноним 28/12/16 Срд 17:21:47  902672
>>902660
неправда
Аноним 28/12/16 Срд 17:24:34  902675
>>902660
>>902672
вот писать все с квадратными скобками - это непривычно пиздец. а капс такое, дело вкуса
Аноним 28/12/16 Срд 20:58:02  902753
Какой язык программирования учить, когда освоил базы данных? Я сначала хотел делфи, а кореш-программист-фрилансер-300к/сек сказал, что это говно язык.
Аноним 28/12/16 Срд 21:03:22  902758
>>902753
C++
Аноним 28/12/16 Срд 21:09:09  902763
>>902758
Почему его, а не джаву, например?
Аноним 28/12/16 Срд 21:10:57  902765
>>902763
ну учи джаву хотя это говно
Аноним 28/12/16 Срд 21:27:16  902770
Такая тема. Подключаюсь к БД на постгре, и не могу ничего записать в базу. Испльзую Entity, и когда вызываю SaveChanges();, оно срет эксепшн:
---
System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()</StackTrace><ExceptionString>Npgsql.NpgsqlException:
нулевое значение в колонке "PK_Kol" нарушает ограничение NOT NULL
Severity: ОШИБКА
Code: 23502
---
Хотя очевидно, что там не НУЛЛ. Короче, как все это дело соединить, Студию, Entity и PostgreSQL? Я в этом не очень, просто лабу делаю.
Аноним 28/12/16 Срд 21:44:41  902777
>>902770
Точнее энтити, или кто там, похоже не передает первичный ключ, хз почему.
Аноним 28/12/16 Срд 23:55:09  902821
>>902777
сейчас бы установить спиритический сеанс и понять что не так
Аноним 29/12/16 Чтв 00:57:17  902848
Здравствуйте, выше в треде прочитал про EAV

Решил в следующем проекте попробовать его реализовать для тренировки/понимания.

И вот до чего я пока дошел, значит есть одна таблица в которой только 1 столбец: id
и он типа уник. И собственно всё.

Во второй таблице свалка гигантская, и если скажем элемент с id = 1 - это как бы юзер, то там лежат такие вот элементы:

id---element_id----name--------value
1--------1--------username-----петя
2--------1--------password-----хуетя
3--------1--------balance-------123
4--------1--------avatar--------petya.png

Собственно как разруливаются подводные камни с разными типами данных? Под каждый тип использующийся в твоей системе хуячить отдельную таблицу, в которой будет value числовое например, текстовое, дробное и так далее и потом все эти таблицы джойнить?

И как превентить ошибки уровня: у меня в базе оказалось что у юзера с id 1 два элемента name с разными валуе лежат, вот что делать в таких ситуациях?
Аноним 29/12/16 Чтв 07:28:47  902930
>>902821
Создал проект, через нугет подключил
EntityFramework
Npgsql
Npgsql.EntityFramework
Поставил dotConnect Express for PostgreSQL, подключился к базе. App.config взял отсюда http://rob.conery.io/2014/02/05/using-entity-framework-6-with-postgresql как и все выше, пофиксил connectionStrings. Ну и дальше код такой же, как по ссылке, вписал свою табличку и поля. И вот когда идет
var pet = new Pet { ID = 1, Name = "Stevie" };
db.Pets.Add(pet);
db.SaveChanges();
SaveChanges отсылает какую-то хуйню, там нет первичного ключа, вот такое:
INSERT INTO "public"."Street"("Name") VALUES (E'Test eba') RETURNING "PK_Pet"
Если вставлять через запрос напрямую, в пгАдмине, все работает.
Аноним 29/12/16 Чтв 10:16:04  902957
>>902848
> как разруливаются подводные камни с разными типами данных
можно да, использовать отдельные столбцы, но если мы говорим только об уровне БД, то тяжко представить, как потом использовать значения результата запроса. в ооп приложении это все достаточо круто делается
также можно использовать строковую колонку, а потом кастировать в нужный тип. но тоже так себе подход

> как превентить ошибки уровня
уникальный составной индекс (userid, name)
Аноним 29/12/16 Чтв 10:18:30  902958
>>902930
у тебя конфигурация дбконтекста предусматривает подстановку значения в ID? или ты не используешь entitytypeconfiguration<>?
Аноним 29/12/16 Чтв 11:05:02  902972
>>902536
Можно. Гугли bulk collect into
Аноним 29/12/16 Чтв 12:32:52  903002
>>902848
>Посоны я прочитал про очки, надел их и теперь ничего не вижу. Что делать?
Снять их.
EAV это костыль для динамического количества столбцов. Ты пытаешься построить своё приложение вокруг этого костыля. Это просто глупость. В твоём случае (с пользователем) это просто не нужно.

>как разруливаются подводные камни с разными типами данных?
Никак. Отдельная таблица на каждый тип - это ещё один костыль для костыля.

Как же тогда хранить сущности с различными и разнотиповыми полями?
Использовать БД преднозначенные для этого: та же монга или solr|elasticsearch если нужен ещё и полнотекстовый поиск|фасеты.

Но ваши NoSQL базки не могут в транзакции/джойны. Что делать?
Использовать костыль EAV.
Аноним 29/12/16 Чтв 15:26:50  903147
>>862801 (OP)
> решаем простые задачки на -T-SQL на собеседованиях
Я почитал sql.ru. Сейчас на собеседованиях на t-sql надо судоку решать.
Аноним 29/12/16 Чтв 19:59:30  903281
>>902958
Не использую, да.
Аноним 29/12/16 Чтв 20:15:46  903292
>>903281
pogodee, у тебя таблица Street тут какое отношение к этому имеет?
Аноним 29/12/16 Чтв 21:10:31  903323
>>903292
Не не, это я обосрался с экспериментами, вот так вот для Pet: INSERT INTO "public"."Pet"("Name") VALUES (E'Test eba') RETURNING "PK_Pet"
Аноним 29/12/16 Чтв 22:42:10  903341
>>862801 (OP)
MDX-бомжара вкатывается и селектит говно на ось 0 и помои на ось 1 из помойки
Аноним 30/12/16 Птн 18:36:18  903703
Здравствуйте. Смогу ли я из разработки на (PL/)sql перекатиться в администрирование баз данных?
И стоит ли вообще?
Мне почему-то кажется, что это будет интереснее для меня. Больше ответственность, больше сфера деятельности.
Я почитал Томаса Кайта и мне стало очень интересно. Хочется досконально изучить структуру бд.
Что вы мне скажете на это? И как вообще в карьерном плане это будет? Кому платят больше, кого больше ценят?
Аноним 31/12/16 Суб 05:26:58  903992
Ребята, как замутить разницу в зп текущего и предыдущего сотрудника? Я так понимаю, это должно делаться через аналитческую функцию типа SUM(), только мне нужна разница.
Аноним 31/12/16 Суб 13:42:36  904089
>>903992
sum какое отношение имеет к разнице?
в mssql 2012 и далее есть аналитические функции lead() и lag()
более общее решение в лоб - замутить выборку, сджойнить ее на саму себя со смещением в 1 строку и считать разницу столбцов которые is not null
скорее всего можно применить оконные функции, но пока непонятно, исходя из задания, как
Аноним 01/01/17 Вск 21:05:00  904443
09563024321.png (92Кб, 1382x1286)
Подскажите, где я обосрался.
Аноним 01/01/17 Вск 21:07:18  904444
09563024321.png (118Кб, 1624x1286)
Опять обосрался, вот верная.
Аноним 01/01/17 Вск 21:55:43  904466
>>904444
where color = 'y', по ходу, надо вынести во внешний запрос. хотя я хз, што там у тебя по заданию
Аноним 01/01/17 Вск 22:36:35  904481
>>904466
По заданию нужно вывести производителя самого дешевого цветного принтера. Если вынести во внешний, не выводится вообще ничего.
Аноним 02/01/17 Пнд 10:01:01  904592
>>904481
а зачем тебе подзапрос, если ты делаешь джоин на таблицу принтеров?
Аноним 02/01/17 Пнд 12:00:03  904613
>>904481
Тебе нужно where не по price а по model.
Что-то типа
Where model in (select model from printer order by price asc limit 1)
Ну или с подзапросом.
Аноним 03/01/17 Втр 15:03:23  905132
На каких задачах Монго будет быстрее Постгре?
Аноним 03/01/17 Втр 21:23:49  905419
>>905132
чатики какие-нибудь
Аноним 03/01/17 Втр 21:28:03  905422
sql7.png (41Кб, 892x912)
09563024321.png (168Кб, 2368x948)
Опять застрял, хз что можно применить. Алсо, где можно еще теорию с задачами позубрить, sql-ex'а явно недостаточно.
Аноним 03/01/17 Втр 22:02:09  905467
>>905422
у тебя тут много подзапросов и они не очень полезные, мягко говоря. тебе нужно, по всей видимости, заюзать функцию ранжирования

как ты проходишь эти тесты? у меня что ни ответ, то сходится на тестовой БД, но валится на проверочной. причем я даже в малейшем отношении хз, что именно не так с запросом
Аноним 04/01/17 Срд 14:59:16  905782
>>905467
>причем я даже в малейшем отношении хз, что именно не так с запросом
Я обычно начинаю в пейнте рисовать результат каждой строчки. Конечно лучше в уме такое делать, но пока не получается.
Аноним 04/01/17 Срд 17:59:38  905880
>>905782
ну а как это мне поможет? я стянул дамп основной базы данных и добавил, по мере своей догадки и фантазии еще данных. это похоже на попытку угадать, чем был обдолбан автор.
еще в факе там написано что спустя некоторое (какое-то) время появляется подсказка к заданию. вкладка была открыта около часов двух, активность я на ней проявлял порядка 20-30 минут в сумме. сколько ж дожидаться нужно лол?)
Аноним 04/01/17 Срд 19:13:45  905955
https://dbhub.io

Че думаете?
Аноним 05/01/17 Чтв 17:12:37  906494
11.png (87Кб, 1366x768)
12.png (91Кб, 1366x768)
13.png (88Кб, 1366x768)
14.png (85Кб, 1366x768)
Смотрите какая хуйня. Пикрелейтед 4 таблицы из которых я хочу получить данные в результате запроса. Запрос нихуя не работает, хотя и ошибок не выдает. А еще раньше он работал, а вчера внезапно перестал. ЧЯДНТ?

Запрос: http://pastebin.com/p0TQu1Mf
Аноним 05/01/17 Чтв 17:26:59  906503
>>906494
Насколько я понял, все херится, когда я джойню lifetime. Но почему?
Аноним 05/01/17 Чтв 18:09:50  906548
>>906503
У тебя в первой таблице айдишники не пересекаются с последней.
Аноним 07/01/17 Суб 21:31:52  907864
>>905880
>сколько ж дожидаться нужно лол
Хз где ты это прочитал, гл подсказка появляется, когда ты близок к правильному ответу.
Аноним 07/01/17 Суб 21:32:57  907865
>>907864
в разделе faq нописано
Аноним 08/01/17 Вск 14:09:09  908202
>>862801 (OP)
Доброго всем дня. Посоветуйте какую-либо литературу по БД и Microsoft SQL, начиная с нуля. Желательно на русском, но если есть более годные аналоги на английском, посоветуйте их. Спасибо
Новую таблицу из двух Аноним 08/01/17 Вск 18:15:37  908313
blob (81Кб, 1366x768)
blob (78Кб, 1366x768)
Добрый день.
Подскажите пожалуйста, в какую сторону смотреть чтобы решить такую проблему.
Смотрим картинку и видим Первый и Третий столбец.
Они не связаны друг с другом.
Т.е видно что выбран 201601 в первом
, но при этом в третьем столбце вылезли дни 201602.

Как установить соответствие между полями?
чтобы 201601 -> выбирал все дни января.

Аноним 08/01/17 Вск 23:13:42  908504
>>908313
устанавливать соответствие между месяцами первого и третьего столбцов
Аноним 09/01/17 Пнд 01:48:03  908565
>>900973
Всем кто советует mysql бей в щщи с вертушки. Мускуль это сетевой табличный движок для порносайтов. Серьезные базы это ORACLE, MS-SQL, PostgreSQL. Я бы учил постгрес потому что оракл отовсюду выкидывают (дораха!) а мс используется гораздо реже.
Аноним 09/01/17 Пнд 04:53:01  908581
вечер в хату пацаны и пацанки (если есть такие здесь).
есть вариант вкатиться в IT с нуля.
от меня требуется изучить ORACLE JavaScript Extension Toolkit (JET). ВОПРОС: эта хуита будет востребована в будущем? или ну его нахуй?
вопрос задал здесь, а не в JS треде, потому что решил, что Вам всем это ближе. там они наверное больше по сайтам угарают. а эта шляпа про энтерпрайз (я так понимаю вот это вот всё)
Аноним 09/01/17 Пнд 06:31:46  908592
PostgresSQL как лучше начать учить? Документация слишком огромная, есть ли в более сжатом виде все?
Аноним 09/01/17 Пнд 11:12:41  908643
>>908592
Что значит учить postgres?
Аноним 09/01/17 Пнд 14:50:54  908793
>>908643
шоб писать такие бд, чтобы шишка дымилась просто
Аноним 10/01/17 Втр 20:07:54  909449
9a8g01k341.png (32Кб, 1300x524)
Подскажите, как можно получить такой результат?
Аноним 10/01/17 Втр 21:35:07  909490
>>909449
UNION + GROUP BY, если мне память не изменяет. Полгода, как завязал с базами.
Аноним 10/01/17 Втр 21:43:51  909493
>>909490
Если я так сделаю, то просто вставятся Бисмарк и Теннесси в первую таблицу, причем Теннесси будет две строчки с значениями 2, 1. А нужно, чтобы значение Num_ships именно сложилось.
Аноним 10/01/17 Втр 21:45:36  909494
>>909493
Ты просто жопой читаешь и нихуя не понимаешь, что делаешь.

select `class`, sum(Num_ships) from (select from t1 union select from t2) t group by `class`;
Аноним 10/01/17 Втр 21:46:31  909495
Screenshot20170[...].png (15Кб, 630x227)
>>909494
Пик отвалился.
Аноним 10/01/17 Втр 21:49:06  909496
>>909495
>>909494
Бля, я ещё union all забыл. Ну разберешься, короче.
Аноним 10/01/17 Втр 21:53:15  909498
>>909496
Понял, спасибо.
Аноним 12/01/17 Чтв 13:28:53  910422
>>862801 (OP)
Посоны, нужна помощь. Есть база данных postgres. Есть простой скрипт для вставки данных

WITH t1 AS (
...
)
INSERT INTO entryphone
SELECT FROM t1
--ON CONFLICT ON CONSTRAINT pk_addr_dt_cd DO UPDATE SET code = ephone;

Работает без закомментированной части, а если раскомментить, то выдаёт ошибку:
>ОШИБКА: столбец "ephone" не существует
> Подсказка: Столбец "ephone" есть в таблице "
SELECT*", но на него нельзя ссылаться из этой части запроса.

Но мне нужно, чтобы вставка осуществлялась с проверкой ограничения и в случае нарушения уникальности колонка ephone обновлялась. Как пофиксить?
Аноним 12/01/17 Чтв 13:31:05  910423
>>910422
Блядь, забыл про разметку макабы. Поправляю.

WITH t1 AS (
...
)
INSERT INTO entryphone
SELECT id, addr, ephone FROM t1
--ON CONFLICT ON CONSTRAINT pk_addr_dt_cd DO UPDATE SET code = ephone;

Работает без закомментированной части, а если раскомментить, то выдаёт ошибку:
>ОШИБКА: столбец "ephone" не существует
> Подсказка: Столбец "ephone" есть в таблице "SELECT", но на него нельзя ссылаться из этой части запроса.

Но мне нужно, чтобы вставка осуществлялась с проверкой ограничения и в случае нарушения уникальности колонка ephone обновлялась. Как пофиксить?
Аноним 17/01/17 Втр 11:38:35  913658
>>862801 (OP)
Такие вопросцы:

Где phpMyAdmin хранит комментарии к ячейкам таблицы?
Участвуют ли они в запросах?
Есть ли разница в производительности запросов с ними / без?

Какой движок (MyIsam, InnoDb, другой?) подойдет лучше для ситуации:

2 таблицы, очень активная выборка из обеих (иногда даже ВСЁ берется), примерно 100000 записей в год в каждую (таблицы обнуляются каждый год! То есть максимум, который в них хранится = приблизительно 100000 записей).

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

Я читал про статические таблицы, насколько понял, привел структуру полей в соответствие требованиям статической таблицы: поля типов char, int, decimal, date, timestamp (Если это важно для предыдущих вопросов).

Нормализация 3NF (Если это важно для предыдущих вопросов).
Аноним 17/01/17 Втр 11:40:03  913659
>>913658
Извиняюсь за сажу.
Аноним 18/01/17 Срд 12:21:18  914425
sql32.png (25Кб, 1134x594)
ships.png (146Кб, 2472x1872)
Заебала, эта задача. Помогите плиз.

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

Не проходит на проверочный базе.
Аноним 18/01/17 Срд 13:42:18  914476
>>862801 (OP)
весь срач - от незнания, почитай документацию к конкретной субд, и вопросы отпадут как и какие ключи создавать
Аноним 18/01/17 Срд 14:34:55  914521
>>914425
где ты берешь эти задачи?
Аноним 18/01/17 Срд 18:56:39  914703
>>914521
sql-ex
Аноним 18/01/17 Срд 22:28:16  914857
Посоветуйте что-нибудь годного по mongo db. Видосики, книги и етц.
Аноним 18/01/17 Срд 22:53:48  914874
>>914857
> годного
Из годного могу посоветовать только удалить монгу нахуй.
Аноним 18/01/17 Срд 23:01:01  914883
>>914874
И что ты посоветуешь поставить?))00
Аноним 19/01/17 Чтв 00:03:00  914904
>>914883
riak
Аноним 19/01/17 Чтв 03:05:19  914973
>>914857
Внезапно официальная документация. И блог разработчиков.
Аноним 19/01/17 Чтв 22:02:13  915400
>>862801 (OP)
Аноны, поясните положняк за джойны + что можно почитать по SQLю нубу?
Аноним 20/01/17 Птн 00:06:39  915485
>>915400
>положняк за джойны
wikipedia.org
>что можно почитать по SQLю нубу?
sql-ex.ru
Аноним 20/01/17 Птн 03:03:23  915517
2017-01-20030237.jpg (158Кб, 1335x555)
>>914425
Аноним 20/01/17 Птн 12:40:06  915644
Принес вам тестовое.
Общие требования: PHP (5.4 - 7.0), MySQL, Опыт работы с фреймворком Yii, JQuery.
Будет плюсом: Javascript prototype, es6, npm.

ТЗ

1) на SQL

Даны 3 таблицы

users (id, name, email)
products (id, name, price)
orders (id, id_user, id_product, create_at(Timestamp))

Юзер (users) купил 4 товара (products) и в таблицу orders попали 4 записи.
Напиать 1 sql запрос:
Вывести сумму всех заказов пользователя за каждый день, если известен только email покупателя.
Аноним 20/01/17 Птн 13:08:26  915668
>>915644
это только часть тестового или зачем там требования к бекенду?
Аноним 20/01/17 Птн 13:33:56  915685
Добрый день.
1. Читаю всяких Кайтов, Дейтов и мне очень интересно. Прям хотелось бы все эти базы данных изучить изнутри и понимать, как там и что. Реляционная модель, вся хуйня.
2. Заканчиваю магистратуру хорошего технического вуза, встает вопрос об аспирантуре, потому что отсрочки от армии у меня нет.
Есть ли в каких-нибудь московских вузах аспирантура, специализированная на базах данных? Гуглить я, конечно, буду, но здорово, если есть что-то известное и у всех на слуху. А еще идеально, если там не очень много нужно учиться и в смогу это делать без отрыва от своей основной работы.
Аноним 30/01/17 Пнд 00:34:07  921781
Взываю к светилам. Это пиздец, доебал меня этот lock timeout уже.
Суть: таблица T
каждые пять минут по крону php скрипт ищет строки с NULL в определенной колонке. Затем в foreach делаем UPDATE SET WHERE id=определенному id

рядом другой крон агрегирует из этой таблицы посредством INSERT INTO T_AGR SELECT ... FROM T WHERE id в определенном диапазоне

Диапазон второго крона включает id первого крона

Сама система постоянно делает INSERT INTO T новых записей

Как это всё может выдавать lock timeout, с учетом того что по раздельности все это прекрасно работает?
Аноним 30/01/17 Пнд 00:43:39  921787
>>921781
> Затем в foreach делаем UPDATE SET WHERE id=определенному id
Пиздец какой. Открой для себя batch-операции.
> рядом другой крон агрегирует из этой таблицы посредством INSERT INTO T_AGR SELECT ... FROM T WHERE id в определенном диапазоне
Откроей для себя view.
> Диапазон второго крона включает id первого крона
> Сама система постоянно делает INSERT INTO T новых записей
> Как это всё может выдавать lock timeout
Действительно.
Аноним 30/01/17 Пнд 00:55:39  921791
>>921787
>Действительно.
Раз для тебя всё очевидно, тогда распиши мне пожалуйста какие блокировки за какими тут идут, потому как я не понимаю!
Update - X,
insert into select - X,
insert - X
Где тут происходит взаимоблокировка?
Аноним 03/02/17 Птн 15:15:47  925441
Не подскажите, какой из вариантов написания запроса более правильный точки зрения фен-шуя?
Всё вместе:
$request_copi_from_1c = "UPDATE `$name_table` SET
`Оплата больничных листов` = ( SELECT `Оплата больничных листов` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Оплата больничных листов за счет работодателя` = ( SELECT `Оплата больничных листов за счет работодателя` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Оплата по среднему заработку` = ( SELECT `Оплата по среднему заработку` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Оплата отпуска по календарным дням` = ( SELECT `Оплата отпуска по календарным дням` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Отпуск дополнительный` = ( SELECT `Отпуск дополнительный` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Пособие по уходу за ребёнком до 1.5 лет` = ( SELECT `Пособие по уходу за ребёнком до 1.5 лет` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Дни неоплачиваемые согласно табелю` = ( SELECT `Дни неоплачиваемые согласно табелю` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Месячная премия` = ( SELECT `Месячная премия` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Компенсация отпуска при увольнении по календарным дням` = ( SELECT `Компенсация отпуска при увольнении по календарным дням` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Аренда автомобиля` = ( SELECT `Аренда автомобиля` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Всего удержано` = ( SELECT `Всего удержано` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Удержание по исп. листу процентом` = ( SELECT `Удержание по исп. листу процентом` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Удержание по исп. листу процентом до предела` = ( SELECT `Удержание по исп. листу процентом до предела` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Удержание по исп. листу фикс. суммой` = ( SELECT `Удержание по исп. листу фикс. суммой` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`НДФЛ` = ( SELECT `НДФЛ` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Всего выплачено` = ( SELECT `Всего выплачено` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Перечислено в банк (аванс)` = ( SELECT `Перечислено в банк (аванс)` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Через кассу (аванс)` = ( SELECT `Через кассу (аванс)` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Перечислено в банк (под расчет)` = ( SELECT `Перечислено в банк (под расчет)` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Через кассу (под расчет)` = ( SELECT `Через кассу (под расчет)` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id ),
`Конечное сальдо` = ( SELECT `Конечное сальдо` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id )
";


Или каждый запрос лучше сделать отдельно для каждого столбца, типа
$request_copi_from_1c = "UPDATE `$name_table` SET `Компенсация отпуска при увольнении по календарным дням` = ( SELECT `Компенсация отпуска при увольнении по календарным дням` FROM $table_1c WHERE $table_1c.`Организация` = $name_table.`ФИО сотрудника` GROUP BY $name_table.id )";
для каждого столбца.

У меня сейчас работает оба варианта (в дублирующихся функциях, лол), нужно оставить один вариант, а второй прибить.
Аноним 03/02/17 Птн 16:24:59  925485
>>925441
Если второй, то заверни в транзакцию. Вообще мне кажется ты делаешь что-то не то.
Аноним 03/02/17 Птн 16:30:06  925486
>>925485
Этот поезд в огне, но по прежнему едет в Бобруйск!

А в транзакции я не умею. В планах освоить PDO, но сильно позже. Надо сначала хотя бы расчленить общий код на отдельные функции и немного оптимизировать их.
Аноним 03/02/17 Птн 21:37:25  925805
>>862801 (OP)
анонимчики, посоветуйте годных книг по sql для студента-говноеда-идиота, пожалуйста.
Аноним 03/02/17 Птн 22:39:19  925886
>>925805
Семен Семеныч, SQL для студентов.
Издание для говноедов-идиотов.
Аноним 04/02/17 Суб 08:10:33  926092
>>925486
У тебя там куча идентичных селектов. Это полное говнище. Делай один раз такой селект, не как значение для SET, а как таблицу для FROM.
Аноним 04/02/17 Суб 09:38:05  926131
Если у меня postgre вместо h2, это значит я сел на бутылку?
Аноним 04/02/17 Суб 14:10:43  926276
Аноны, нужна помощь.

Каким-то образом в MS SQL Server 14 случилось так, что не селектится одна из таблиц. Вообще не селектится. В чём может быть причина?

До этого было всё отлично, структуру не трогал, лишь мержил в неё обновленные цифры, но после этого всё заебись было.
Аноним 04/02/17 Суб 15:32:37  926307
2017-02-0415-29[...].png (21Кб, 765x189)
2017-02-0415-29[...].png (26Кб, 819x200)
Мужики, что это за хуйня? SQLная процедура? Помогите разобраться с синтаксисом. Обычные SELECTы я нормально пишу, но эта хуйня меня ввела ступор.
Аноним 04/02/17 Суб 15:37:17  926308
>>926307
Я кажется начинаю прозревать. По ходу это SASовская процедура, поэтому с SQLным синтаксисом нихуя и не сходилось. Знатоки подтвердите/опровергните плз.
Аноним 04/02/17 Суб 15:44:11  926312
>>926307
из sql-поддерживаемого там только if и set
Аноним 04/02/17 Суб 15:46:46  926315
>>926312
Т.е. по простому говоря это нихуя не SQL процедура? Кстати в SQL все же можно писать PROC вместо PROCEDURE все-таки.
Аноним 04/02/17 Суб 15:53:17  926318
>>926315
ну и output некоторые реализации поддерживают. но смысл в том, что это да, не синтаксис sql
Аноним 04/02/17 Суб 16:13:47  926338
Аноны, есть web прожект с Postgre, нужно будет хранить кучу изображений. Стоит ли заморачиваться и складировать их в БД(не советуют так делать, но мало ли), или же всё таки лучше в файловой системе их харнить?
Аноним 04/02/17 Суб 16:42:39  926360
>>926338
тебе ж нормальным языком не советуют этого делать, какие еще вопросы? тем более, что данных будет много
Аноним 04/02/17 Суб 20:27:29  926527
ЕОТ
Есть одна таблица.
(user_id INT, category_id INT, amt INT)
Строка соответствует действию пользоватеся user_id, тип действия category_id , цисловая характеристика amt. Пользователь может совершить несколько действий - user_id могут повторяться.
Мне дан список из категорий с1, с2, с3...
Требуется создать сводную таблицу по всем пользователям с полями:
user_id, min_c1, avg_c1, min_c2, avg_c2,.....
Если бы нужно было сделать только для с1, я бы сделал
SELECT user_id, min(ant), avg(amt) FROM Table WHERE category_id=c1 GROUP BY user_id
Для пары категорий можно было бы сделать как выше и объединить JOINом. Но как делать, если категорий штук 20? Хуярить 20 JOINов? Может что по-лучше подскажите?


Аноним 04/02/17 Суб 20:31:45  926528
>>926527
PIVOT + dynamic SQL
kek
Аноним 04/02/17 Суб 23:26:16  926688
>>926527
>>926528
Не совсем понял, зачем там динамик скл.
Двачую PIVOT, но это тока в том Случае, если субд афтора в нее умеет.
А, если нет, то можно нахуярить кучу
CASE WHEN category_id = 1 THEN ...
В каждое поле, соответствующее требуемой категории.
Предпочитаю не бзать динамик скл там? Гле можно без него обойтись, ибо дебажить это дело потом - то еще удовольствие.
Аноним 04/02/17 Суб 23:33:18  926696
>>926276
>мёрджил
This
Вероятно, она у тебя залочеа мерджем. Выполни оцедуру sp_who2 и посмотри, какая сессия лочит сессию с селектом из таблички, все поймешь.

Если ничего не лочит, думаю, пора дроп-креэйтить индексы на ней.
Аноним 04/02/17 Суб 23:33:35  926697
>>926527
MIN(case category_id when 1 then amt end)
Аноним 05/02/17 Вск 10:14:55  926915
>>926688
список категорий не детерминирован же. или, если автор имеет ввиду, что их 20 и он их все знает наизусть, - тогда оке. в случае хоть какой-нибудь динамики ты же не сможешь правильно написать PIVOT (... FOR ColumnName IN ([Value1], [Value2]))... я ведь прав, чи не?
Аноним 05/02/17 Вск 11:38:36  926939
>>926696
Спасибо. Ничего не лочит. Походу серьезно что-то с индексами.

А в чем причина может заключаться? Я уже раз 100 мержил новые цифры - проблем не было
Аноним 05/02/17 Вск 11:49:02  926943
>>926939
>>926696
Всё ещё веселее теперь. Пришел с утра - селект ещё идет. В общем, селектится бесконечно вообще, походу. Впервые вижу такую хуйню.
Аноним 05/02/17 Вск 14:15:34  927032
>>926943
В чем угодно, мы же не знаем твою архитектуру. Статистика могла изи засраться.
Аноним 05/02/17 Вск 14:44:55  927051
>>926915
Если список не детерминирован, тогда не могу представиь, какой профит от того, чтобы выводить их просто в селект горизонтально.
Или такое нужно для ssrs(или аналоге), в котором, все равно, есть такой элемент, как матрица, который сам разворачивает все, что душе угодно, или эти данные будут уложены в таблицу для последующего использования, но, в таком случае, какой смысл в неопределенном количестве полей таблицы?
В общем, >>926527, какая цель запроса? Что дальше с этими данными будет происходить?
Аноним 05/02/17 Вск 15:05:51  927070
>>927051
список заранее определен, можно считать, что описанная мной таблица будет сформирована всего один раз.(на деле может два или три)

Самый прикол, что я пару раз делал pivot в экселе и в питоне, но так до конца и не въехал как это все работает.

Думаю делать через MIN(case category_id when 1 then amt end) как этот >>926697 анон посоветовал, т.к. данный способ мне гораздо понятнее.
Аноним 05/02/17 Вск 15:29:44  927081
>>927070
Что ты как не посан. Изучи новое на простом примере, все поймешь и будешь знать полезную фичу, на самом деле, ничего сложного.
Пайвот круче, чем куча кейсов.
Аноним 05/02/17 Вск 15:41:43  927085
>>927081
SELECT user_id,
1,2,3
FROM Table1
PIVOT
(AVG(amt)
FOR category_id
IN (1,2,3))

Че-то я даже на простом примере туплю. Вот что тут не так?
Аноним 05/02/17 Вск 15:56:02  927090
>>927085
Ок, я понял что не так.
Аноним 07/02/17 Втр 00:17:40  927977
a1dn1z6700b.jpg (89Кб, 649x1123)
Что такое индексирование в SQL и как оно может ускорить выполнение запросов? Может кто объяснит на пальцах или даст ссыль, где годно объясняют.
Аноним 07/02/17 Втр 01:08:46  927988
>>927977
индексирование не является частью языка SQL и для реляционных хранилищ справедливо ровно настолько, насколько и для всего остального
индекс - структура данных, ставящая перед собой задачу ускорения поиска элемента/ов.

собственно, на этом все. связь между быстрым поиском и увеличением производительности запроса, я думаю, найдешь
Аноним 07/02/17 Втр 14:10:39  928161
>>862801 (OP)
Делаю БД (MSSQL) и клиентский интерфейс к ней (c#). Как правильно реализовать механизм добавления новых записей в таблицы? Хотелось бы не передавать голый SQL-код в базу, а запускать для этого хранимые процедуры. В идеале - иметь в клиентском приложении какой-нибудь метод по типу ExecDMLProcedure который будет принимать на вход имя процедуры и набор параметров. Ну и запускать на сервере процедуру с этими параметрами соответственно. Так вот собственно уточняю вопрос - как сделать так чтобы не писать для каждой хранимой процедуры еще и свой метод, а сделать процесс передачи набора параметров универсальным - например передавать один параметр в виде структуры, с которой уже БД сама будет разбираться и выдергивать из нее нужные параметры для INSERT-а в хранимой процедуре.
Аноним 07/02/17 Втр 14:29:05  928169
>>928161
Ты в курсе про такое чудо мысли как ORM?

>хранимые процедуры
За это вообще по ебалу бьют давно.
Аноним 07/02/17 Втр 14:42:45  928178
>>928169
Нет не в курсе, только начал осваивать БД.
Почему процедуры плохо?
И чего конкретно смотреть под c# в этом направлении?
Аноним 07/02/17 Втр 15:23:18  928196
>>928169
> SP
непонятная твое агро по поводу хранимых процедур и иже с ним. такие вещи используются тогда, когда нужно их использовать. в частности, можно упомянуть квази хай лоад (насколько он может быть хай с реляционными базочками), можно упомянуть просто статистику или некоторые высоконагружаемые сервер запросы.
тем более, непонятно, кому там бьют ебало и за что. конечно, если твой опыт ограничивается проектами уровня SELECT * FROM Table, то мне нечего возвразить.

>>928178
Entify Framework, nHibernate - мастадонты ОРМной инженерии, творят чудеса, если возможности приложения позволяют
Dapper, ServiceStack - наиболее распространенные в моей практике лол легковесные штуки, не дающие особо много
вообще, тысячи их. ищи @ осваивай, если есть время (но нахуя)
Аноним 07/02/17 Втр 22:53:41  928426
>>928196
Какая зп, если не секрет? И лвл.
Аноним 08/02/17 Срд 00:48:03  928461
>>928178
Процедуры - это круто. В том же постгресе можно писать их js (!) движок v8 показывает чудеса https://github.com/plv8/plv8
Аноним 08/02/17 Срд 11:31:06  928579
>>928169
Двачую. хранимые процедуры -- это полный зашквар и клеймо в любом не легаси говне, в любом хоть минимально приличном проекте
Аноним 08/02/17 Срд 11:31:55  928580
>>928461
>Процедуры - это круто. В том же постгресе можно
мы вам перезвоним.
no hire
Аноним 08/02/17 Срд 11:47:58  928591
>>928426
если ты хочешь обхуесосить мой ответ, то зачем тебе возраст/зп?
Аноним 08/02/17 Срд 14:13:17  928683
>>928579
>>928580
Почему процедуры зашквар?
Аноним 08/02/17 Срд 14:59:47  928722
>>928683
потому, что на его _минимально приличном проекте_ его не используют, очевидно же
Аноним 08/02/17 Срд 16:27:54  928781
>>928722
Да ладно. Тон его выебист, но у него есть мнение, которое, быть может, полезно знать. Вдруг это мнение приведет меня к тому, что я начну гуглить какие-то ключевые слова и найду для себя что-то новое?
>>928591
Думаю, ему правда интересно, потому что ты производишь впечатление подкованного. Мне тоже интересно.
Аноним 08/02/17 Срд 17:00:02  928803
>>928579
Если ты не умеешь их писать, то это не значит что они плохи. Плохи люди, которые не знают TSQL или вообще базы данных мышкой программируют. Накидают селектов так, что оптимизатор запросов с его планами выполнения идет лесом и каждый раз новый план создает. И не говоря про то, что по сети от этих ваших фреймворковских "клиентских приложений" голый SQL-код летает. Зато АБСТРАКЦИЯ.
Аноним 08/02/17 Срд 17:07:50  928814
>>928781
Я видел как у ебанутиков веб-проекте вызывались хранимки: форматирование адресов, валидация, некоторые расчеты, набор случайных чисел... Т.е. за всем этим оно ходило по сети в оракл. Причем это были функции не читающие данных. Как быстро оно работало - можешь представить. И не надо кукарекать мол "можно! просто так не надо делать!". Это само получается - они реализовали функционал, а потом поняли, что он им нужен еще и тут и либо дублировать (а потом поддерживать два объема кода) - либо обращение в базу на каждый чих. Половина кода там, половина кода тут, еще часть продублирована (иначе совсем вообще тормозит) и они постоянно вынуждены были поддерживать две версии. И не самые тупые программисты были кстати. Всегда это заканчивается трешем. Просто не нужно этого делать изначально и всё. Хранимки - зло.
Аноним 08/02/17 Срд 17:12:30  928817
>>928781
Организационно код ("бизнес-логика"/"код"/) должны быть только в одном месте. Они не могут быть размазаны (иначе они будут и там и сям и немного здесь и тут вот два этапа одно и то же). И это место - основной код, но никак не БД.
Концептуально нарушается базовый принцип "модель" - это "данные". Нарушение этого принципа даже в рамках основного кода заканчивается еще плохо, нарушение до степени что возникает "хранимка" - совсем пиздец.
Если ты начнешь в процедуры, то сразу начнешь создавать результаты, которые не мапятся на твою объектную модель, это обязательно (поверь) кончится read-only сущностями, которые изменить и вернуть в базу нельзя никак в принципе (нет обратной проекции и всё). Вообще, даже руками, не говоря уже про ORM.
Всё обязательно заканчивается дублированием. Если не дублировать, то начинается цирк вроде вызова хранимок для задач, которые вообще никак не связаны с данными и получается совсем уже конченый проект.
У оптимизатора меньше возможностей оптимизировать их.
Дальше всё равно начинается склейка SQL запроса кодом (но теперь уже в хранимках! это тебе не уродство ручной клейки запросов питоном! это лучше, это хранимочка!).
---
Они не переносимы. Во-первых синтаксически. Во-вторых они всегда так или иначе используют еще и всё остальное. Т.е. начинают использоваться замысловатые возможности, которых нигде больше нет. И тогда проект становится 100% непереносим никак вообще.
Они неудобны в написании - (степень уёбищности языка на усмотрение вендора). Другие языки вроде языкнейм - теряют все "преимущества" (т.е. обещанные "преимущества" хранимок, т.е. которых нет) PL*/SQL и выглядят в итоге всё равно так же как "клиентский" код. В дополнение они могут иметь ряд своих проблем.
Их трудно нормально версионировать и отлаживать.
Они отдельный элемент деплоймента.
Они отдельный элемент управления правами.

Аноним 08/02/17 Срд 17:19:43  928823
>>928803
>Если ты не умеешь их писать
Слышь ты, июнь-тестировщик. У тебя в dynamic sql security definer хранимке возникла sql injection, всю твою базу распидарасило и тебя уже выкинули на мороз. Домой не приходи, я тут пока мамку твою ебу. Попиши хранимок пока.
Аноним 08/02/17 Срд 17:27:10  928831
rustle-8.jpg (325Кб, 723x1023)
>>928817
>Они отдельный элемент деплоймента.
>Они отдельный элемент управления правами.
Они отдельный элемент борьбы директора по продажам против директора по развитию и прочих ссучёных сук.
Об этом бы лучше подумал, а то «питон», «питон»...
Аноним 08/02/17 Срд 17:28:51  928834
>>928823
Спасибо, я в отличии от тебя, мудака, проверю че мне там на вход пихают. Видимо от инъекций в свой ОРМ-овский говнокод ты уже успел пострадать.
Аноним 08/02/17 Срд 18:36:30  928915
>>928834
>инъекций в свой ОРМ-овский говнокод
ахахахах, недожуниор спалился
Аноним 08/02/17 Срд 18:42:28  928921
>>928834
>ORM
>injection
))

а вообще хуй знает зачем тебе хранимки
У них только один кейс - если у тебя много разных десктоп клиентов, и нет унифицирующего ебиного api-сервиса, ну так вроде не 20 век, трехзвенка везде, и любой бекенд язык выразительней любого sql расширения. К тому же не все data-orintied, а process-orintied на хранимках особо не попишешь, вот и выходит что все равно приходится писать логику на стороне api-сервиса. А мешать код на бекенде с хранимками - говноедство, так как раздуваешь систему, теряешь реюз и композабельность. Бизнес требования по своей природе декларативны, нахуя их описывать язычком с выразительностью уровня шелл-скрита? Пока пацаны пытаются сделать процедурную парашу хоть немного юзабельней, запиливая датамаперы типа LINQ, говноеды даже где не надо обязательно хотят все засрать своими процiдурками. Вот чому вы такие пидары, a?
Аноним 08/02/17 Срд 18:52:58  928928
>>928921
>десктоп клиентов
>подключаться напрямую к БД
девяностые-нулевые годы
Аноним 08/02/17 Срд 18:55:27  928931
>>928921
>язычком с выразительностью уровня шелл-скрита
ты что там же можно JS пускать прям в БД и писать на ЖС, делая из него SQL запросы в базу будучи в хранимке в самой же базе, на ЖС. т.е. они пришли к тому же от чего пытались уйти.
Аноним 08/02/17 Срд 20:12:24  928988
Вы тут спорите о выразительности и идеальном архитектурном решении, но на практике все упирается в эффективность. Иногда возникает необходимость делать тонны разных запросов, обрабатывать их и в результате получать определенное значение. Такое дерьмо выгоднее делать на стороне сервера.
>>928931
> они пришли к тому же от чего пытались уйти
Никто от этого не пытался уйти. Если в твоем крудошепстве нет необходимости в хранимках - это не значит, что для остального мира они не нужны.
Аноним 08/02/17 Срд 20:13:37  928990
>>928988
Так это и делается на стороне сервера. Только причём тут хранимки?
Аноним 08/02/17 Срд 20:15:06  928993
>>928990
У тебя бд, бэкенд и всё всё всё на одном сервере?
Аноним 08/02/17 Срд 23:10:45  929136
>>928993
насколько должно быть здоровое приложение, дабы разбивать кодэ и источники данных по отдельным машинам? не самое легковесное приложение все-равно вертелось рядом с скл-сервером и позволяло запустить несколько тестовых инстансов
Аноним 08/02/17 Срд 23:50:46  929165
>>929136
Ну где-то уровня YellowPages.
Аноним 09/02/17 Чтв 00:38:31  929214
>>929136
Представь, что у тебя это все запущено на одной машине. Представь, что ты выгружаешь из бд большой объем данных, потом эти данные запихиваешь в переменные в своем проекте. Тебе на все это дерьмо нужно гораздо больше памяти, чем на сценарий, когда все это происходит в рамках субд.
Аноним 09/02/17 Чтв 00:55:06  929235
я думал тут нихуя не решают чужие проблемы
Аноним 09/02/17 Чтв 04:16:06  929316
Как применить тяжелый патч к базе на проекте, чтобы его пользователи во время обновления не сосали жопу, а продолжали работать?
Допустим, там есть много update и altertable.
Если сделать дамп и патчить его, а потом - хоба - и быстро подменить таблицы со старых на новые, то надо как-то дельту же еще применить (изменения во время патча). Через sql-логи?
Вообщем, какие тут лучшие практики?
Аноним 09/02/17 Чтв 09:35:46  929357
>>929316
Чувак, даже какие-нибудь ВК или ОД приостанавливают работу на несколько минут ради апдейта. Все те 5 пользователей твоего стартапа переживут эти несчастные 10 минут.
Аноним 09/02/17 Чтв 09:50:46  929359
>>929316
Ставь будильник на 3 часа ночи.
Аноним 09/02/17 Чтв 09:58:52  929361
>>929316
>лучшие практики
накатывать в период наименьшей активности пользователей, очевидно

>>929357
хех, ну социалочки имеют сотни нод и могут делать апдейты серверов ван-бай-ван без потери производительности. опять таки не в самый пик наплыва школьников. хотя, может быть я что-то не знаю
Аноним 09/02/17 Чтв 13:16:37  929422
>>928988
>нет необходимости в хранимках - это не значит, что для остального мира они
этот вот твой остальной мир это клоака в которой нормальные люди работать не хотят. с соответствующими задачами и развитием.
Аноним 09/02/17 Чтв 13:36:04  929425
>>929422
сиравно непонятно, как выкручиваться из ситуаций, когда скорость запроса рили нужна высокой, а не такой, какой ее делают ОРМ?
Аноним 09/02/17 Чтв 14:54:27  929452
>>929425
вся суть хранимко-днища. про кеширование не слышал, про nosql не слышал.
Аноним 09/02/17 Чтв 15:56:09  929507
>>929452
> хранимко-днища
лол, я тут прям грудь рву за SP

> nosql
> кеширование
когда вопрос становится об ускорении лишь некоторой части DAL-вызовов, отдельный датасторадж будет выглядеть обузой, не?
запрос из кеша будет сильно по времени приближен к запросу в основное хранилище если, например, строится динамическая статистика из-за своих промахов. плюс такой временный загон данных в кэш имеет шанс вытолкнуть востребованные данные (или нет)
Аноним 09/02/17 Чтв 19:56:15  929683
>>929425
а чем вызов хранимки сильно быстрее чем выполнение нормально написанного sql-запроса?
Аноним 09/02/17 Чтв 20:17:40  929692
rustle-1.jpg (293Кб, 1000x900)
>>929683
А скажи-ка ты мне малтщик. Когда текст твоего нормально написанного sql-запроса размножили нажатием Ctrl+C/V в десяти местах, кто за вами подтирать, будет!!!
Аноним 09/02/17 Чтв 20:26:32  929700
>>929692
>размножили нажатием Ctrl+C/V в десяти местах
нипонял
ну и что за пидар это сделал и главное зачем?
Аноним 09/02/17 Чтв 20:32:43  929703
rustle-3.jpg (836Кб, 1000x1399)
>>929700
Ну как... его гендиректор взял. Сказал, вот вам ещё одна макака. Ну, а мы и, не возражали. Всё равно у нас разделения по слоям не было и нет.
Аноним 09/02/17 Чтв 20:50:25  929709
>>929703
ну то есть чтоб избежать проблем из-за говнокода на бекенде вы решили наговнокодеть ещё и прямо в базе, нормас)
Аноним 09/02/17 Чтв 23:46:13  929880
Анонята, у меня вопрос к знающим no-sql.

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

Правильно ли я понимаю, что no-sql для этой балалайки не подходит? Есть компромисные решения?
Аноним 10/02/17 Птн 10:04:33  930030
Есть какие-нибудь обзорные статьи/лекции по разным субд? mongodb, postgresql, mysql и т.д. Какие для чего нужны? Какая производительность, плюсы минусы и т.д.
Аноним 10/02/17 Птн 10:12:00  930035
>>929683
Для хранимки план запроса уже есть, а для обычного нет.
Аноним 10/02/17 Птн 13:40:58  930120
>>929880
Так и храни в
>реляционной бд
и не выёбывайся.
Аноним 10/02/17 Птн 17:43:28  930257
>>930120
не хотеть схема рисовать.
Аноним 10/02/17 Птн 19:24:34  930315
Снимок.PNG (21Кб, 704x537)
pizdec.PNG (40Кб, 1914x1038)
Не знаю куда написать еще, так что напишу сюда.
Помогите настроить ебучий роутер, я случайно сбросил на заводские настройки его и пиздец, пробовал делать все по инструкции билайновской, но там толком нихуя не написано, просто заполнить поля и всё.
Аноним 10/02/17 Птн 19:45:19  930326
>>930315
ну так заполни поля и сьеби оццюда
Аноним 10/02/17 Птн 19:54:25  930333
>>930326
сука программист блядь, да пошел ты на хуй!
Аноним 10/02/17 Птн 21:04:51  930373
>>930035
долбоёб. за последнюю соломинку уже хватается чтоб оправдать свои хранимки ебучие. план это копейки вообще, ты замерить даже не сможешь
Аноним 10/02/17 Птн 21:05:42  930374
>>929507
>отдельный датасторадж будет выглядеть обузой, не?
не, дурачок, не
Аноним 11/02/17 Суб 00:57:13  930573
>>930373
>>930374
какой-то ты слишком агрессивный пидор
Аноним 11/02/17 Суб 16:43:58  930964
Посоны хелп! Есть строка с числами через запятую, как на оракле выявить простые числа среди них?
Аноним 11/02/17 Суб 21:45:49  931234
ttraveninsnowby[...].jpg (242Кб, 600x800)
Есть хуйнюшка-добавляет, удаляет и изменяет, а так же ищет по БД.
БД-Fox Pro
Мне сказали что я ебаный некрофил и переделывать
Че делать?
Аноним 12/02/17 Вск 11:53:15  931470
Аноны, посоветуйте мануалов по Oracle Datebase 11g express
Аноним 12/02/17 Вск 15:09:03  931560
cc.png (4Кб, 750x43)
Sup! Тыкаю палочкой в постгрес, хочу перекатить свою приложуху на нее. Короч, в чем прикол. Создал для теста базу, забил рандомной херней типа логинов "admin", "root", etc Теперь делаю из нее select, затем print("<",login, ">", password) и тут его пидорасит смотри пикчу. Это я базу неправильно настроил или что?
Аноним 12/02/17 Вск 17:02:13  931654
>>931560
Аутист ебучий, ты про дебагер слышал что-нибудь?
Аноним 12/02/17 Вск 22:36:18  931933
>>931654
sql дебагер? Серьезно?
Аноним 12/02/17 Вск 22:56:12  931952
>>931933
Курьезно!
Какой ещё print в sql-e? Понахуярил непойми что и оно не работает. Точнее, работает, но не так как аутист ожидал.
Аноним 13/02/17 Пнд 01:09:05  932028
>>931470
так вроде у оракла же есть документация фирменная онлайн? я как-то натыкался, показалось очень добротно написаной
Аноним 13/02/17 Пнд 10:44:51  932189
>>931952
>print в sql-e?
В питухоне, а не не в sql-e.
Аноним 13/02/17 Пнд 10:52:21  932196
>>932189
Ну так дебаж, питухонер.
Аноним 13/02/17 Пнд 11:21:47  932215
>>932196
Еще вчера отдебажил, попиздеть охота.
Аноним 13/02/17 Пнд 12:14:36  932236
>>932215
Соси хуй, быдло.
Аноним 13/02/17 Пнд 17:23:14  932360
Посоны, нужен ваш компетентный совет. Мне нужна субд, да не простая, а пиздатая. Короче, рассказываю суть.
Мне нужно хранить строки в БД и иметь к ним быстрый доступ. Знаю, что обычно эта проблема решается индексами, но у меня количество строк в таблице ограничено, и поэтому я бы хотел вместо индексов использовать хэш-таблицу. Поскольку я нуб и в душе не ебу, какие бывают хэш-функции в субд, у меня несколько вопросов:
1. Есть ли хэш-функции, которые принимают заранее заданное количество значений? Я смотрел в инетике, но там всякие md5 принимают строго фиксированный диапазон значений.
2. Вытекает из первого: есть ли субд с широкой поддержкой хэширования? Ну чтобы не ебя мозги можно было просто задать размерность таблицы, а субд сама бы подбирала и генерировала хэш-функцию и можно было сразу работать. Ты в бд строку - она тебе индекс. Ну что-то в этом роде.
3. На самом деле я хочу захуярить не одну, а несколько таблиц с фиксированной размерностью и хранить в них строки. Поэтому неплохо было бы, чтобы субд поддерживала секционирование.
Аноним 13/02/17 Пнд 19:28:16  932478
>>932360
а я вот не понял, чем тебе индексы не угодили, чесгря
Аноним 13/02/17 Пнд 19:56:56  932496
>>932360
Хуйни какой-то понапридумал. Пиши что сделать нужно, а не свои фантазии насчет решения.
Аноним 13/02/17 Пнд 21:16:41  932535
Эксперты БД, нужна ваша оценка.
В общем, надо создать БД для пациентов. Но основная задача это хранить рентгеновские снимки, мрт, еще что-то. Т.е есть чел, и к нему я добавляю снимок ноги, через три дня еще один снимок, через наделю еще.
Вот, как лучше сделать, чтоб не обосраться? Я так полагаю, нужна будет еще локальная база?
Аноним 14/02/17 Втр 05:29:26  932788
>>932535
>Вот, как лучше сделать, чтоб не обосраться?

см ниже

>Я так полагаю, нужна будет еще локальная база?

Тут ты уже предварительную подливу выпустил
Аноним 14/02/17 Втр 05:29:55  932789
>>932535
>В общем, надо создать БД для пациентов.

Расскажи кто поставил задачу?
В каждой поликлинике ёбаные кулибины говнокодят на фокспро нечто подобное
Аноним 14/02/17 Втр 06:01:35  932792
>>932789
>фокспро
Он еще жив?
Аноним 14/02/17 Втр 08:51:10  932824
>>932788
Почему? Ну я не очень понял, но вроде если основная база недоступна, то все сохраняется в локальную
>>932789
Да это мой диплом. Там будет сама приложуха для некоторого анализа ОКТ и вот такая база.
Аноним 14/02/17 Втр 09:47:06  932840
>>862801 (OP)
Поясните ньюфагу, как выбрать данные по каждому дню декабря для посгре?
Аноним 14/02/17 Втр 12:45:00  932931
>>932824
>вроде если основная база недоступна, то все сохраняется в локальную

Хотел было помочь, но... Надеюсь, тебя отправят в армию.
Аноним 14/02/17 Втр 16:58:36  933163
>>932931
Да ладно, я отмазался. Говори уже.
Аноним 14/02/17 Втр 19:30:57  933304
>>932931
Хоть поясни, в чем я не прав. Это мне науч.рук предложил так сделать.
Аноним 14/02/17 Втр 19:35:25  933307
ОП-хуй, где шапка с литературой?
Аноним 14/02/17 Втр 22:59:50  933455
Имеется такое задание по Microsoft SQL Server. В общем, имеется база данных. Там есть таблица Сотрудники с полями (СотрудникID, ФИО, Должность), СотрудникID - первичный ключ. Также есть таблица ПриходСклад с полями (СкладID, ДатаПоставки, Приемщик), СкладID, ДатаПоставки - первичный ключ, Приемщик - вторичный ключ таблицы Сотрудники(СотрудникID).
Задача - добавить в таблицу Сотрудники столбец Дата приема, установить значения в этом столбце для кладовщиков равными дате их первой поставке.

В общем, первую часть (создание столбца) я сделал.
ALTER TABLE Сотрудники
ADD [Дата приема] date NULL

Со второй частью никак не получается
UPDATE Сотрудники
SET [Дата приема] = (SELECT MIN(ПриходСклад.ДатаПоставки) FROM ПриходСклад)
WHERE Сотрудники.СотрудникID IN (SELECT DISTINCT Приемщик FROM ПриходСклад)
Дата приема устанавливается одинаковой для всех кладовщиков, что понятно. Как сделать, чтобы через SET устанавливались разные даты для каждого кладовщика?
К слову, запрос
SELECT MIN(ПриходСклад.ДатаПоставки), Приемщик FROM ПриходСклад
GROUP BY Приемщик
возвращает именно нужные даты, как их присвоить Дате приема?
Аноним 15/02/17 Срд 00:13:53  933479
>>933455
update t
set t.Column = kek.Value
from Table t
left join OtherTable kek on HueMoe itakdalee
Аноним 15/02/17 Срд 04:16:54  933545
>>933304
> Это мне науч.рук предложил так сделать.
Всё что нужно знать о науке в сраной
Аноним 15/02/17 Срд 08:24:35  933578
>>933479
Спасибо.
Сработал этот запрос
UPDATE Сотрудники
SET Сотрудники.[Дата приема] = (SELECT MIN(ДатаПоставки) FROM ПриходСклад
WHERE СотрудникID = Приемщик)
Аноним 15/02/17 Срд 09:34:25  933595
>>933578
вложенные запросы - это зло
Аноним 15/02/17 Срд 09:40:16  933598
>>932840
bump
Аноним 15/02/17 Срд 11:08:07  933626
>>933595
Ссылку на хабр или пиздун.
Аноним 15/02/17 Срд 12:46:58  933697
>>932840
>выбрать данные по каждому дню декабря
Какие данные, мудило тупое? Откуда выбрать? Экстрасенсы все на съемках нового сезона для тнт блядь.
Аноним 15/02/17 Срд 13:39:05  933739
>>933697
тебя ебет какие данные? лол. Анонимус настолько отупел, что не может представить абстрактные данные?
Просто выбрать данные из нужной мне таблицы в колоку -
1 декабря
2 декабря
..
31 декабря

Сам нашел что-то типо этого.
SELECT DATE(insert_time), SUM(value)
FROM table1
WHERE insert_time >= '2013-05-01' AND insert_time <= '2013-05-31'
GROUP BY DATE(insert_time)
Аноним 15/02/17 Срд 19:40:41  933949
>>933739
Это ты настолько отупел, что не можешь сформировать понятно задачу, ждешь помощи, а еще агришься на все подряд, тебя спрашивают, какие данные, потому что к ним нужно как минимум применить агрегатную функцию. Еще обычно принято писать так:
Есть 2 поля: insert_date и amount в субд postgreSQL, каким запросом можно выбрать сумму amount для каждой даты (insert_date)?

На стаковерфлоу тебя бы обоссали, а тут только по морде дали. Пиздец, еще кого-то тупым называет, иди, блять учи русский язык сначала, а потом основы sql.
Аноним 15/02/17 Срд 19:43:03  933952
>>933307
Я же хуй, не знаю даже, что вкидывать. Если есть предложения, кидай, добавлю в перекат.
Аноним 16/02/17 Чтв 00:02:56  934096
>>933739
>абстрактные данные
посылаю тебя на абстрактный хуй
>Сам нашел что-то типо этого
И что, сложно было? Думаю, что нет. Потому ты и был нахуй послан.
Аноним 16/02/17 Чтв 18:58:48  934644
>>933739
>Сам нашел что-то типо этого.
Что на уровне пятой задачки с sqlex, а может быть даже и ниже.
Аноним 16/02/17 Чтв 19:26:23  934655
>>933952
Как минимум ссылку на sql-ex.ru чтоб задачки решали и ссылку на статью в wiki про джойны, а то мне на собеседовании половина соискателей неправильно full outer join делают.
http://sql-ex.ru/
https://ru.wikipedia.org/wiki/Join_(SQL)
Аноним 16/02/17 Чтв 20:23:25  934679
>>934655
чо-нить про индексы интереснава расскажи лучше
Аноним 16/02/17 Чтв 21:13:34  934721
>>934679
Да что тут можно интересного рассказать? Довольно тривиальная штука же.
Пару небольших заметок напишу.
1. Иногда можно обойтись меньшим количеством индексов. Например есть таблица table(field1, field2) и нужно ускорить поиск для запросов типа "... where field1 = ..." и "... where field1 = ... AND field2 = ...". В этом случае достаточно одного индекса по обоим полям сразу (field1, field2), причем важен порядок полей в индексе, т.е. индекс (field2, field1) сработает только для поиска по двум полям сразу (либо для поиска по field2).
2. Индексы не обязательны для применения. Так планировщик запросов может решить, что быстрее будет пробежаться по таблице полностью (full scan), чем обращаться в индекс. Это зависит от количества записей в таблице и набранной статистики. У меня был случай когда запрос выполнялся 12 секунд (большая таблица и слабое железо на тестовой машине) из-за того, что планировщик решил что так быстрее. Когда я заставил его использовать индекс (есть у postgres такая опция) запрос выполнился за 6 секунд. В таком случае может помочь vaccum analyze.
Аноним 16/02/17 Чтв 21:26:28  934733
>>934655
Расскажи про людей на собеседованиях.
Аноним 16/02/17 Чтв 21:41:11  934744
>>934721
это ты рассказал то, что я могу в любой статейке почитать
как формируется значение для индексированной записи? есть у меня, скажем, таблица Kek {Id, Date, OptionId, SomeBinaryData} и есть PK {Id, Date}.
я могу забомбить запрос с WHERE Id = @lel AND Date = @azaza, тогда индекс будет использоваться на полную катушку.
а могу так: WHERE Date = @azaza AND Id = @lel. запросовыполнятор может (ну, допустим, будет) использовать индекс. конечно, неэффективно, но что позволит ему быстро (быстрее) скакать по дереву с учетом ебанутости меня как запрашивающего?
я ведь могу указать только вторую колонку.
Аноним 16/02/17 Чтв 21:45:49  934751
VisualSQLJOINSo[...].jpg (143Кб, 966x760)
>>934733
Я ж не DBA какой-нибудь. Джойны - это один из вопросов на собеседовании на жавамакаку. Много кто рисуют пикрелейтед, а когда даешь задачу просто сджойнить всеми способами две таблицы - сливаются. Ну это джуны, в основном.
Часто путают full outer join (снизу слева на пикче) с вариантом снизу справа.
Аноним 16/02/17 Чтв 21:56:18  934756
>>934744
>это ты рассказал то, что я могу в любой статейке почитать
Чувак, на дворе 2017 год - о всем можно прочитать. А уж в /pr не будет откровений и сакральных знаний передающихся из уст в уста.
>PK {Id, Date}
Странная штука - так делать. Ты PK с обычным индексом не перепутал?
>конечно, неэффективно
С чего ты решил что есть какая-то разница? От перестановки условий в where результат не изменится.
>я ведь могу указать только вторую колонку.
Тогда индекс не сработает. Я же писал, что важен порядок полей в индексе. В твоем случае с PK {Id, Date} он сработает либо для поиска по Id, либо для поиска по Id и Date одновременно.
Аноним 16/02/17 Чтв 22:14:14  934773
>>934756
>Странная штука - так делать
ачо? я часто видел ID + дата либо ID + FK в качестве кластерного индекса

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

>что есть какая-то разница
умные люди на хабре напесали. да и не только, источник я просто так не вспомню (MS SQL если чо. там же есть разница и она может быть существенной?)
Аноним 16/02/17 Чтв 22:33:23  934786
>>934773
>она может быть
А может и не быть. Сомневаюсь, что в MS до такого не додумались. В любом случае EXPLAIN в помощь.
Аноним 17/02/17 Птн 08:55:25  934963
1.jpg (46Кб, 1486x83)
2.jpg (56Кб, 1330x238)
Пагни, помогите нубу.

Нужно выбрать значения из бд (Оракел), которые являются вычисляемыми. В расшифровке таблиц написано Storage - Calc. Те столбцы, у которых Storage - DB селектятся нормально.

Помогите, пожалуйста. Погуглил, что-то ничего похожего на мое не нашел (плохо искал, видимо).

Пикрелейтед.
Аноним 17/02/17 Птн 14:06:20  935059
>>934963
бамп вопросу
Аноним 19/02/17 Вск 22:30:44  936648
Посоны, нашел на специалисте сертефицированные курсы по sql server администратору за 50к че как думаете годно? Хочу постепенно вкатиться в тему, сам как аналитик юзал нубский аксесс на уровне нубского конструктора и вот подумал а че бы блядь и нет? Стану sql макакой, тянки, успех, профит.
Аноним 19/02/17 Вск 23:01:13  936670
>>936648
хочешь просто отдать денег, отдай мне
Аноним 19/02/17 Вск 23:26:59  936705
>>936670
Плохие курсы?
Аноним 19/02/17 Вск 23:32:47  936710
>>936705
ну как плохие
я бы сказал, что любые платные курсы в 2017м году это те же бесплатные курсы, книги, статьи, видео, но только платно
Аноним 20/02/17 Пнд 11:29:20  936976
>>936648
На курсах тебя не научат ничему такому, чего ты не сможешь изучить сам.
Аноним 20/02/17 Пнд 13:51:38  937023
-13 навыка за 4.8$, просто заебись.
Аноним 20/02/17 Пнд 14:55:49  937050
Анон, возможно ли в постгрисе 9.5 сделать колонку с массивом внешних ключей? Заебали эти вспомогательные таблицы на 3 колонки.
Аноним 20/02/17 Пнд 15:03:18  937057
>>934963
Помогите с этой хуйней, пожалуйста.
Аноним 20/02/17 Пнд 23:12:07  937319
Подскажите по теории БД!!!
Немного запутался в определениях
вот у меня задача
Есть мн-во A={a,b,c,d,e,f}
мн-во отношений S={{a}->{b,c},........}
нужно проверить, что {a,d} - ключ. через замыкания.

Так вот, есть 2 стула свойства
1 уникальность - это когда замыкание {a,d}+ = A
2 неизбыточность - как я понял, это когда {a}+ !=А и {b}+ !=А
Если замыкание {a}+ =A, то {a} - уникален, и ад - не ключ
Я правильно все понял, или где-то проебался?
Аноним 21/02/17 Втр 00:50:37  937357
>>937050
Хотел сначала тебе помочь, но заглянул под спойлер.
Уёбывай.
Аноним 21/02/17 Втр 05:54:43  937436
Помогите пожалуйста!

Поясните, как в базе данных сохранять содержимое статьи для типичного сайта? Статья включает в себя текст смешанный с изображениями, несложные элементы html-форматирования текста, такие как подчёркивание или выделение жирным и собственно теги для вставки картинок. Работаю с PHP+PDO+MySQL.
Аноним 21/02/17 Втр 08:37:55  937473
Дибитусты в треде есть?
Аноним 21/02/17 Втр 19:11:22  937779
>>937436
Очевидно, в виде маркдауна
Аноним 23/02/17 Чтв 00:15:18  938877
>>936648
Тебе это не нужно. Ты просто напрасно потратишь деньги. Только практика, только хардкор.
Бамп.
Аноним 23/02/17 Чтв 00:30:39  938896
Screenshot63.png (4Кб, 203x208)
>>934963
Я, конечно, не знаю что такое Оракел, но предположу что он не считает project названием таблицы. Что-то вроде такого в t-sql.
Аноним 23/02/17 Чтв 00:34:07  938898
>>936710
Если я правильно помню, у оракла платные курсы - необходимое условие для получения сертификата выше разраба.
Аноним 23/02/17 Чтв 15:16:43  939312
>>937050
>Колонка с массивом внешних ключей
Что ты несешь, вообще?
Аноним 24/02/17 Птн 05:56:43  939887
>>939312
Он хочет хранить несколько связей в одном поле записи в виде массива ключей, как я понял
Аноним 24/02/17 Птн 13:15:54  940021
>>939887
А зачем так делать? Чтобы сущности не плодить?
Аноним 25/02/17 Суб 06:34:50  940533
Студентота, инженерная специальность, предстоит курсач по базам данных(окологис-технологии). Знаний SQL нет совсем (только немного реляционная алгебра и создание БД библиотеки на информатике, ну и некоторые основы программирования). От преподов толку нет. Нихуя не понимаю как начать вкуривать основы, пытался гуглить, но все гайды заточены под ms sql или mysql, а там свои отличия как я понимаю, а у меня нет времени на разбор. Короче реквестирую учебник по SQL, заточенный именно под POSTGRE.
Аноним 25/02/17 Суб 07:41:08  940542
>>940533
В армию пиздуй.
Аноним 25/02/17 Суб 07:51:11  940544
>>940533
Внезапно скачай с их сайта
Аноним 25/02/17 Суб 10:52:08  940580
>>940533
Нужно наверно сначала прочесть классику (Дейта "Введение в системы баз данных"), чтобы знать стандарт SQL, а уже потом конкретные реализации.
Аноним 28/02/17 Втр 18:56:45  943223
>>940533
>Короче реквестирую учебник по SQL, заточенный именно под POSTGRE.
Плохая идея. Ищи учебник без заточки.
Аноним 01/03/17 Срд 18:46:43  943951
БД-господа, выкинулсяли из университета и теперь сижу дома. Чтоб я пробзделся, батя мне задал такую задачу: перевести базу клиентов из экселя в аксес, попутно прикрутив интерфейсы и прочие свистоперделки, также, возможно, в будущем придется добавить поддержку работы с ней по локальной сети с нескольких компьютеров одновременно. Хватит ли для реализации этого проекта книг с оп-пика генерального треда /pr про SQL или же придется воспользоваться дополнительной литературой? Если да, то какой?
Аноним 01/03/17 Срд 19:42:48  943976
>>943951
в аксесе программирование мышкой, зачем тебе какие-то книги?
Аноним 01/03/17 Срд 19:47:41  943981
>>943976
Чтоб устройство понять баз данных, чтоб интерфейсы нормальные сделать. Бейсик тоже придется задействовать, по моим ощущениям. Я ж в этой области вообще ноль полнейший. А книга - друг лучше любой собаки.
Аноним 01/03/17 Срд 19:51:55  943982
>>943981
для крудопроекта подойдет любое издание аксесс для чайников за 21 секунду

шобэ узнать про реляционную теорию стоит начать с Дейта
Аноним 01/03/17 Срд 20:14:04  943998
>>943982
>крудопроекта
?
Аноним 01/03/17 Срд 20:50:59  944013
>>943998
C.R.U.D.
Аноним 01/03/17 Срд 20:56:36  944017
сап, анании. как лушче хранить деревья в бд? видел тему с ключами (типа AAAA у родителя, AAAB, ..., AAZZ у детей и т.д.), чтоб можно было доставать всех детей. кто что считает?
Аноним 01/03/17 Срд 20:56:42  944018
>>944013
Понял, спасибо за ответы.
Аноним 01/03/17 Срд 21:30:38  944041
>>944017
индексы ж вроде ж как реализуются в виде деревьев
Аноним 01/03/17 Срд 21:35:04  944045
>>944017
С какой целью?
Аноним 03/03/17 Птн 14:50:27  945253
нахера в sql для псевдонимов есть команда ASS, если можно не писать её, а просто поставить двойные скобки?
Аноним 03/03/17 Птн 14:50:57  945254
>>945253
* ASS
Аноним 03/03/17 Птн 17:50:29  945390
>>945253
можно и квадратные скобки поставить
по, я так понял, вся хуйня кроме as это синтаксический сахер
например, для подвыражений без ас не сработает, вроде бы как
Аноним 03/03/17 Птн 18:54:15  945433
Поясните дауну что сделать что бы я писал в одной таблице и это же самое появлялось в отдельных строках другой.
Аноним 03/03/17 Птн 19:35:30  945469
>>945433
Триггер; хранимка, которая будет это всё делать.
Чем пользуешься? Если access, то тут уже хрен знает.
Аноним 03/03/17 Птн 20:07:28  945503
>>940542
SELECT Cписок служащих WHERE Не годен
Аноним 04/03/17 Суб 16:07:24  946228
Гайз, спасайте.
Нужно выводить записи где датавремя находится в диапазоне первых 5 дней каждого месяца.
Я хз как это сделать.
Аноним 04/03/17 Суб 16:07:58  946229
>>946228
ах да
MySql
Аноним 04/03/17 Суб 16:24:55  946236
>>946228
SELECT *
FROM TABLE
WHERE DAY(date)<=5
Аноним 04/03/17 Суб 16:34:54  946248
>>946236
вротмненоги, работает
Всё оказалось куда проще, Спасибо
Аноним 05/03/17 Вск 01:19:21  946518
>>944017
https://neo4j.com/
https://www.arangodb.com/
Аноним 08/03/17 Срд 18:19:44  949332
Подскажите книжку по Oracle для начинающий, чтобы всё подробно разжёвано было
Аноним 08/03/17 Срд 18:20:01  949334
>>949332
*начинающих
Аноним 08/03/17 Срд 19:02:49  949363
>>863895
JSONB в постгри
Аноним 08/03/17 Срд 19:18:20  949369
>>902568
explain
Аноним 08/03/17 Срд 19:19:10  949370
>>902660
Можешь писать так, как удобно тебе. Я пишу маленькими.
Аноним 08/03/17 Срд 19:21:50  949375
>>914874
+
Аноним 08/03/17 Срд 19:24:32  949377
>>926131
Нет, если используешь хибер
Аноним 08/03/17 Срд 19:25:08  949379
>>926360
Почему нельзя?
Аноним 08/03/17 Срд 19:52:34  949400
>>949379
никто не говорит, что нельзя
Аноним 08/03/17 Срд 22:53:10  949574
>>949379
Потому что куски бинарного говна не нуждаются в индексировании, транзакционности и упорядоченном хранении.
Аноним 10/03/17 Птн 13:44:50  950523
Вопрос по mssql.

Есть ли разница между запускаемым из maintains plan проверки целостности через checkdb и созданного руками джоба на проверку базы тем же checkdb
Аноним 11/03/17 Суб 15:27:28  951224
>>944017
https://en.wikipedia.org/wiki/Nested_set_model для sql.
Аноним 12/03/17 Вск 00:15:41  951629
Безымянный.png (52Кб, 671x337)
Сап, анон. Я нуб, который решил начать изучать SQL по Бьюли, и обосрался в самом начале. Суть вот в чем: В MySQL есть 2 таблицы (пикрилейтед). Они были связаны внешним ключом по person_id, но я его дропнул, потому что он не давал мне поставить авто-инкремент в первой таблице. В общем я его поставил, и теперь пытаюсь вернуть внешний ключ через ALTER TABLE. Но нихуя, он возвращает ошибку "error 1215 cannot add foreign key constraint"
Может есть идеи в чем может быть проблема?
Аноним 12/03/17 Вск 04:07:43  951699
>>951629
Начнём с того, что в таблице "person" этот ключ должен называться просто "id".
Добавим к тому, что ты только что полностью разрушил свою БД, создавай её заново.
Аноним 12/03/17 Вск 09:52:49  951753
>>951699
То есть названия столбцов для первичных ключей в разных таблицах не должны быть одинаковыми, я правильно понял?

В чём все-таки моя ошибка? Как правильно привязать эти столбцы внешним ключом и не обосраться снова? Плюс, мне нужно чтобы столбец с айдишником в таблице "person" сам его генерировал при заполнении ее новыми данными (почему я и поставил авто-инкремент, а вообще планировал заполнить столбец значением "null", но не вышло, пришлось так изъебнуться).
Аноним 12/03/17 Вск 10:07:12  951754
>>951699
который раз поражаюсь донности mysql
Аноним 13/03/17 Пнд 23:09:06  953115
>>862801 (OP)
Помогите составить запрос для экзамена!
Имеются 3 таблицы - t1 t2 t2 которые имеют поля
t1 - author
t2- book
t3 - author, book

Задания
1. нужно убрать из таблицы t3 все книги, у которых два одинаковых автора
2 вывести 10 самых популярных книг
Аноним 13/03/17 Пнд 23:18:05  953123
>>953115
ты хотя б пытался или сразу сюда пришел?
Аноним 13/03/17 Пнд 23:25:15  953129
>>953123
Сразу. Я просто этот предмет мимопрохожу, а задачу до завтра необходимо решить.
Аноним 13/03/17 Пнд 23:42:46  953143
lukas.jpg (31Кб, 512x512)
>>953129
Ну и пошел нахуй тогда, братишка. Добра тебе.
Аноним 14/03/17 Втр 15:00:40  953557
>>953129
Тогда самое время начать учить SQL. Флаг тебе в анус.
Аноним 14/03/17 Втр 16:19:01  953613
>>953129
Пишу сразу в тред, не проверяя на реальной БД

create table tmp_count_authors as (
Select COUNT (t3.author) as author_count, t3.author, t3.book from t3 group by (t3.book, t3.author) );

delete from t3 where ( (tmp_count_authors.author=t3.author) AND (tmp_count_authors.author_count>2) );

drop table tmp_count_authors;

sqlite
Аноним 14/03/17 Втр 16:38:20  953636
MSSQL.
Нужна база данных продуктов и рецептов, чтобы по перечню продуктов искать рецепты, в которых есть все продукты из списка (одного-два может не хватать)
Препод уже месяц отказывается принимать решение со стандартным "многие ко многим" и костылями типа "создать 100 полей для продуктов в каждом рецепте и разрешить NULL", говорит что есть какой-то более годный способ, а я думать не хочу.
Какие соображения у треда на эту тему?
Аноним 14/03/17 Втр 17:19:10  953688
>>953636
>а я думать не хочу
А мы, блять, за тебя хотим.
Вот, тебе туда же: >>953143
Аноним 14/03/17 Втр 17:28:47  953704
gztTscDttCs.jpg (61Кб, 605x444)
Суп, бдач.

Попрошу совета. Я хочу уметь в базы данных, потому что часто вижу в вакансиях умение всяког на Сиквеле, Постгре и разного Мемкеша, Монго.

Как я вижу - ёпте, база данных, в ней данные. Обычно ЯП сам делает туда запись. И сам же оттуда достаёт, что ему нужно, только путь укажи. Если надо ручками - залогинился, селектнул, удалил\добавил. Но я подозреваю что пикрелейтед. Ткните меня, где я обосрался и куда копать? Что почитать, как понять как под капотом работает или какие КУРСИКИ пройти?
Аноним 14/03/17 Втр 17:29:02  953706
>>953688
Лол, хуево написал. Это он так утверждает.
А у меня идей нет, чо там еще можно использовать.
Аноним 14/03/17 Втр 17:29:12  953707
>>953636
Пускай есть три таблицы: Готовый Продукт (Код, Название, Питательная Ценность), Ингредиент (Код, Название) и Рецепт (Код, Готовый Продукт Код, Ингредиент Код, Количество Ингредиента, ИД_рецепта). Например:
Готовый Продукт:
{ГП1, "Морской Рулет", +5}
Ингредиент:
{И1, "Мясо хоркера"}, {И2, "Соль"}, {И3, "Сельдь"}
Рецепт:
{Р1, ГП1, И1, 1,"Рецепт1МорскогоРулета"}
{Р2, ГП1, И2, 1,"Рецепт1МорскогоРулета"}
{Р3, ГП1, И3, 2,"Рецепт2МорскогоРулета"}
{Р4, ГП1, И2, 1,"Рецепт2МорскогоРулета"}

В этом примере есть 2 рецепта Морского рулета:
"Рецепт1МорскогоРулета" = 1мясо хоркера+1соль
"Рецепт2МорскогоРулета" = 2сельдь+1соль

В таблицу Ингредиентов можно добавить какую-нибудь Соль пустоты и никаких рецептов менять не нужно
Аноним 14/03/17 Втр 17:36:48  953725
>>953707
Это ж просто денормализация многие-ко-многим, нет? И чем это принципиально лучше?
Аноним 14/03/17 Втр 17:41:37  953735
>>953725
>и костылями типа "создать 100 полей для продуктов в каждом рецепте и разрешить NULL"
Вот такого нету, например. Можно ещё сделать составной ключ из тройки (Готовый Продукт Код, Ингредиент Код, ИД_рецепта) и убрать поле Код, но зачем?
Аноним 14/03/17 Втр 17:51:56  953743
>>953735
Так их и в N:N нету.
Утвержается, что есть некий способ в ущерб объему данных (то есть избыточность) относительно N:N увеличить скорость поиска рецепта по продуктам в разы. У меня идей нет никак.
Ламер ломает БД Аноним 14/03/17 Втр 17:53:08  953744
Touhou-Yuri-tou[...].png (165Кб, 800x800)
>>862801 (OP)
Итак, анон, есть reg-файл.
Это вот дело служит паролем для базы данных.
Насколько я понимаю, dword 83 это какой-то сдвиг фразы "Увррфмсз", потому что когда я ставлю значение 0, то захожу в базу по этой фразе. Как узнать, какая фраза выходит после этого сдвига? Он как-то по ASCII вперед на 83 символа сдвигается или как?

[HKEY_CURRENT_USER\SOFTWARE\mtests]
"t"=dword:00000083
"validate"="Увррфмсз"
Аноним 14/03/17 Втр 18:14:12  953756
>>953636
Ну самый очевидный способ это реализовать - запилить таблицы с ингредиентами, рецептами, рецепты_ингредиенты.
Алгоритм поиска - искать id в таблице ингредиентов нужный, потом уже в таблице рецепты_ингредиенты искать рецепты по id ингредиентов.
Ну и в техническом плане там на колонку с названиями ингредиентов повесить индекс, и ещё индекс на колонку с ингредиентами в рецепты_ингредиенты.
Аноним 15/03/17 Срд 15:24:09  954388
Безымянный.png (94Кб, 759x863)
господа, посмотрите на мой высер...
пилю бд тип для выдачи кредитов с предварительным анкетированием.
меня интересует насколько правильно (и если не правильно поправьте пожалуйста) поставил связь, которая на пикрелейтед помечена знаком вопроса. Так же правильно ли я организовал хранение ответов в анкете пользователя(таблица в красном квадрате).
ну и так в общем может есть какие замечания, я обязательно учту.
Аноним 15/03/17 Срд 22:17:55  954710
>>954388
Не помешало бы на словах идею объяснить. Словесную формулировку базы, так сказать.
Аноним 15/03/17 Срд 22:23:20  954714
>>954388
Ну вот идея, на которой ты построил опросную систему, немного непонятна. С банками и контрактами всё нормально.
Аноним 15/03/17 Срд 22:58:14  954730
>>954714
значит связь с контрактами и кредитными продуктами там не лишняя(красный знак вопроса на схеме)?
система с опросом(кредитный скоринг) такова:
есть скоринговая карта(scoring_map), у этой карты есть вопросы(question), к каждому вопросу есть несколько вариантов ответа (case) (для каждого варианта свое количество балов),
и вот мне надо будет хранить пройденную анкету пользователя(test_result), где будет храниться сумма набранных баллов. выбранные варианты ответов, решил хранить в таблице выделенную красным квадратом на схеме. правильно ли так делать как сделал это я? плюс если в вариантах ответа есть "добавить свой вариант" (которого нет в анкете), пользователь пишет конкретно свой вариант, но этот "вариант", который ввел пользователь, должен быть привязан к конкретно тому пользователю, который его вводил. надеюсь понятно объяснил
Аноним 15/03/17 Срд 23:02:23  954732
>>954730
>>плюс если в вариантах ответа есть "добавить свой вариант" (которого нет в анкете), пользователь пишет конкретно свой вариант, но этот "вариант", который ввел пользователь, должен быть привязан к конкретно тому пользователю, который его вводил

поле description в таблице case_has_test_result
Аноним 15/03/17 Срд 23:06:20  954735
>>954730
Ну договор с банком на некоторых условиях происходит, что неплохо этой связью характеризуется.

Scoring_map - это некоторый набор анкет? Я бы на твоём месте подумал о переиспользовании вопросов для разных анкет (N:N).
Аноним 15/03/17 Срд 23:10:02  954738
>>954735
>>Scoring_map - это некоторый набор анкет?
совершенно верно
>>Я бы на твоём месте подумал о переиспользовании вопросов для разных анкет (N:N)
т.е. мне еще между таблицами scoring_map и question запилить еще табличку с полями id_scoring_map и idquestion. так?
Аноним 16/03/17 Чтв 16:08:53  955042
Последнее время приходится хуярить много запросов на MSSQL вида;
WHERE cell1 not like '%хз%' AND cel2l not like '%хз%' AND cell3 not like '%хз%'

или

WHERE cell1 = 1 AND cell2 = 1 AND cell3 = 1

Нельзя ли их как нибудь сократить типа
WHERE cell1 = cell2 = cell3 = 1
а то печатать заебался уже.
Аноним 16/03/17 Чтв 16:21:16  955046
>>955042
like запросы это всегда заебись. Скажи спасибо системным и бизнес аналитикам, кто не смог выявить четкие сущьности.
Аноним 16/03/17 Чтв 18:17:28  955098
>>954738
Да. Шансы на то, что у тебя для разных анкет будут пересекаться вопросы - около 100%.
Вообще, если идти по пути повторного использования данных, то можно много чего найти. Но это уже если надо будет. Просто это наиболее вероятное, что может пригодиться.
Аноним 16/03/17 Чтв 18:21:23  955101
>>955042
По поводу второго случая в ms sql можно было бы написать 1 IN (col1,col2,col3).
Попробуй поиграться, может в mysql тоже можно.
Аноним 16/03/17 Чтв 20:20:19  955213
>>955098
спасибо большое
Аноним 16/03/17 Чтв 20:46:05  955243
>>955213
Подумай ещё над схемой. Мне кажется, с анкетами тут всё не так просто, как кажется. Информацию про шаблон анкеты было бы неплохо с результатом анкетирования хранить. В этой схеме выходит, что нужно перелопатить таблиц кучу, чтобы id шаблона найти.
Аноним 16/03/17 Чтв 21:07:27  955265
Безымянный.png (86Кб, 970x795)
>>955243
если честно больше ничего в голову не лезет.
тут в принципе действительно было бы неплохо иметь возможность переиспользования вопросов из анкет. я это впринципе и сделал.
а вообще просто по сути мне нужно хранить значение набранных баллов клиента, с целью выдать ему кредит или нет, и на какие вопросы как он отвечал.
я сейчас сделал это так: в таблицу test_result добавил поле scoring_map_id, и связал таблицы scoring_map 1:N test_result. и получается, когда мы смотрим результаты анкетирования, мы можем посмотреть какие анкеты клиент проходил, и что он там отвечал.
насколько это правильно? может подскажешь как бы ты это реализовал.
Аноним 16/03/17 Чтв 21:09:20  955267
>>955265
бля, не тот скрин.
в что пока у меня в итоге получилось
Аноним 16/03/17 Чтв 21:09:44  955268
Безымянный.png (90Кб, 926x863)
>>955267
Аноним 16/03/17 Чтв 21:51:39  955294
>>955268
Ну сойдёт крч. Мы пытались.
Аноним 16/03/17 Чтв 22:10:54  955307
>>955294
не, если на схеме что-не верено подскажите. я исправлю
Аноним 16/03/17 Чтв 22:25:54  955330
>>955307
Ну не вижу я больше ничего такого.
Аноним 19/03/17 Вск 09:08:35  956757
>>951629
начни с переезда на postgres
Аноним 20/03/17 Пнд 21:50:41  957829
Сап, БДач, посоветуйте годные гайды по SQL запросам MS ACCESS, в гугле куча всего но что из них гуд - хз.
Аноним 20/03/17 Пнд 21:55:08  957832
>>957829
Братишка, с access всё очень сложно. В универах, например, его рассматривают на уровне схем максимум, потом идёт sql. Всё как в жизни.
Скорее всего, придётся выбирать самому.
Аноним 20/03/17 Пнд 21:57:38  957835
>>957832
Ясно, просто нужно для олимпиад по технологиям
Аноним 20/03/17 Пнд 21:58:38  957836
>>957835
Это что за зверь такой?
Аноним 20/03/17 Пнд 22:00:34  957837
>>957836

Дают задания на Word,PP,Excel,Access сделать по образцу/текстовому описанию
Аноним 20/03/17 Пнд 22:01:57  957838
>>957837
В чём профит участия?
Аноним 20/03/17 Пнд 22:03:19  957841
>>957838
Дополнительные баллы за приз места в 11 классе при поступлении
Аноним 20/03/17 Пнд 22:04:37  957845
>>957841
Понятно. Удачи.
Аноним 21/03/17 Втр 00:38:28  957957
Сап, анон. Подскажи, плез, как в Oracle можно сделать нумерацию сотрудников по отделам (аналогично row_number() over (partition by) ), используя конструкцию with as?
Аноним 21/03/17 Втр 15:01:32  958212
>>957957
Ты хочешь просто row_number() туда перенести или вообще от row_number() в запросе избавиться?
Аноним 21/03/17 Втр 20:30:52  958491
>>958212
Избавиться.
Аноним 21/03/17 Втр 22:00:26  958557
>>958491
Зачем понадобилась альтернатива?
Аноним 21/03/17 Втр 22:52:55  958583
>>958557
Задание такое.
Аноним 21/03/17 Втр 23:05:37  958589
>>958583
Самое лучшее, что нашёл:
http://stackoverflow.com/questions/1453747/oracle-sqlget-all-integers-between-two-numbers

http://oraclenotes.ru/?p=71

Может тут кто-нибудь, работавший с ораклом, будет мимо проходить и поможет. Но это всё, что есть на тему.
Аноним 21/03/17 Втр 23:11:08  958593
>>958589
Про rownum я и так знал, но я хз, как сделать перебор по отделам, чтобы вывести персонал для каждого отдела отдельно. Но все равно спасибо.
Аноним 22/03/17 Срд 07:39:09  958790
>>958557
row_number это нестандартное SQL-расширение
Аноним 22/03/17 Срд 17:58:04  959088
>>958593
Не звучит, как сложная задача. Если дашь подробности, кто-нибудь поможет.
Аноним 31/03/17 Птн 10:35:33  964081
Аноны, помогите правильно спроектировать базу. Есть контора, которая осуществляет испытания. От клиентов принимаются заявки. В каждой заявке указаны виды испытаний (может быть несколько). Т.е. я предполагаю наличие сущности "Заявка" и наличие сущности "Виды испытаний", связь многие ко многим. По каждому виду испытаний есть несколько показателей, которые надо измерить. Опять предполагаю сущность "Показатели" и связь многие ко многим с "Виды испытаний". По каждому виду испытаний в заявке составляется протокол, где должны быть указаны фактическое и требуемое значение показателей. У меня трудности, как связать сущность "Протоколы" с имеющимися. Правильнее будет связать с "Заявками" как многие к 1? Или же с промежуточной таблицей "Заявки_Виды"? И как сюда привязать показатели? Создать промежуточную таблицу с атрибутами ID_протокола, ID_ВидаРабот, ID_Показателя?
Спасибо
Аноним 31/03/17 Птн 10:37:56  964083
>Опять предполагаю сущность "Показатели" и связь многие ко многим с "Виды испытаний"
Тут связь многие к 1 с "Виды испытаний"

самофикс
Аноним 31/03/17 Птн 13:06:36  964151
На что влияют
SET ECHO OFF
SET VERIFY OFF
я так понимаю это просто отключения лога в командной строке, но чем эхо отличается от верифай?
Аноним 31/03/17 Птн 20:08:12  964460
>>964081
Братиш, ты уже понял, что никто за тебя базу не будет делать. Накалякай на access что-нибудь и приходи ещё раз.
Аноним 31/03/17 Птн 22:46:07  964553
physical.png (37Кб, 1035x536)
logical.png (15Кб, 811x459)
>>964081
>>964460
Вот такой трэш получился. Выслушаю конструктивную критику.
Аноним 31/03/17 Птн 23:20:42  964565
>>964553
Поздно уже, сегодня не смогу помочь. Ну и тот факт, что я с трудом понимаю, что же тут на самом деле-то происходит, тоже нифига не помогает.
Это какая-то супер обобщённая модель aka laba1 или есть какие-то шаблоны, стандартные наборы? Например, стандартные протоколы, виды работ, показатели, нормы.
Аноним 01/04/17 Суб 08:14:04  964640
>>964565
В общем, фактическое значение из таблицы "Показатели" убрать мне надо, так как есть в соседней таблице. Таблицы "Виды работ", "Показатели" - в качестве справочников.
Аноним 01/04/17 Суб 12:36:12  964722
>>964640
Ну та часть, что ты словестно описал, выглядит правдоподобно.

Пару вопросов:
1) На каждый протокол только один инженер-испытатель?
2) У тебя на каждый вид работ в заявке может быть несколько протоколов. Так было задумано?
Аноним 01/04/17 Суб 18:41:10  964945
>>964722
1) Да
2) На каждый вид работ - соответственно 1 протокол, я объединил таблицы "Заявки_ВидыРабот" и "Протоколы"
Аноним 02/04/17 Вск 22:22:04  965681
physicalunion.png (32Кб, 1019x522)
>>964945
>>964565
Теперь вроде всё норм, а чтобы не делать много протоколов по одному виду из одной заявки, добавлю ADD CONSTRAINT UQ_Заявки_Виды UNIQUE (ЗаявкаID, ВидРаботID).
Аноним 04/04/17 Втр 22:55:56  966974
Gомогите с Access, а то я тут горю просто.
Как сделать запрос на промежуток данных. Конкретно дат.
пишу
WHERE [Дата] Between #1/1/2017# And #31/1/2017#
Пишет задано значение для операции без оператора.
Может ему как-то конкретно надо на дату указать, как это сделать ?
Аноним 05/04/17 Срд 14:16:55  967304
>>966974
попробуй сделать запрос в конструкторе и посмотри как его автоматом пишэд сам аксесс
Аноним 11/04/17 Втр 19:03:38  971973
Бамп еще работает?
Аноним 11/04/17 Втр 20:12:04  972003
>>971973
Неа, тонем.
Аноним 11/04/17 Втр 23:57:22  972172
>>972003
Завтра запилю перекат, нужно запрос на оп-пик потупее придумать.
Аноним 15/04/17 Суб 11:21:31  973924
>>972172
перекат https://2ch.hk/pr/res/973923.html

перекат https://2ch.hk/pr/res/973923.html

перекат https://2ch.hk/pr/res/973923.html
Аноним 23/04/17 Вск 22:41:44  978753
Ребят, я к вам из PHP-треда, только -только вкатываюсь в MySQL. Имею БД students, хочу создать в ней следующую таблицу:
CREATE TABLE student
( name VARCHAR(30),
surname VARCHAR(30),
gender VARCHAR(30),
group VARCHAR(5),
mail VARCHAR(20),
score SMALLINT UNSIGHNED,
yearofbirth YEAR,
placeofbirth VARCHAR(10),
password VARCHAR(40));

и вылезает вот это:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'group
VARCHAR(5),
mail VARCHAR(20),
score SMALLINT UNSIGHNED,
yearofbirth' at line 5
Аноним 23/04/17 Вск 22:42:54  978756
>>978753
Как быть?
Аноним 24/04/17 Пнд 09:45:25  978962
>>978753
UNSIGNED, например.
Аноним 24/04/17 Пнд 14:02:24  979087
>>978962
Спасибо, уже исправил
Аноним 13/05/17 Суб 10:16:50  989856
Перепишу из ньюфагтреда.

Господа, есть один MS SQL сервер, база в нем, хранимка в базе.
Хранимка выполняет роль поиска по этой базе.
Представляет собой простой селект, объединяющий кучу таблиц через left join и сотней условий в where.
Типа: SELECT * FROM (
SELECT a, b, c FROM table1
join table2
join table3
)

Вся эта хуйня дико тормозит, хочу переделать.

Есть какой-то нормальный способ делать поиск по БД? Без хранимки на 100 параметров, без объединения всех-всех таблиц?

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

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