В этом итт ай-ти треде собираются все любители Баз данных, гордо именующие себя айтишниками. Доказываем друг другу, что >SELECT ID FROM b_entity_tvoya_mama это тоже программирование, Креэйтим индексы на одно и то же поле по 100 раз и инклудим в них всякие поля на всякий случай, Храним gender в NVARCHAR(2000), Поясняем, как можно без задней мысли хранить бизнес-логику в бд, а не в приложении, Рассказываем, как обновлять хранилище данных актуальными real-time данными раз в минуту, Называем логично и понятно поля в логичных и понятных таблицах >CREATE TABLE tablica_s_clientami ( >ID_CLIENTA INT NOT NULL >IMYA NTEXT, >"DATA ROJDENIYA" NVARCHAR(MAX)) Ну и, конечно же, выбираем лудшую СУБД для всего: MY SQL MS SQL PostgreSQL ORACLE MongoDB SQLite Excel И даже Google Docs! В общем, это очередной баз данных тред.
Господа, установил я AdventureWorks. При попытке сформировать диаграмму бд - выдает пикрелейтед. Пользователь dbo создан. В чем ещё может быть проблема?
Пытаюсь использовать PyQt5 + MySql 5.7. С помощью QSql.QSqlDatabase не могу подключится в MySql. lastError выводит driver not loaded, хотя драйвер и в списке drivers() есть, и физически присутствует в необходимой папке, установки хоста, логина, пароля, и имени бд правильны, что проверялось не один раз. Что необходимо сделать, чтобы установить подключение с БД?
>>1014847 >Привет, не самый частый гость здесь! >Стаж почти два года, работаю в топ-10 банке (без подробностей, деанон), зп чуть больше сотки чистыми. >Ты dba? А расскажи пожалуйста про свою работу побольше, мне это очень интересно. Сам я чистый dbd, к администрированию никакого отношения не имею, но подозреваю, что рано или поздно моя любовь к базам данных и желание углубиться в тему приведут к тому, что я стану администратором бд или архитектором.
Ответ на пост из предыдущего треда. Нет, я тоже oracle dbd, и немного подправляю интерфейсную часть php/js/xslмакака, лол. Просто твой пост навел на мысль, что свернул я где-то не туда, до этого 3 года был околопрограммером, немного админил, поднимал standby сервер и базу из бэкапа восстанавливал, по-хорошему занимаюсь разработкой последние 2 года на проекте в ноунейм конторке. Вот думаю надо двигаться дальше, т.к. задачи и зарплата уже не соответствуют ожиданиям. Расскажи, если не трудно, чем приходится заниматься по работе, какие скиллы прокачаны по части оракла и в целом по теории БД? Как попал в ТОП-10 банк?
Мне тоже кажется, что я свернул никуда, потому что на нормальных вакансиях требуется бд + что-нибудь, а я только бд знаю. Никакими языками программирования я так и не овладел. Так всю жизнь и буду недопрограммистом. В отделе тоже есть люди, которые пилят интерфейсы на js/c#, но я делаю строго отчетики. То есть я не etl-щик даже, не админ, просто пишу запросики в sql. Работа состоит из двух этапов: сделать процедуры, которые собирают нудные данные, что-нибудь считают и тп. Дальше нарисовать отчетик в MSRS. Скиллы? Ну так, между делом читаю что-нибудь, интересуюсь. Как попал? Ну во-первых вышка хорошая, во-вторых, опыта набрался нормально за полтора года. На собеседовании почти только sql спрашивали, всякие в меру сложные запросы. Попасть в банк не так уж сложно, на хедхантере куча вакансий, я мониторю.
>>1016260 Привет. Зашёл в бар поссать, взял пива. Рассказать историю жизни? Попробую. Началось все, конечно, с лучшего технического вуза этой страны. Не спрашивайте, какого, я же всё-таки сохраняю анонимность. Я уже говорил, что считаю образование одной из причин моего относительного успеха. Интерес к учебе я потерял быстро, последние семестры бакалавриата уже скорее доучивался, недели учился. В итоге средний балл по диплому 4, хотя первые семестры были даже на стипендию закрыты. Решил, что хватит это терпеть, в магистратуре решил работать. Выбрал себе в магистратуре кафедру похалявнее и стал искать работу. Был в нескольких местах, пошел по сути в первое, в которое взяли. Я нихуя не умел, вот вообще нихуя, и вместо того, чтобы на последних курсах задрачивать что-то полезное, я сидел и деградировал в интернете. У конторы, в которую я в итоге попал, была такая политика: берём молодых ребят, которые нихуя не умеют, но при этом умные и желательно с топовым образованием, и учим всему сами. Вот меня туда взяли. Тут я впервые познакомился с sql и бд оракл, понравилось, и это определило мой дальнейший путь. Как там Том Кайт говорил? Сначала сделай в оракле, если не можешь, сделай в джаве, если не можешь в джаве сделай в си, а если не можешь и в си, то задумайся, нужно ли тебе это делать. Так вот, к чему я. В этой конторе работа происходила приблизительно по такому же принципу, только вместо си - делфи (на котором работали чистые погромисты и меня он не касался), а вместо джавы свой обоссанный язык программирования, который был разработан специально там, по синтаксису очень похожий на Паскаль, но с добавлением всяких своих приколюх. В общем, работа состояла где-то 50/50 из оракла и этого говна, и это говно очень угнетало тем, что оно бесполезное. Спустя чуть больше года, словил жёсткую депрессию и уволился буквально в первое место, в которое позвали, чтобы заниматься чистым ораклом. На собеседовании показалось, что ребята серьезные, много интересного спрашивали, казалось, что я там сильно скилл оракла прокачаю, но нет. Свелось все к тому, что первые пару недель я читал доки оракла и прочие книжки по sql (дохуя нового узнал, кстати, от души, спасибо). А реальных задач мне так и не давали. Ну и в целом контора была очень днищная и убогая (топ-50 банк). Прошло 3 месяца, заканчивался испытательный, я всерьёз думал, что меня могут уволить, потому что я нихуя не делал (как оказалось, нет, начальник был мной доволен и даже пообещал поднять зп через пару месяцев, если останусь), решил сходить куда-нибудь на собеседование. И вот меня пригласили в первое место, в которое я сходил, и сделали поистине восхитительный оффер, вполне соответствующий моему скиллу, возрасту и амбициям. Ну и я съебал. Недавно вот испытательный тут закончился, зп стала 120к до налогов, доволен как черт. Таким образом, к моменту окончания магистратуры имею такую восхитительную зарплату и хочу расти дальше, хоть и не знаю, как именно.
Что на собеседованиях спрашивают? Ничего конкретного не вспомню сейчас. Какие нормальные формы бд знаешь? Ну короче именно по теории бд достаточно статей на Википедии почитать, глубже никто не копает. В основном аналитические функции спрашивают (кстати, в моих отчетиках в топ-10 банке они постоянно используются, охуенная штука). Про хинты спрашивают, ну типа какие знаешь, какие тут будешь использовать, какие тут. Про джойны много вопросов. Хоть убейте, не помню конкретные примеры. И вообще у меня пиво закончилось, пока я писал, пойду домой.
>>1016430 Спасибо за развернутый ответ! Если обобщить, написанное тобой выше, то получается, что зная только sql и теорию БД на уверенном уровне можно претендовать на 120к? Образование сильно роль играет в топовых конторах? Вообще как мне кажется аналитические функции и использование хинтов - это продвинутый уровень, может поэтому я и получаю в 2 раза меньше, лол.
>>1016438 А ещё быть эрудированным и няшным пидорком, чтобы понравиться на собеседовании. Не такой уж продвинутый. Если ты занимаешься sql постольку поскольку, то в резюме будет написано "базовое знакомство с sql, базовые навыки написания запросов в sql". А если ты пробуешься на вакансию именно разработчика оракла, то всю эту хуйню надо знать.
>>1016438 Про образование я тебе не ответил. Влияет, конечно. Не как главный фактор, а просто как одно из твоих достоинств. Но ты вполне можешь брать другим. Это не самое главное. Когда я искал первую работу, я четко осознал, что за один только диплом меня никто не возьмет, важно, что я из себя представляю. Как мне кажется, диплом влияет на вероятность того, что тебя позовут на собеседование. Если ты закончил какой-нибудь МухГУ, тебя с меньшей вероятностью позовут на собеседование, чем меня. Ну а на самом собеседовании уже как себя покажешь. В моем подразделении, например, процентов 70 из МГУ/МФТИ/МИФИ/МГТУ, но и из ноунейм заведений тоже есть люди.
>>1016451 Т.е. конкуренция есть, прояснил некоторые моменты, держи няшку. Еще один вопросик, как качать скиллы оракловые, хинты и т.п.? По своей работе с хинтами никогда не сталкивался, всегда было достаточно грамотно написать запрос, чтобы индексы цеплялись, иногда смотрю планы, анализирую, но применить что-то новое не получается, да и просто смысла не имеет. Ну и аналатика так или иначе сводилась к использованию агрегатных функций. Судя по твоему опыту предыдущему, то ты тоже это не использовал, получается, что просто читал книжки и запоминал? Можешь порекомендовать что-то конкретное и прикладное, вроде Тома Кайта(у него скорее обобщенная инфа, чего не стоит делать программисту в оракл бд и как делать грамотно). Например по аналитическим функциям или по тем же хинтам. Конечно можно просто доку зазубривать по oracle sql.
>>1016473 Ну да, на первой работе я в принципе не знал, что такое хинты. Вообще, все мое изучение оракла сводится к гуглу. Либо мне что-то нужно сделать и я это гуглю, либо мне что-то интересно и я это гуглю. Книжек целенаправленно не читал. Недавно списался с барыгой на Авито, хочу у него Кайта прикупить. Начну серьезное изучение.
Коллеги, посмотрите, пожалуйста, что из этого можно купить почитать? Я хотел пункт 1, разумеется, но он не в наличии. Что ещё годно? Меня в основном 11g/12c интересует.
1. Т.Кайт. Oracle для профессионалов, 3-е издание (2 тома) /600
2. С.Фейерштейн, Б.Прибыл. Oracle PL/SQL для профессионалов, 3-е издание /300
3. К.МакДональд и др. Oracle PL/SQL для профессионалов: практические решения /300
4. С.Урман. Oracle9i - Программирование на языке PL/SQL /300
Посоветуйте хорошую книгу по базам данных. Главное что нужно - небольшой объем. Нет, я не ленивый, но сейчас другие приоритеты, но и знания по базам подтянуть надо. Начал читать Дейта, но сильно затянуто. Мне такой объем ни к чему. Цель - научиться оптимизировать запросы, знать какую базу и где применить, понять что такое индексы и т.д. У меня сейчас уроверь select,insert,join. sql знаю, MySQL на уровне php разраба - insert/select/join и прочая хрень
>>1017132 Ну советую просто синтаксис рабочей базы учить глубже. Например, гуглишь про join, там у него опций куча. Смотришь описание опций. Если нашёл что-то интересное, то можно отдельно загуглить статей каких-нибудь именно по ней. Или можешь не читать подряд книгу, а читать именно то, что цепляет щас.
В общем, есть одна коллекция в MongoDB с 1.5 миллиона записей такого формата:
{id: Int32, t(ime): Double, s(tatus): Int32}
В коллекцию каждую минуту складывается примерно ~1200 записей (distinct('id').length = 1200), затем я запрашиваю данные по определенным id (в среднем 300-400, до 600) за последние 3 часа вот таким образом (прикреплейтед).
Индексы следующие:
{ id: 1, t: 1 }
Так вот, запрос выполняется 1.5 секунды, в результате получаю ~100к записей (для 600 id). Подскажите, это вообще нормальная скорость? Я то думал "ну это же nosql епта, в пару сотен мс уложусь". Может, дело именно в моем компуктере и на google cloud platform будет быстрее?
>>1017222 а какая БД позволит сделать указанную задачу быстрее? я в общем-то не привязан пока к конкретной, так, колупаю все подряд. ну и желательно чтобы app engine поддерживал
>>1017226 Нам Clickhouse от Яндекса помог, оче быстро работает, там правда column-store и немного обрезанный SQL , но нам подошло. А так хз, что тебе советовать, мало какие БД пробовал. Недавно вот разве что очень приятно работалось с JSON в Postgres.
Пацаны, помогите. Предлагают второе издание Кайта + Льюис Основы стоимостной оптимизации за 1.5к вместе. Нормально или торговаться? Состояние у книг отличное.
Аноны, помогите мне запрос написать. У меня в универе ничего подобного не было. Даже когда две таблицы связывали, неприпомню, чтобы одно и тоже поле (фамилия) два раза выводилось. Как это сделать это вообще?
>>1017574 Ну ты чего, дурашка. Берёшь основную таблицу и к ней дважды прицепляешь таблицу юзеров. Select u1.name, u2.name, t.sum From таблица_платежей t Left join таблица_юзеров u1 on t.user_id1 = u1.user_id Left join таблица_юзеров u2 on t.user_id2 = u2.user_id
>>1017577 Сомневаюсь, но удачи ладно, возьмут, смотря на кого, это я тут топовый оракловщик, а если тебя будут простейшие запросы спрашивать, то возьмут Давай ещё задачки
Аноны, я сейчас выпилюсь нахуй. Значит есть база в mysql, создал я её таким образом CREATE DATABASE `db_example` CHARACTER SET utf8 COLLATE utf8_general_ci; Потом сделал там таблицу create table if not exists users (id bigint auto_increment, login varchar(256), password varchar(256), primary key (id)); И пытаюсь в эту таблицу записать строку: insert into users (login, password) values(a,3); и тут у меня выскакивает ошибка 1054 Unknown column 'a'. И хуй знает из-за чего это может быть, если пытаюсь записать в values все цифрами то даёт вставить строку. Может кто знает как это поправить?
>>1017705 А как совсем без подзапросов? Как по мне, самое красивое: delete from t where t.rowid <> (select max(t2.rowid) from t t2 where t2.a = t.a and t2.b = t.b)
>>1017903 Ещё обещали рост до 80 в течение полугода, но все равно не пошел. Город ДС, конечно. Разработчик PL/SQL. Хз, в каком ты банке работаешь, в моих банках на самой стартовой позиции платят 80-90.
Что сейчас нужно для работы с базами данных? Какие системы управления базами данных (СУБД) сейчас популярны? Какие средства, технологии, библиотеки нужно знать? Что спрашивают работодатели на собеседованиях про базы данных? Какие средства популярны сейчас для работы с базами данных на различных языках программирования (C++, Java, C# и т.д.)?
Sup, программач. Помогите пожалуйста спроектировать БД. Представьте есть интернет-магазин книг. Юзер заходит (по своим логину и паролю) и добавляет книги себе в корзину. Если у него есть купон на скидку (например, 15%), то он его вводит и после этого у него на все книги скидка 15%. Какие таблицы создавать и какие связи между ними?
Вот понятно, что будет таблица "Книга", а что делать со всем остальным? Типа создать таблицу "Купон на скидку", отдельно таблицу "Скидка", где будет храниться размер скидки в процентах? Или как? А как реализовать корзину? Помогите, ребят.
>>1017940 Купон только один на весь заказ? Будут такие таблицы Пользователи (ид, ид_купон) Книги Прайсы книг (ид книги, цена, дата начала действия цены, дата окончания действия цены) Таблица корзин (ид пользователя, ид книги, цена, скидка (1 по дефолту и выводишь в интерфейсе произведение цены на скидку)) Купоны (ид, дата начала, дата конца) При добавлении книги в корзину добавляешь ее актуальную стоимость в таблицу для корзины, 1 в качестве скидки) При вводе купона проверяешь наличие актуального купона в таблице купонов и делаешь апдейт поля скидка по юзеру
>>1017958 И если книга добавляется после ввода купона, то в качестве скидки можно сразу подтягивать скидку из таблицы купонов. А при удалении купона ставить везде скидку 1. Также на моменте окончательного сохранения заказа нужно проверять, действует ли купон, иначе удалять и проставлять скидку 1. Спасибо за интересную задачу, попробую на домашний бд реализовать под пивас.
>>1017958 Знаешь что... Лучше не храни в таблице корзины ничего... Пусть там будут только ид пользователя и ид книги, а все остальное актуальное подтягивай...
>>1017972 Ну короче я думал, что это не персональная хуйня, а типа введите промокод 'TIPIDOR' и получите скидку 15%. Тогда при вводе промокода будет делаться запрос к таблице промокодов и проверяться, если ли такой промокод с нужными сроками действия. И сохраняться для юзера. 1 юзер, ему соответствует 1 купон. Моя схема будет поддерживать как персональные купоны, так и массовые.
>>1017979 И как ты себе представляешь наличие нескольких корзин у одного пользователя? Пользователь должен видеть при заходе на сайт результат запроса select * from таблица корзин по ид_пользователя.
>>1017984 Ну, я исходит из того, что у пользователя только одна корзина. А если так, как ты говоришь, нужна связь между "Пользователи" и "Корзины" один-к-одному?
>>1017984 Я полагал, что таблица для корзины будет динамической, добавлять и удалять книги. И пользователь будет видеть то, что у него добавлено по его ид. После оформления заказа удалить из нее записи пользователя. Ид в этой таблице - не ид корзины, просто ид строки
>>1017991 >Я полагал, что таблица для корзины будет динамической, добавлять и удалять книги. И пользователь будет видеть то, что у него добавлено по его ид. После оформления заказа удалить из нее записи пользователя. Правильно ты полагал, я именно так и хотел.
>Ид в этой таблице - не ид корзины, просто ид строки Строки для каждой книги в таблице? То есть, к примеру, user1 заказал книгу Пушкина и книгу Лермонтова. По итогу у него в корзине 2 книги, а это 2 записи в таблице "Корзина" c одним id_пользователя, но разными id_корзины. Ну, да, по идее правильно было бы переименовать "id_корзины" в "id_строки". Ты ведь это имеешь в виду?
>>1018003 Посмотри, анон. Это уже более конечный вариант. Только я не могу придумать как правильно реализовать такую фичу, что пользователь вводит промокод и у него на всё появляется скидка. То есть должна ведь существовать таблица скидок (как на моей пикче)? А в ней промокод так же, как и на отдельном купоне. И потом делать сравнение, типа если промокод совпадает, то из таблицы "Скидки" вытаскиваем конкретное значение скидки в процентах? Или как? Даже не знаю...
Почему я предлагаю использовать таблицу юзер_купон. При заходе на сайт пользователь должен видеть 'у вас введен такой-то купон, даёт вам такие плюшки' как результат селекта из этой таблицы. Если купон уже не актуален, удаляем строку. Если вводим новый - merge в эту таблицу. При оформлении заказа тоже чистим. Я вообще сначала это хотел в таблице юзеров хранить, но там будут всякие личные данные, нехуй ее лишний раз логировать
>>1018008 Ага, понял. Значит я добавлю таблицу "юзер_купон" как соединительную типа. А что делать с величиной скидки? Скидка же должна быть отдельной таблицей? Ну, типа для того, что сделать проверка авось юзер введёт промокод, которого нет и никакая скидка этому промокоду не соответствует. Я прав, неправ?
>>1018007 Тебе не нужна таблица скидок. В таблице - справочнике купонов ты будешь хранить его ид, его сроки действия и скидку, которую он даёт. Логику хранения купона по юзеру я тебе вроде как описал. Процедуры, которые выводят содержимое корзины и формируют заказ, должны выгдядеть следующим образом: Select t.id_user, t.id_knigi, p.price, s.skidka From таблица корзины Left join таблица прайсов p on p.id_knigi = t.id_knigi (и условие на даты) Left join таблица пользователь_купон pk on t.id_user = pk.id_iser Left join таблица купонов s on s.id_kupon = pk.id_kupon (и здесь условие на даты) Where t.id_user = ты
>>1018020 А как тогда проверяется промокод? Вдруг он введён неправильно? Вообще говоря, это тестовый проект, поэтому я включал сюда таблицу прайсов, которую ты предлагаешь, я все прайсы сохраняю тупо в таблицу книг как поле. То же самое по поводу дат - они в задании не нужны. Предполагается, что они типа действует всегда для конкретного юзера.
>>1018028 >Смотря что для тебя мало. Сколько зп ты хочешь на своей работе? Что за должность? Я, вообще говоря, студент ещё, опыта работы нет, так что вряд ли мне станут много платить. Вот пытаюсь впервые устроиться Java-программистом.
>>1018028 >Ну я об этом говорил, да. Спасибо большое, анон. Ты прям выручил меня. Надеюсь этот тред ты посещаешь часто? Можно я тебе тут же потом ещё отпишу на тот случай, если будут какие-то проблемы с SQL-запросами?
>>1018036 Да нет, я лох просто. Сижу, отчетики обоссанные рисую. А вечерами читаю Тома Кайта, мечтаю стать большим специалистом по базам данных и тихо плачу...
>>1018181 В ЗП потерял или выиграл со сменой работы? Я на отчетиках больше получаю... Алсо, терминология очень мутная. Можешь как-то конкретизировать спектр задач? Я считаю аналитиками тех, кто пишет мне ТЗшки, а разработчиком того, кто создает всякие процедуры и реализует всю хуйню, то есть себя. Но понятно, что в разработчик dwh другой смысл вкладывается, мне бы понять, какой. Я короче какая-то промежуточная и паразитирующая хуйня, которая и не аналитик, и не разработчик.
>>1018212 Аналитик - чел, который строит отчеты, пиздит с заказчиком, формирует требования к витринам данных. Если речь идет о хранилище. А разраб - хуярит витрины, процедуры по наполнению хранилища, оптимтзирует запросы (пок, пок, юзернейм, посмотри, у меня там вьюшка что-то долго работает >left join tbl_oche_bolshaya_tablica obt on 1=1 ) ну и, чего греха таить, тоже пилит отчетики, сейчас граница, вообще, очень размыта, например, я разраб, но сервак тоже я админю почему-то, а, когда руководителя аналитического отдела нет, я же еще и пизжу с заказчиками, вот такой пиздец.
>>1018212 В зп выйграл, причем уверенно, почти в 2 раза. Аналитиком на прошлую работу пришел на 40, когда перешел в разрабы, получал 60, теперь соточка. Дс, если что.
Вы тут наркоманы все. Корзину не надо в БД хранить, это нинужно, лучше в пользовательской сессии, это временные данные. Зачем купоны привязывать к пользователям? Кто ИРЛ их будет каждому пользователю в соответствии ставить? Нужно, обратно же в сессии сделать переменную для идентификатора купона. И интерфейсик - пользователь вводит код купона и если он правильный - купон идет в сессию, начинают работать скидки.
далее. Нужно организовать таблицу сейлс и сейлс лист - это то, что пользователь заапрувил корзиночные данные, то есть согласился купить. сейлс - идентификатор, ид_пользователя, датавремя, адресдоставки, купон сейлс_лист - идентификатор, идентификатор_сейла, идентификатор книги, конечная цена ( с учетом купонов )
>>1018842 Как устроиться разработчиком, если я недоаналитик? Пилю несложные отчеты и пишу хранимки. Что нужно уметь, чтобы быть именно "Разработчиком MS SQL"?
>>1019617 >>1018055 + советую похавать C#, потому что есть такие вещи, которые рядовым sql сделать либо сложно, либо невозможно. (Clr, ssis script tasks, боты о работе бд для телеграмма и пр. свистелки) Но это необязательно.
>>1018025 >>1019672 И "купоны" тебе нужно соединять с "корзиной" один ко многим. У тебя получится, что в таблице "корзина" может быть запись с одним пользователем, который может купить две разные книги по разным купонам.
Здравствуйте. Сегодня первый раз в карьере использовал group by rollup. Испытал настоящий оргазм от того, что я это знаю и что решил проблему так красиво. Все же стоит изучать вещи, которые не пригождаются почти никогда, именно ради тех ситуаций, когда они нужны.
>>1018841 Ну вот смотри. Я не пизжу с заказчиками, я получаю от аналитика ТЗ на отчетик. Я пишу хранимки для этого отчёта, создаю таблицы, кручу джобы. Рисую сам отчетик. Кто я? Лох?
>>1019634 Хотелось бы развить эту тему. Вот я божественный разработчик PL/SQL. Однако в вакансиях чистых PL/SQL разработчиков не так много, часто ещё дополнительно какой-нибудь язык нужен. Так вот, какой мне учить? Часто вижу комбинацию delphi + sql, но я же не обиделся на себя, я не буду учить этот язык. C# проскакивает. Есть ещё комбо java + pl/sql, но тут, как мне кажется, нужен прежде всего разработчик java с посредственным знанием sql, ну а я бы хотел оставить базы данных своей специализацией.
>>1020291 хз как дела обстоят в целом по больнице, но в нашей конторке интерфейс на php и js состряпан, иногда приходится ковыряться в веб, двухзвенка по сути, в трехзвенке сервер приложений скорее всего на java, если база оракловая.
>>1020287 Твоя должность называется зачастую >разработчик корпоративной/аналитической отчетности. Сейчас это уже хуйня, ибо в норм конторах аналитики, все-таки, сами рисуют отчеты.
>>1020291 Если оракл бд, то, конечно же, жава, что еще. Сам с оракловскими бд не работал, но уверен, что есть какие-нибудь возможности расширения для них (https://docs.oracle.com/cd/B28359_01/java.111/b31224/oraint.htm) на лжаве. Если не хочется, то можно нагуглить еще информационные системы на оракловских бд и начать изучать их, тоже повысит твой спектр предоставляемых услуг и, соответственно, цену на рынке. Можно начать прокачивать скиллы dba, ведь одного plpgpqpapokpok sql для этого маловато.
>>1020868 Платят мне нормально очень даже, но есть инсайд инфа, что аналитикам и etl-щикам в моей конторе платят больше. Впрочем, можно будет и к ним попроситься когда-нибудь. Не хочу загадывать, спасибо за поддержку, все хорошо будет Я сейчас люблю базы данных и хочу развиваться в этом направлении, Кайта читаю.
>>1021106 Короче, я не веб-макака и айкью у меня повыше твоего, но все знаю, что чем меньше запросов, тем лучше. Покажи/расскажи свои запросы, скажу, как оптимизировать.
>>1021116 Страница богатая, данных много и требования часто по ним меняются, поэтому проще делать отдельные запросы. Про 10 может и преувеличил, большая часть маленьких справочников давно в памяти. На самом деле, это не такая уж и проблема и точно не узкое место, сервер бд у заказчика - полный фарш.
Не могу понять почему данный запрос ничего не выводит(рис. 1), хотя переменная @diff содержит в себе результаты, соответствующие для вывода(рис. 2). Где я допускаю ошибку? БД - MySql SELECT lastCheck, nextCheck, @diff := (TO_DAYS(nextCheck) - TO_DAYS(NOW()))/30.5 AS diff FROM ttc WHERE @diff <= 2 ORDER BY diff ASC
>>1021508 MySQL Workbench 6.3 CE А как надо? Я никогда еще не использовал "динамические" переменные, а то, что ты отметил, - результат со стаковерфлоуа.
>>1021530 Зависит от реализации СУБД. Большинство умеют похожие выражения распознавать и нормально с вложенными запросами работают. Так что это скорее дело вкуса, но если колонка будет большая, то особого выбора тогда не будет. Таким же образом группировать можно, если не даёт.
>>1021545 Ну блять. Я попытался решить задание типа "Вытащить из таблицы имена всех кораблей, утонувших в Атлантике в 1942 году" на каком-то сайте, и после часа понял, что нихуя не понимаю.
>>1021533 Мне всегда казалось, что БД так же содержит в себе и синтаксис запросов, а СУБД играет инструментальную для пользователя БД роль, так же, как библиотеки, предназначенные для выполнения запросов из программы. Иначе бы каждый разработчик таких библиотек делал синтаксис так, как ему кажется более удобным.
>>1021475 select * from ( SELECT lastCheck, nextCheck, (TO_DAYS(nextCheck) - TO_DAYS(NOW()))/30.5 AS diff FROM ttc ) ttc_with_diff WHERE diff <= 2 ORDER BY diff ASC
Поболтали с начальником щас, рассказал о последнем собеседовании. Такие вопросы лайтовые и такие люди дауны. Тяночка для вывода актуальной зарплаты сотрудника использует три вложенных селекта, вместо использования keep dense_rank Не знает, что вернёт full join по таблицам, в которых id null Не знает, как работают агрегатные функции на null значениях. Не знает, что вернёт запрос select * from a, b
Анон, подскажи, какие книги можно почитать по MySQL? Именно по данной СУБД и с точки зрения разработчика, а не администратора. Хочется углубиться в ее изучение, понять именно те фичи, которые присущи именно ей. А то знания очень разрозненные и нет общей картины. Заранее благодарю.
Мне приходит файл, данные из которого нужно в эту базу данных поместить. Запилил четыре таблицы, соответственно, для этого. Каждый раз при вставке в таблицу Order мне нужно дёргать из зависимых таблиц (они типа справочники, но справочники, которые тоже постоянно пополняются) id. И если такого значения в зависимой таблице нет (ну допустим нет такого адреса ещё в таблице Address), нужно добавить эту запись в таблицу Address и уже потом вернуть её id, а если запись уже есть, то нужно просто вернуть id существующей записи. Как это с точки зрения архитектуры лучше реализовать? Используется PostgreSQL если что.
>>1021954 И нахуй тебе хранить в основной таблице ид_метро, если одному адресу соответствует одно метро? Храни ид метротв таблице адресов, не засирай базу.
>>1021961 Оператор может привязать один адрес (то есть дом) к разным метро для разных заказов, потому что некоторые адреса располагаются равноудалённо от станций и выбор станции метро отдаётся на откуп оператора. Да и вообще особой роли не играет. В общем твоё замечание несущественно.
>>1021966 Какой хаос? >одному адресу соответствует одно метро? Я тебе ответил, что это не так. К тому же по делу ты не ответил, лишь сагрился на пустом месте.
>>1021967 Я тебе сказал, что ты ебучий гуманитарий. И человек будет хранить либо строго одно метро для одного адреса, либо 1,2,3 ближайших в зависимости от потребностей, а не вводить тупые допущения. Кому-то может понадобиться аналитика по конкретным станциям, а у тебя один и тот же адрес привязан к разным метро. Метро в заказе - формальность, это не значит, что курьер будет ехать конкретно до этого метро, он будет ехать как ему удобно. Как ты будешь обрабатывать открытие нового метро? Нормальный человек проапдейтит адреса и проставит им новое метро, ты будешь на половине адресов хранить старое ближайшее, на половине новое. Ты мусор, говно и говнокодер, я тебя презираю, я бы вас просто убивал всех.
>>1021970 Ты вообще кажется не понял, что требуется. И тупые допущения исходят только от тебя. Не понимаю твоего баттхерта. Окей. Изменю условия. Теперь таблицы Metro нет и нет соответствующей колонки в таблице Order. По делу таки есть что сказать?
Кто-нибудь использует job scheduler в БД оракд? Что мне нужно записать в качестве частоты выполнения, чтобы жоб отрабатывал один раз в неделю по понедельникам?
>>1016781 Из всего списка читал первые две. Сам работаю dbd с Oracle 9i. Учитывая, что тебе надо 12c 2ю книгу ищи 6го издания. Я бы начал с нее (Фейерштейн), там по сути основы. Кайт это уже более продвинутое, нюансы и т.п.
>>1024857 Крупное гос предприятие (не РФ). По-поводу 9i: выбирать не приходиться, что есть с тем и работаем. Закупка и переход на более новые версии не планируется.
Работаю уже 10 лет. В обязанности в основном входит разработка приложений на Oracle Forms и Reports для нужд предприятия и всякой отчетности в другие гос структуры. Также приходится иногда работать с MS SQL Server 2012 (купили ПО работающее на этой БД) и каким-то языком похожим на 1С, ISBL называется.
Когда приходил ничего совсем не знал, думал уволят после испытательного срока. Сейчас освоился, засиделся, но уходить не особо хочется, хотя предлагали попробовать (это не факт, что взяли бы) в место где платили бы в 2-2.5 раза больше (ибо там зп привязана к доллару), там работа по оптимизации и хранилища данных. Но там и работать пришлось бы: не так как я сейчас, сидя тут. Все-таки гос есть гос. По зарплате у меня в 2 раза больше чем в среднем по моему региону.
Не знаю что еще рассказать. Глянул мельком эту тему, увидел упоминания про хинты, вот серьезно, не знаю о них ничего, сам не применял, но на работе в запросах (не моих) встречались.
Если бы вернулся во времена универа, то больше бы внимание уделил учебе, а потом бы свалил на какую java. А так забивал на учебу (и вообще на программирование) и на текущую работу по сути по родственным связям брали.
>>1024893 Понимаю. Я тоже ничего не делал в универе и работа с базами данных была единственной, на которую меня взяли, так и определился мой путь. Но я с шилом в жопе, меняю работы и хочу расти (хотя бы в зарплате).
>>1024914 Кек, сеймщит, после универа устроился эникеем, среди прочего приходилось чистить oracle db, оценил перспективы и решил на нем остановиться. За 5 лет работы сейчас уже на третьей, вот думаю обмазаться книгами и подаваться в банки. Но какая же скука все-таки, уже год одни и те же задачи. Вообще какие перспективы ораклиста? Может как писали выше в треде попробовать выучить язык и перекатываться? Или стать крутым спецом по БД, но никак не могу представить, как из sqlщика вырасти до техдира или тимлида. Какой потолок, если знать только sql и pl/sql?
>>1024966 В банках хорошо и рост есть. Только лучше быть etl-щиком, а просто запросы писать. Иначе будешь клепать одни отчетики и вот тогда совсем охуеешь от однообразия и рутины. Да, книжки дело хорошее, ты читай, я тоже читаю. Все же перекатываться совсем мне день, так что планирую поучить устройство бд и быть кем-то более крутым, чем писатель sql-запросов.
Сейчас голову сломаю, помогите, как будет выглядеть эта задача для MSSQL:
Найти производителей, которые выпускают более одной модели, при этом все выпускаемые производителем модели являются продуктами одного типа. Вывести: maker, type
В подсказке виду GROUP BY и HAVING, но ничего с ними путного не пишется. Подлное условие:
Схема БД состоит из четырех таблиц: Product(maker, model, type) PC(code, model, speed, ram, hd, cd, price) Laptop(code, model, speed, ram, hd, price, screen) Printer(code, model, color, type, price) Таблица Product представляет производителя (maker), номер модели (model) и тип ('PC' - ПК, 'Laptop' - ПК-блокнот или 'Printer' - принтер). Предполагается, что номера моделей в таблице Product уникальны для всех производителей и типов продуктов. В таблице PC для каждого ПК, однозначно определяемого уникальным кодом – code, указаны модель – model (внешний ключ к таблице Product), скорость - speed (процессора в мегагерцах), объем памяти - ram (в мегабайтах), размер диска - hd (в гигабайтах), скорость считывающего устройства - cd (например, '4x') и цена - price. Таблица Laptop аналогична таблице РС за исключением того, что вместо скорости CD содержит размер экрана -screen (в дюймах). В таблице Printer для каждой модели принтера указывается, является ли он цветным - color ('y', если цветной), тип принтера - type (лазерный – 'Laser', струйный – 'Jet' или матричный – 'Matrix') и цена - price.
Есть такой запрос: select from t1 union all select from t2 Как создать в, созданной этим запросом, таблице дополнительную колонку и занести туда название той таблицы, откуда была взята строка?
>>1024979 Не подскажешь как в etl-щики можно перекатиться ораклисту? В своей практике сталкивался только с клепанием отчетиков и рзаработкой логики на pl/sql, загрузка данных из внешних таблиц разве что.
>>1025004 Если oracle, то например можно так declare l_t1 varchar2(32 char); -- название таблицы t1 l_t2 varchar2(32 char); -- название таблицы t2 begin / здесь получаем названия таблиц, например из системных справочников / execute immediate ' create table t3 as select t1.id, ' || l_t1 || ' name union all select t2.id, ' || l_t2 || ' from t2'; end; Если не ощибаюсь вообще так вставлять переменные в код запроса это моветон, лучше использовать using t1, t2
>>1024994 Не знаю, не перекатывался. В планах через полгодика попиздеть с начальниками и сказать, давайте мне 150к и переводите к интеграторам, иначе свалю. Проблема в том, что я на отчетиках уже довольно незаменимый человек и начальник меня просто так не отпустит. В принципе, и на отчетиках посижу за 150.
>>1024991 Бля, а в вашей базе аналитические функции есть? Все равно красиво это не сделать, только через подзапросы. Либо применяй аналитические функции, первая count(*) over (partition by product_type, proizvoditel), вторая over(partition by proizvoditel) и селекте оттуда те где первый каунт = 1 а второй больше 1. Либо юзай group by rollup (proizvoditel, product_type) но тоже не упростит сильно. Бля проще даже не изъебываться а просто первым запросом отсеять тех, у которых типов продуктов меньше двух, а вторым тех у кого количество меньше двух.
>>1025058 В оба count звезду вставил? На чем ошибку выдает? Кидай сюда. Может для MS SQL какая ошибка, я писал больше для Oracle, хотя тут такой синтаксис что должно прокатывать и там. Вот это тоже с ошибкой выполняется? : select maker, type, count(звезда) from product group by maker, type having count(звезда) > 1 Здесь чисто лишнее поле на вывод.
>>1025064 Я понял условие как должны быть показаны те у кого более одного ПК или более одного лаптопа и т.д. И не важно что у того у кого 3 ПК, есть еще по 1му лаптопу и принтеру, всеарвно вывести эту фирму с пометкой ПК, разве не так?
>>1025068 То есть: 1 тип продукта, 2 продукта - выводим 2 типа продукта, 3 разных продукта - не выводим. Я художник, я так понял задачу. Без подзапросов нерешаемо.
>>1025098 Но это прикольно только в ситуации когда у тебя строго один тип продукта выводится, а если 2 или 3 то уже думать надо. Не хочу думать, батя решил задачу и пошел дальше бухать
>>1025093 >>1025094 >>1025098 Ты крут. Подчерпнул для себя кое-что нового (конкретно не знал что в having можно такое писать, использовал там раньше только то, что в select описано). Не думал что так можно и не встречал раньше. Ну на то у меня и зп не 120к. Кстати вариант с подзапросами у меня >>1025067 такой вышел: select a.maker, a.type from ( --здесь выборка тех у кого больше одной модели но несколько продуктов select maker, type from product group by maker, type having count(звезда) > 1 ) a, ( select maker --выборка тех у кого один тип продукта from ( select distinct maker, case when type = 'PC' then 1 else 0 end as k_pc, case when type = 'Laptop' then 1 else 0 end as k_lap, case when type = 'Printer' then 1 else 0 end as k_pr from product ) group by maker having sum(k_pc+k_lap+k_pr) = 1 ) b where a.maker = b.maker;
>>1025211 Ещё почему в SQLite Studio не выполняются подрядк команды INSERT INTO total (aaa, bbb, ccc) VALUES (111, 555, 999) - ОК
Подряд строки INSERT INTO total (aaa, bbb, ccc) VALUES (11, 55, 99) INSERT INTO total (aaa, bbb, ccc) VALUES (1, 5, 9) возвращает ошибку near "INSERT": syntax error:
>>1025229 да, конечно, там con.commit после cur.execute Ошибки соединения нет, Select, например, нормально работает, возвращает строки. Ошибки database is locked также нет.
Анончики, подскажите, есть вообще что-нибудь юзабельное для постгреса, типа Mysql Workbench? Мне нужно диаграммки построить, в воркбенче классный редактор, умеющий экспортировать схему из базы. Хочется такого же для постгреса. Алсо, вангую, что нету нихуя и тогда следующий вопрос, где лучше всего строить схемы?
>>1025659 Не, во-первых, не хватит бесплатной версии (у меня 100 таблиц). А во-вторых, воркбенч хотя бы открытый и всем доступен, а тут создаешь модель, которую сможешь открыть только онлайн в их веб-приложении предварительно зарегистрировавшись.
А щас можно даунский вопрос? На работе есть схемы баз данных в power designer. Можно смотреть и изучать и искать что-нибудь. Вот. А как создание этих схем происходит? Там можно подрубиться к базе данных и выцеплять структуры из нее, или же это все тупо вручную рисуется?
>>1026121 Можно тупо вручную, а можно и подрубиться и сделать схему. (Она будет полноценной, если созданы все требуемые для связей таблиц ключи, в двх, например, их редко создают). Конечно, второй вариант круче, так как не нужно тратить время на документацию, однако, если ты сначала пишешь тз, а потом по нему делают бд, то, разумеется, в таком случае схема первична.
>>1026252 Сам - разработчик двх, как раз. Ключи создают, но в основном только праймари. Индексы тоже создают, конечно, а вот foreign key, как раз, нет, ибо хуевенько инсерт начинает работать, да и время на изменение структуры потом больше тратится. Хранилище - олтп зачастую, но бывают и исключения. Если ты думаешь про олап, то нет, олап - это херь, которая из хранилища заполняется и позволяет всяким там аналитикам быстро и удобно смотреть данные.
>>1017976 >>1018007 >>1018025 >>1019699 смотрю я на эти адовые схемы и не могу понять: вот если корзина сохраняется, по какой-то причине и эдитор меняет цены у книги, то изменится ли цена корзины? валидно ли это с точки зрения бизнеса ее менять?
>>1026289 А это уже вопрос к бизнесу. Хочет ли он соблюдать принципы историчности или нет. Нас, простых посонов, это не касается, наше дело только спросить и сделать, как сказано.
Програмач, привет Возможно, обоссыте, но надеюсь, подскажете. Позвали работать в отдел операционнх рисков, pl/sql, скрипты, возможно sas, dwh и витрины, но последние 3 не точно. +написание тз, прототипов Стоит идти?
>>1026353 Если тебе нравится пиздеть с заказяиками, постоянно сраться на тему кто, что и когда должен сделать, политика и написание документации(эти дела будут занимать половину раб.времени, помимо скл и отчеты), то вперед. Лично мне все это остопизденило.
>>1026359 Не знаю, мне кажется в Европе такой хуйней не страдают, которую я тут написал. Но это мои домыслы, я ж там не работал. Найди аналог hh.сру, только какой-нибудь европейский и ищи data analyst, смотри, что там требуется.
>>1026371 fix нет. не заработал, хотя, например, что-нибудь с Update из скрипта работает, а print (con.total_changes) выдаёт нужное число измененных строк. Но когда смотрю содержимое таблицы, оно без изменений
Братишки, помогите с одной хуевиной, долбоебу. Есть таблица в майэсскуэль. В ней лежат пятимутные замеры длины пинуса. `datetime`|`mm` '2017-07-17 06:00:00' | '100' '2017-07-17 06:05:00' | '280' '2017-07-17 06:30:00' | '70' '2017-07-17 06:35:00' | '80' Но бывают по техническим причинам проебы в замерах, и ряд пятиминуток рвется, как показано выше-проебалось 25 минут.
Таки вопрос, каким запросом можно выцепить разрывы? Чтобы в итоге, на выходе было что-то вроде: '2017-07-17 06:05:00' | 2017-07-17 06:30:00'
with t as ( select to_date('17.07.2017 15:00','dd.mm.yyyy hh24:mi') sdate from dual union all select to_date('17.07.2017 15:05','dd.mm.yyyy hh24:mi') sdate from dual union all select to_date('17.07.2017 15:30','dd.mm.yyyy hh24:mi') sdate from dual union all select to_date('17.07.2017 15:35','dd.mm.yyyy hh24:mi') sdate from dual ), basis as ( select sdate as cur_date, min(sdate) over(order by sdate rows between 1 preceding and current row) as prev_date from t ) select cur_date, prev_date, cur_date - prev_date from basis where cur_date - prev_date >= 0.004
Есть две базы. Одна рабочая, вторая для тестирования доработок. Обе долдны быть идентичны. И вот мне стало интеренсо. Можно как то сделать ALTER хранимой процедуре в одной базе содержимым из другой? Синхронизировать их так сказать.
>>1026410 Если оракл, то можно пробануть dblink. Подключаешься к тестовой базе и копируешь код процедуры во временную таблицу, потом компилишь процедуру на боевой. Но это извращение какое-то
>>1026414 А тогда такой вопрос, тайминги всегда секунда в секунду? Или может быть что-то в духе: '2017-07-17 06:00:01' | '100' '2017-07-17 06:04:59' | '280' '2017-07-17 06:30:00' | '70' '2017-07-17 06:35:00' | '80'
И разрыв может быть больше часа в таком проебе? Вангую что офк может, да? Проеб у оборудования и в сутки может быть в итоге?
На работе есть таблица, в которой хранится вся информация о сотрудниках. Дата рождения, ссылка на фотографию, вот это всё. Хочу сделать средствами моих отчетиков аналог тиндера для компании. В параметры отчёта передавать желаемый пол и возраст, подтягивать фоточки, сохранять где-нибудь лайки. В случае взаимного лайка отправлять на почту обоим письмо с предложением пообщаться. Охуенно же, прям вот уже вижу, как это все реализовать. Только боюсь меня выгонят с работы если я начну так нагло юзать личную информацию. Да и не надо это никому.
Сап, програмач. Аноны, помогите пожалуйста с SQL-запросом. Пикрилейтед - структура БД (на самом деле только её кусок). В таблице "Заказ" на самом деле больше полей и я хочу написать запрос на выборку всего из неё, но нужно чтобы делалась проверка на существование записи в таблице "(Соединительная таблица)". Типа если в ней есть запись, где id_пользователя совпадает с id_пользователя в таблице "Заказ", то нужно запись в таблице "Скидка", которое ей соответствует по id_скидки, взять поле "значение скидки" и умножить его на поле "Цена", затем вернуть результат. Как написать запрос? То есть по сути, что-то типа того: SELECT ... Заказ.Цена * Скидка.значение_скидки, ... FROM Заказ ...
Помогите пожалуйста, я в SQL ещё не разбирался, планирую только потом, но мне сейчас нужно такую фичу сделать.
>>1026480 То что написал. Типа у пользователя есть скидка, то нужно сделать: SELECT Заказ.Цена - Скидка.значение_скидки, иначе не умножать, а просто вернуть цену.
>>1026481 Сьеби с треда, тебе уже достаточно написали. Если тебе лень названия полей поменять и запятую на умножение, то мне тем более лень тебе отвечать.
>>1026483 Да нихуя мне не лень. Я просто не вдупляю нихера. Запись в соединительной таблице может быть, а может и не быть. Вытащить то я умею, если она есть, и тогда и скидку отнять смогу. А если типа у юзера нет скидок - вот эту херь не знаю как провернуть.
>>1026487 L E F T J O I N уже подразумевает эту ситуацию и не отсечет строки... Вместо прямого значения скидки написать nvl(skidka, 1). Тогда если есть скидка, он домножит на нее, если нет на единицу
>>1025243 Такая конструкция заработала, но только после того, я как сохранил базу под другим именем. До этого скрипт также писал, что всё ОК и выдавал число изменённых строк, но не менял.
>>1026431 Во многих компаниях, особенно крупных, не приветствуются отношения между сотрудниками. Тимбилдинг, корпоративчики - да, а няшенье под пледиком - нет.
>>1026382 >>1026382 Ок. Я работаю с ms sql server. Для него etl это: 1. SSIS-пакеты, создаваемые в вижуал студии (data tools) и деплоящиеся на сервак. Они отвечают за загрузку данных из всяких других субд (из других систем) в промежуточную бд, именуемую staging 2. Это хранимые процедуры, которые делятся на 2 части: a. загрузка данных в хранилище из staging бд b. Преобразование данных в хранилище для их удобного использования 3. Скриптописательство, в основном, c#, используется для 2 целей: а. Clr - функционал c# в ms sql сервере b. Загрузка данных из всяких веб-сервисов (api, ftp и т.п.), которую невозможно реализовть стандартными компонентами vs data tools.
Что еще.. иногда еще нужно хуярить данные в олап, так что придется прохаваться в том, что это и с чем его едят. Ну и индексы, оче важно, чтоб все быстро оаботало. Как-то так.
>>1026232 Короче перевел на мускуль и экспортнул в воркбенч. Но draw.io очень классная штука. Минус только в том, что это больше рисовалка - таблички нужно будет заполнять перетягивая строки в нее, ну и связи тоже будут нарисованными, а не определены по ключам а еще он захлебнется скорее всего от моих 100 таблиц. Но вообще это оч классный редактор.
Влез в отдел логистика складская который работает на oracle и pl/sql, в основном занимается написанием запросов-отчетов как у этого анона >>1017574. Подскажите литературу и тд, где можно набраться начальных знаний, опыта работы с бд= 0. За 2 недели аутирования освоил только простейшие запросы и содержания таблиц.
>>1027785 1. Гуглишь. 2. Просишь меня решать задачи. Тебе же нет смысла читать Кайта или даже Фейерштейна, просто найди какой-нибудь интернет-ресурт, где вкрации пишут про sql.
>>1022122 Двочую. Графовые базы решают абсолютно все проблемы релятивного говна. Они самоописываемые, а значит могут хранить метаинформацию (ограничения и проверки типов, например) в самой базе и получать доступ к ним через стандартные запросы.
Они универсальны. Например, язык программирования шестого уровня будут хранить абстрактное дерево синтаксиса в графовой базе.
Отказывайтесь от говна мамонта, оно уже окаменело.
Аноны, привет. Очень годный тред. Хотел бы обратиться за советом. ЗАкончил ВУЗ, зовут на работу аналитиком BI (не глоубайт). Опыта работы серьезного нет, sql знаю, погромирование тоже. Работал до этого в сапе. Насколько это годная идея в 2017? Хочется, конечно, и архитектором стать и в Европу и на хуй сесть.
Работаю с QSLite в связке с Qt. Надо выполнять много похожих запросов, в которых различается только один параметр. Запросы связывают несколько таблиц. Как это удобно реализовать без хранимых процедур с минимумальным количеством строк в коде?
Привет, аналитики, может кто-то с tableau работает? У меня есть в таблице широта и долгота, табло их понимает как географические параметры, но я не понимаю, как мне отобразить эти точки на карте. Как мне ограничить карту, чтобы мне только карту Москвы показывало?
>>1027952 Скучно, неинтересно, прогать веселее. Все зависит от твоих личных качеств, предпочтений, оффера. Нет смысла скипать работу, которая тебе по всем параметрам подходит, из-за того что на дваче так сказали.
Сап, посоны, нубас не умеющий в погромирование итт за помощью зашел. Есть Одна Таблица. Вней много данных, которые надо рассортировать в отдельные таблицы и сохранить в отдельные файлы. Я уже нашел макрос как делить на листы и сортировать и макрос как листы в файлы сохранять. Осталось только засунуть макрос, который будет переименовывать листы, впихивая в название данные из ячеек. Название листа должно быть такое: F1_"Данные из ячейки AF2"_"Данные из ячейки A2"_190717
Плиз, помогите, не хочу как лах завтра сидеть открывать каждый лист смотреть что там написанно и переименовывать в ручную.
>>1028100 > ЕДИНЫЙ БАЗ ДАННЫХ ТХРЕАД > Excel Да я туда зашел. Блин, посоны, ну хотя бы дайте ссыль где есть макросы на любой вкус и цвет. Только гуглить не гоните ок да? Я и так это делаю сейчас.
>>1028103 > > ЕДИНЫЙ БАЗ ДАННЫХ ТХРЕАД > > Excel > Да я туда зашел. Ты не перепутал эксель с аксессом? Какие нахуй макросы? Давай ты лучше засунешь этот эксель себе в sql сервер и мы тебе составим запрос.
>>1028096 нагугли как в VBA работает цикл и в цикле парси таблицу, там же все просто, что-то на уровне Лист1.('R2C2'), только вместо номера строки и номера столбца подставляй i и j. Эх, напомнил свою первую работу, где в эксель макросом тянул данные по ODBC из БД.
Здравствуй, анон. На связи >>1017574 . Есть один запрос, по ссылке, который считает к-во паллет созданных в определенное время. Что нужно подставить, чтобы результат был такой: к-во паллет на каждую дату, то есть на 01.01 - 150, 02.01 - 148 и т.д? https://pastebin.com/jkFDaLsb Спасибо.
>>1028261 Не свовсем понятно, что ты хочешь? Ты же и так уже получил группировку по TRUNC(lu.c_date). Если возможна ситуация, что в твоем текущем отчете появятся строки с одинаковой датой создания, то выкидывай все колонки, кроме количества палетов и даты создания. Или тебе в этом же отчете еще одну колонку нужно получить с общим количеством палетов на дату создания?
>>1028261 Sum(kolvo) over(order by create_date). Покажет для каждой строки суммарное количество на дату этой строки. Только я не уверен, что с твоими группировками это прокатит, я бы весь запрос через аналитические функции переписал, но делать этого я, конечно, не буду. Как вариант приджойнить эту таблицу саму к себе и в качестве суммы на текущий день брать sum(case when t1.date <= t2.date them kolvo end)
>>1028281 Короче, я налажал с объяснением. Нужно на каждую дату делать запись, на 09:00 скажем, по кол-ву мест из таблицы, группируя по поставщику. Возможно такое сделать с помощью sql?
Анон, много рабочего времени у тебя действительно занимает работа? Остается время на чтение доков, книжек или же задач столько, что приходится брать сверхурочные?
>>1028376 Чому именно в базотреде спрашиваешь? У меня все по настроению. Могу за день ебануть то, на что начальник отводил неделю, могу весь день курить, кофебрейкать и двачевать. Жёстких дедлайнов у меня нет, на работе засиживаюсь, только если работа прёт. Уровень загруженности влияет только на то, как именно я решаю задачу. Если задач мало, могу придумать что-нибудь творческое и оптимизаторское, потратить больше времени, но сделать лучше. Если задач много, зачастую делаю первым доступным способом и не особо переживаю за красоту своей работы. Читаю доки на работе только если это непосредственная часть моих задач. Если мне нужно пользоваться новым софтом или же я просто не знаю как сделать то, что от меня требуется. Саморазвиваться нужно дома. топовый-ораклист-120к
>>1028376 Бывают конечно и завалы, но редко. Так что лично у меня время есть, но мне тупо лень на работе этим заниматься (неудобно как то). Домой прихожу желание появляется.
Но я работаю в гос организации, различие безусловно есть. Я могу месяц ничего не делать (если никто доставать не будет) и получу столько же как если бы времени на посцать сходить не было.
За своего друга скажу (раньше со мной работал, но ушел в другое место). Теперь он в фирме и времени у него значительно меньше стало (свободен только в обед), по первой работу на дом и выходные брал. Но у него и зарплата в раза полтора - два больше.
>>1028396 Тому что ораклистом работаю, задач обычно дофига и работа есть всегда, причем нагрузка рассчитывается иногда так, что времени на кофейбрейки не остается. Единственное спасает, что сам время оцениваю на выполнение, поэтому иногда закладываю время с учетом капчевания. Почему нужно развиваться дома, если у тебя на работе полно времени? У меня после рабочего дня еще бывает куча дел, и часок-полтора на чтение остается. >>1028397 Тоже работал в госконторе, безделие доконало и никаких перспектив.
>>1028446 А какие еще скиллы есть, кроме чисто оракловых: sql, pl/sql, concepts? что нужно знать, чтобы работать топом. Мне вот кажется, топовый - тот, кто может с нуля спроектировать слой БД для какой-нибудь информационной системы, уровня АБС. Поясни, пожалйста.
Можете вкратце объяснить мимокрокодилу, что сейчас с монгой? Никогда с ней не работал, но слышал, что с одной стороны у него скалабилити, производительность и nosql, с другой, что запись у него по принципу "мамой клянусь"и вообще незрелый (да, я смотрел тот мультик с медвежонком). Какой у вас вообще стейт оф арт? Год назад для говна на коленках это было нода+експресс+монга, как оно сейчас (бд конкретно)?
>>1028471 Можете вкратце объяснить мимокрокодилу, что сейчас с BTrieve? Никогда с ней не работал, но слышал, что с одной стороны у него скалабилити, производительность и nosql, с другой, что запись у него по принципу "мамой клянусь" и вообще незрелый (да, я смотрел тот мультик с медвежонком). Какой у вас вообще стейт оф арт? Год назад для говна на коленках это было кобол+фортран+посраль, как оно сейчас (бд конкретно)?
>>1028624 > Какой у вас вообще стейт оф арт? Год назад для говна на коленках это было кобол+фортран+посраль, как оно сейчас (бд конкретно)? Год назад? Ты из какого столетия, папаша?
>>1028471 Cassandra и DynamoDB прекрасно масштабируются и используются в высоконагруженных проектах, а Mongo это так, чисто поиграться. Для кэша же лучше что-нибудь попроще, типа memcached/Redis.
После перезагрузки сервера не могу подключится к БД MySql удаленно. Пользователь записан как 'user'@'%', bind-address включен и имеет значение 127.0.0.1. В чем может быть проблема?
Часто вижу в описании вакансий требование опыта работы с большим объемом данных, вопрос что считать большим объемом? Таблица с несколькими миллионами строк и сотней колонок - это большой объем? В чем специфика работы с такими таблицами?
Пацаны, вот если у меня есть таблица с данными где id соответствует какое-то значение на определенные даты, то есть id, value, date_begin, date_end, то как мне найти все задвоения по датам? То есть на определенную дату задвоение это count по строкам where sysdate between date_begin and date_end. А как мне одним запросом за все даты посмотреть? Пока в голову не приходит ничего лучше, кроме как запускать этот запрос за каждую дату, но ведь есть что-то оптимальнее? Ща с курилки вернусь, покажу как делаю.
>>1028795 Вот все задвоения за текущий год, например. Я знаю, что это чертовски неоптимально, потому что по сути выполняю свой запрос для каждой даты. Таблица маленькая, но даже на ней это долго отрабатывает. Как лучше, я пока не придумал.
>>1028835 По-моему, он намекал на то, что фраза "умение работать с высоконагруженными бд" это что-то такое же шаблонное как техническое образование или английский язык и не передает сути.
>>1028806 >>1028795 Если правильно понял, тебе нужно найти дни, для которых в таблице t существует больше одной записи для определенного t.id. Можно пробануть так решить задачу: найти все интервалы date_from - date_to из таблицы t которые друг с другом пересекаются, потом уже искать по ним дубли, если интервалы одинаковые и у них одинаковый t.id, то в эти дни как раз и было "задвоение". Решение на оптимальное не претендует и я его не проверял, но по крайней мере не нужно для каждой даты логику повторять.
>>1028901 Чому? Очень полезные ответы, я думаю многие в треде тебе благодарны. Олсо, завтра иду на собеседоввание в ТОП-10 банк на разработчика анальных хранилищ и клепателя отчетиков, что посоветуете повторить? Какие вопросы могут быть?
Возможно я зеленый даун, но программист oracle-тот, кто пишет pl/sql? Вышел первый день на работу (днищенская), слышал в коридорах разговор, но так до конца и не понял. Не ссыте только
>>1028999 Верно. SQL - универсальный язык запросов к БД, Oracle - компания, создавшая СУБД (систему управления базами данных) с одноименным названием, PL/SQL - процедурное расширение (то есть способ превратить SQL почти в нормальный язык программирования), разработанный корпорацией Oracle. Разработчик Oracle и разработчик PL/SQL - практически синонимы, разве что в первое иногда ещё вкладывается смысл разработки и проектирования хранилища Oracle. Как ты попал на работу, если не знаешь этого?
>>1029015 Спасибо за подробный ответ, анон. В метро успел почитать, что для вката оркал не рекомендуют, мол двухзвенная архитектура катится к хуем и тому подобное. Либо джаву, либо mssql. ПОнимаю, что первое вообще не про то. Так ли все тухло и не стоит пытаться вкатиться?
>>1029017 До этого момента не знал, что такое двухзвеная архитектура. Никто себе на ставит цели вкат конкретно в oracle или mssql. Если тебе интересны базы данных, просто учи sql на базовом уровне, потому что он везде +- одинаковый, а потом ищи работу. Куда возьмут туда и возьмут.
>>1029019 Поясните, пожалуйста, кто нибудь за выражение KEEP в аналитических функциях. Для чего оно нужно, и зачем в нем указывать порядок сортировки, если порядок и так указывается в описании окна. Желательно с толковым примером.
>>1029022 Так, епту бля, какие-то слишком заумные вопросы для вкатывальщика. Смотри. В конструкции keep order означает просто сортировку, то есть keep(dense_rank last order by param) для каждой строки выведет тебе последнее значение упорядоченное по значению param. Наличие order в конструкции over() означает, что аналитическая функция становится оконной. Оконная - то есть применяется не ко всем данным. Например, sum(value) over(order by date) для первой даты выведет только сумму на эту дату, для второй - сумму на первую и на вторую дату и так далее. Придумывать примеры я, конечно, не буду. Пример определяется реальной задачей, которую тебе нужно решить.
>>1029026 Я не тот анон-вкатывальщик, просто случайно кликнул сссылку на его пост. Вот смотри, есть пример: https://ideone.com/u1AwEX Там в коде селекта получаю min и max значения зарплаты по департаменту тремя разными способами с использованием оконных функций. Все три возвращают одинаковые значения. Тогда как например изменить пример таким образом, чтобы keep dense_rank first только выдавал правильный результат? Как понять, что именно его нужно применять, блждад? Выше в треде приводили пример с собеседования, где нужно было вывести топовую зарплату сотрудника за период. И анон говорил, что нужно делать через keep dense_rank, вместо трех вложенных селектов. Ок, но получается есть еще способ решить эту задачу через другие оконные функции. Извините, если сумбурно пишу, завтра собеседование, а на предыдущей работе аналитические функции почти не встречались.
>>1029040 Это я и был. Не бойся, отвечай на любой мой пост, все равно я тут один. 1. MIN(sal) и MAX(sal) KEEP (DENSE_RANK FIRST ORDER BY sal) действительно всегда вернут одно и то же. И это не ошибка, просто бессмысленно делать keep и max по одному и тому же параметру sal. keep() уже выделяет из всех значений значения с минимальной ЗП. А минимум и максимум по одному значению и будет это значение. Если бы мы брали min(chtototam) и max(chtototam) KEEP (DENSE_RANK FIRST ORDER BY sal), то это бы вернуло минимальное и максимальное значение параметра chetotam ТОЛЬКО среди тех значений, у которых минимальное sal. 2. Да, по сути применение over(order by sal) означает использование оконной функции и накопительный итог, однако размеры окна можно корректировать. В этом случае, хоть функция и оконная, но используется >range between unbounded preceding and unbounded following которое означает, что для любой строчки окно - все значения. Потому и получается одинаково.
>>1029049 >>1029050 Спасибо, анон, картина еще четче стала. Подводя все вышесказнное тобой, придумал следубщий пример: нужно вывести максимальную сумму платежа, среди всех платежей, поступивших в последний день текущего месяца: select max(t.price) keep(dense_rank last order by t.paydate) from payments where trunc(paydate, 'mm') = trunc(sysdate, 'mm'); Верно?
>>1029017 Oracle это не всегда двухзвенка, в крупных интеграционнах решениях как раз трехзвенка. Другое дело, что задач по поддержке легаси, больше, чем стартапов и развивающихся проектов.
>>1029065 Спасибо, прошло удачно. Была дана схема из трех таблиц с описанием полей и связей между таблицами, необходимо было написать несколько простых запросов. Несколько аналитических, с использованием оконных функций (респект анону, который вчера разжевал эту тему). Еще, как мне показалось, хитрое задание на удаление дублей по полю, условием было оставить записи с самой поздней датой, тоже через аналитические функции сделал. Ну и несколько вопросов по теории совсем простых, например какой план покажет запрос по таблице, где в условии фильтр по не индексированному полю и что сделать, чтобы его ускорить. По схеме спросили является ли эти три таблицы нормализованными и вообще в чем проблема этой схемы, тут я чет тупанул, т.к. привык, что в OLTP-базах все более менее нормализовано, и сказал, что да, хотя там не было ключей и вообще можно только предполагать о связи по одинаковому названию полей. Ну и был вопросик на понимание работы автономных транзакций. Еще про пайплановые функции спросили, слышал ли о них вообще.
Есть такой сайт: http://sql-ex.ru сижу на нем пытаюсь постичь простые запросы мускульные. раньше думал что джойны это всё что нужно обычной веб-макаке типо меня, но сейчас не осилив и 5% от тамошних упражнений уже охреневаю.
Кто-то мб проходил? Или местные знатоки захотят размяться и пройти залпом все упражнения?
Сам дико сосу и не понимаю каких-то похоже простейших основ. Например 8 упражнение не понимаю даже головой как должно быть решено. Мб хотите вместе пообсасывать?
>>1029665 сарказм. я бы сказал на треть меньше, предлагают, кстати это банк самыц днищенский по зп среди топ, ну и то что это региональный офис наверное роль играет. пайплановые функции могут возвращать коллекцию не дожидаясь конца выполнения всего тела функции, например, внутри цикла можно возвращать клиенту элементы коллекции
>>1029683 Услышал, спасибо. На третье меньше это 80к получается? Ну для бандитского вполне норм. Хотя от опыта ещё зависит, конечно, сколько у тебя? Держи в курсе, интересно. Сейчас работаешь где-то? Как думаешь, позовут в это место?
>>1029662 http://www.sql-tutorial.ru/book_exercise_8.html вот здесь комментарий к этой задаче, который объясняет две самые распространенные ошибки. Сам попался на второй ошибке: суть в том, что наличие модели ПК в таблице product, совсем не означает, что она есть в таблице PC, и наоборот. Так же строка с моделью в Laptop может не имееть соответвия в таблице product. Короче в этой схеме данных могут остуствовать значения внешних ключей.
>>1029697 Если чисто оракл, то 3.5 года, из них 1.5 -протирание штанов, а остальные - 2 быдлокодинг. Сейчас читаю книжки, понимаю, какое я быдло, лол, так что может по сеньке и шапка. https://www.ozon.ru/context/detail/id/5522775/ вот эта оказалась ультрагодной, описаны моменты, которые слышал только от более опытных коллег, видимо они ее раньше прочитали.
>>1029837 Люто плюсую, отличная вещь. Тоже начинал читать, правда потом купил бумажного Кайта и перескочил на него. Но и эту тоже читну в скором времени, а скорее всего и в бумаге приобрету.
Добрый вечер, аноны. Хотел бы услышать совет, пожалуйста. Я довольно великозворастный планктон-сапер, хочу уебать со своей работ, от которой мне дико пичот. Смотрю в сторону, как раз, БД. Проблема в том, что не могу позволить себе стажерские и джуновские зарплаты (не из-за запросов). Есть ли какие-то шансы в свободное время изучить mysql/tsql/oracle/, пройти какую-то сертификацию, что угодно, чтоб потом взяли на работу с уровнем мидла? (~70к) В общем, как-то самому попытаться освоить все. Звучит, конечно, будто я ебаный дебил.
>>1029958 Ну смотри, скажу за оракл, в идеале мидл должен знать многое из того, что обсуждалось в этом треде, прочитать и усвоить пару-тройку книжек специализированных, ну и просто шарить в бд. В принципе думаю за полгода это реально осилить, если хоть какой-то опыт есть в программировании/БД. По БД редко встречаются джуниорские вакансии, но работа для не топ-специалистов есть. Если совсем нулевый, то базовый SQL и теорию можно выучить за месяц. Еще для тебя вариант аналитиком пойти, там вроде как раз скиллы манагера пригодятся, а требования к тех. подготовке ниже, потом пробануть перекатиться в разрабы.
>>1029962 Спасибо за ответ! Меня зовут в одну контору аналитиком, будет сас (не глоубайт) и вроде sql, но я толком не понял, какой он там и насколько много. Да я и сам думаю про скил манагера-надо ли? На моей текущей работе есть архитектор-бывший ораклист. Имеет 3 гражданства, дом в Австралии и прочее. Меня эта стори как-то пиздец смотивировала. Да и тянка только за. Кулстори прохладную рассказал.
>>1029936 В моем топбанке на самой стартовой позиции без опыта 80к платят. Так что не отчаивайся. Другой вопрос в том, нужны ли на работе великовозрастные без опыта. И сможешь ли ты хоть как-то сносно изучить sql самостоятельно, может быть ты там совсем отупел на своей планктон-работе.
>>1030069 Ну мне 24, но я думаю, что уже довольно взрослый, блэдь. Ну вот я за 2 дня прорешал первые 30 задач на sql-ex, усвоил теорию реляционных бд, отношений, нормальнх форм и прочее-вроде ничего сложного. Но это я хз, показетель ли. Спасибо и тебе за ответ
>>1030131 Мне 27, сейчас пытаюсь вкатится в банки, до этого три года опыта по БД в шаражках, так что не вижу каких-то проблем возрастных у тебя. Реляционные БД, имхо, это не тема для молодых шутливых, большие деньги поднимают престарелые дяди с богатым опытом. Проекты в основном по поддержке и вряд ли в ближайшем времени свернутся, т.к. корпоративные системы очень неповоротливы - нужно очень захотеть и постараться, чтобы перескочит огромной ИС на другой стек технологий или вендора.
Здравствуйте, ораклисты. Order sublings by делает сортировку в иерархическом запросе, свою на каждом уровне. Я этого не знал, а теперь знаю. И вы тоже знаете, даже если не знали.
Прошу совета, двач .Девушка 17 еарс олд. Делаю робота ,встал вопрос с сайтом ,БД . На сайт идет трансляция с вебки и осуществляется управление .Все этапы выполнены, встала в ступор,кто расскажет устройство БД и работу с ними,конкретнее решаю вопрос связи кнопок и gpio портов на малинке для управления двигателями . Работаю с raspberry pi . хелп Телега @kkkkkkkkate или скайп ,пишите , буду рада помощи
Прошу совета, двач .Девушка 17 еарс олд. Делаю робота ,встал вопрос с сайтом ,БД . На сайт идет трансляция с вебки и осуществляется управление .Все этапы выполнены, встала в ступор,кто расскажет устройство БД и работу с ними,конкретнее решаю вопрос связи кнопок и gpio портов на малинке для управления двигателями . Работаю с raspberry pi . хелп Телега @kkkkkkkkate или скайп ,пишите , буду рада помощи
>>1030652 повторяюсь,не можешь сказать ничего поумнее, иди на тред для дрочеров,там твой уровень развития. Если ты умнее меня ,как ты и думаешь,то напиши хоть что-нибудь или много слов непонятных ? Могу попроще
>>1030775 Если подробнее, то можешь спросить в ардуино-треде в ra. Не стоит начинать с того, что ты тянучка и тебе 17 лет, а потом сверху кидать краткое описание своего проекта, вместо самой проблемы, которую не можешь решить. Хотя, тебе наверняка нравятся такие тёплые приёмы.
>>1031494 В связи с тем, что нет необходимости в днях. Как посредством программы, по средством которой данные через действия пользователя попадают в таблицу бд, я могу добавлять необходимое количество дней, но, предполагая, что существует возможность хранить дату без дней по средствам MySql, решил уточнить, прежде чем реализовывать необходимое для добавления даты. Если бы такая возможность была в mysql, то она бы уменьшила количество работы будущей программы и время на реализацию такой программы.
>>1031478 Mysql предлагает хранить для твоего случая 00 в качестве дней в типе Date сам не пробовал, это из мануалов, как '2017-07-00', '2016-08-00', а получать их обратно ты сможешь с помощью функций YEAR(), DATE(), DATE_FORMAT(); при этом вся функциональность типа Date сохраняется. Попробуй и отпишись, плз.
Как называются IDE для работы с базами данных? А то у меня с опенсервером идет в комплекте только phpmyadmin и я бы хотел его заменить. Что посоветуете?
Вопрос в целом о проектировании приложений или систем, использующих слой БД не только для хранения данных, но и для ИХ обработки. Есть общий подход к проектированию с разбиением на звенья: двузвенные и трехзвенные. Как определить, какая модель больше подходит и как распределить функциональность между слоями? Как, не принимая во внимание 2х или 3х звенность, грамотно спроектировать саму БД и функциональность, в ней заключенную. Например, нужно ли писать get и set методы в самой БД для каждой сущности хранимой в БД? Как наладить взаимодействие между сущностями? Какие есть шаблоны и какие нужно обязательно знать? (по аналогии с шаблонами проектирования для джавистов) Если не лень, опишите плс как бы вы подошли к проектированию ИС, которая принимает заявки с левого сервера по почте например, несколько пользователей могут через интерфейс их обрабатывать, далее заявки передаются на другой сервер. Мне это нужно, не для собеседования или начальника, а просто для понимания как с высоты смотреть на разработку. Ну или накидайте литературы по теме, рекомендовали "Совершенный код", но там скорее пособие для кодеров, а не для архитекторов.
А ну быстро пояснили мне, как мигрировать на БД? Я вот насоздавал sql текстовых файлов, которые весят десятки мегабайт. Но даже самые мелкие из них импортируются по 10 минут на локалхосте. Как делать, чтобы не ждать столько?
>>1032009 Стучать в офисе по клавишам — это не труд, а хуйня полная. И уж точно это не стоит 100К+. Это просто возмутительно. За такое надо сажать в тюрьму.
>>1032018 Кормлю. Деньги платят за скилл и уровень ответственности. Какой скилл у дворника, какая у него ответственность? Нахуя ему больше платить? Физический труд не стоит ничего. Стучание по клавишам - верхушка айсберга.
Чет нихуя не пойму, локальный запрос занимает столько времени, хотя в самой большой табличке gloss всего-лишь 600к строк. Подобные запросы на сайте вроде этого http://jisho.org/search/school занимают милисекунды. Что я делаю не так?
>>1032147 Ну хуля, индексов небось нет, нихуя нет. И select * возвращает все столбцы всех заджойненных таблиц, что тоже может тормозить работу на говномашине, если столбцов дохуя
>>1032187 Да, кстати, мне совершенно непонятно, почему ты делаешь left join таблицы, но при этом накладываешь условия на ее значения? Почему не inner в этой ситуации?
>>1032199 Делай для двух последних таблиц inner join, я скозал. Смысл left join'a, если ты потом в части where все равно отсеиваешь незаджойненные значения? И очень плохо, знаешь ли, не понимать то, что ты пишешь. Твою проблему с производительностью я вряд ли решу, но могу авторитетно заявить, что ты бездарь и говнодел. Тьфу на тебя.
>>1032205 Да, долбоебина, в селекте на скрине условие в части where накладывается на основную таблицу. А ты накладываешь условие на таблицу, присоединенную через двойной лефт джойн. И что я должен был увидеть из твоего скрина? Автор осмысленно использует left join, а ты лезешь ко мне с аргументами уровня ВОТ ТУТ ТАК, когда на самом деле нихуя не так. В дальнейшей дискуссии смысла не вижу.
>>1032209 Тебе стоит проверить голову у врача, тут читается явный психоз. Щас бы ньюфага обзывать бездарем и долбоебом в разделе об изучении программирования.
>>1032216 Найс съехал, просто найс. Сначала пытаться доказать мне, что я неправ, а потом говорить Я НЬЮФАГ. Какие психозы? Я ЧСВ и ненавижу людей, но в остальном у меня все в порядке.
Если у кого будет похожая проблема, то я её решил заменой движка InnoDB на MyISAM и установкой полнотекстового индекса на колонку с кучей текста (https://stackoverflow.com/a/18166954). Время запроса уменишилось в ~10 раз.
>>1030048 Работал полтора года в мутных конторках, писал хуету на фреймворке. Сейчас съебал в закат на лето в надежде подтянуть знания и попинать хуи с пользой, что бы в цивильное место вкатиться.
У меня похожая база на эту >>1032201, помогите пожалуйста составить запрос чтобы выбрать Element с айди 1, который будет включать все значения из таблиц, которые соответствуют этому айди. Например, Element это пользователь с айдишником 1, у которого несколько постов в content_one и content_two, где у каждого поста несколько картинок и видео (co_child_one и co_child_two).
>>1032694 Пацан, а в чем помощь заключается? Вы там совсем охуели все? Ты мне предлагаешь руками за тебя переписать названия таблиц и полей? Это для тебя сложно слишком?
>>1032704 Ну я понимаю как выбрать только одну из веток: >SELECT * FROM elements >LEFT JOIN content_one ON elements.id = content_one.elements_id >LEFT JOIN co_child_one ON content_one.id = co_child_one.content_one_id >WHERE elements.id = 1
Но как сюда добавить остальные ветки? Если просто такими же джойнами, то получается каша. Напиши, пожалуйста, такой запрос.
>>1032715 И с хуев каша? Джойнишь точно такими же строчками content_two к elements, а co_child_two - к таблице content_one. Какая каша? Нет никакой каши. Ну да, у тебя там один ко многим, записи задвоиться могут, ну а хуле ты хотел? Если тебе нужны все дочерние, соответствующие родительским? Каша, блядь. Это БД ебаный в рот.
>>1032742 >Джойнишь точно такими же строчками content_two к elements, а co_child_two - к таблице content_one Как заджойнить именно к нужной таблице? Напиши запрос, пожалуйста, я же три раза уже попросил. Мне так будет проще понять, да и тебе быстрее, не нужно писать сопутствующий текст.
Аноны, покидайте, пожалуйста, вопросы с собеседований или задания на позицию БД-разраба, сейчас активно их прохожу, желательно Оракл. От себя тоже есть что добавить.
>>1033097 Да все тот же чел, который был на собеседовании в банке, побывал еще в одной хорошей конторе, где важна скорость работы кода, т.е. специфика иная нежели в dwh, там сказали, что через недельку дадут ответ, это после тестового задания и очного собеседования за жизнь. Сейчас планируется собеседование в одну из топовых it компаний на позицию ораклиста, подозреваю, что будут шерстить по архитектуре, теории БД и pl/sql. В последнем тестовом задании нужно было сделать запрос топ 10 с группировкой, затем этот же запрос использовать в процедуре, которая получает на вход номер потока и общее число потоков, нужно сделать так, чтобы каждому потоку запрос возвращал только предназначенные для этого потока записи, ну и простое задание на понимание работы цикла, исключений и транзакций.
>>1033115 >>1033119 Под потоками подразумевается абстрактные цифры, например 3 й поток из 4х. Это значит, что функция должна вернуть каждую строку начиная с третьей с шагом. Но задание интересным показалось, по работе с таким не сталкивался
>>1033121 Молодец, стремишься. А у меня вроде бы все в порядке. Думаю, до осени как минимум на своей работе посижу. А осенью отсрочка от армии будет готова, можно будет снова куда-нибудь сходить. Откликнулся недавно на вакансию со 150к, причем нормально им подходил, но отказали. Расстроился немного. Мб потому что я сразу в отклике написал, что нахожусь далеко от них и не смогу в нормальное время на собеседование приехать, потому что работаю. Лучше бы не писал такого и по телефону обкашливал такие вопросики. Или надо резюме себе поприличнее сделать, а то там как-то мало написано. Отложу до осени, все равно сейчас не особо хочется работу менять
>>1033132 ты разбираешься например в pl/sql, как его оптимизировать или какие бывают индексы и когда какой применять, оптимизировать запросы применять хинты и т.п. Я например в 23 этого не знал всего этого. Спрашиваю потому, что пытаюсь понять, что на рынке делается вообще, кек.
>>1033138 Разбираюсь. А за рыночек я тебе не скажу. Кем ты хочешь быть? Худшим мусором-недоаналитиком-отчетником, как я? Просто умей писать запросы, имей в этом опыт и знай всякие приколюхи. Очень сомневаюсь, что на аналогичной работе тебе нужно будет знать, как работает индекс по типу B-дерева. Дальше идут всякие боги, разработчики ETL, разработчики DWH, архитекторы, DBA. Какие к ним требования, я не знаю.
>>1033144 Можно предположить, что если для написания отчетиков нужно понимать как работает b-tree индекс, то шансы на дальнейшее мое трудоустройство на место повыше резко падают, лол. ты не топ-ораклист-120к случаем?
>>1033158 Как думаешь для чего листы в B-дереве индекса ссылаются на каждый следующий?Пока в голову ничего толком не пришло. Может для запросов с условием вида id > 500, чтобы сразу из индекса выбирать значения, найдя только нижнюю границу?
>>1033186 Ну падажжи. Чем тебя в принципе концепция б-дерева смущает и как бы ты сделал? У тебя есть запрос и ты перескакиваешь с ветки на ветку. Таким образом, вместо полного сканирования таблицы ты скачешь по веткам. Если у тебя запрос вида x > 100, то ты идёшь на ветку, где х > 100 и не сканируешь ветки дальше. Если у тебя запрос х = 100, то ты идёшь по веткам до самого конца. Я это как-то так вижу.
>>1033193 Не, я против концепции ничего не имею, понятно, что искать по дереву, это суть бинарный поиск и это круто. Мне было непонятно почему листы помимо связи с узлами верхнего уровня еще и связаны друг с другом, т.е. например есть лист в котором занчения 1..5, ссылается на лист с значениями 6..10 и т.д. Вот у Кайта только что прочитал, что так и есть. Например для запроса с условием where x between 20 and 30, будет найден лист, где есть ключ со значением 20, а дальше идет горизонтальный поиск, где просто, листы просматриваются один за другим пока до 30 не дойдет, это и есть index_range_scan. Т.е. по дереву пройти нужно только 1 раз, дальше по горизонтали.
>>1033196 Наверное, это для ситуации, когда у тебя листы 11..20 и 21..30, а тебе надо between 15 and 25. Если бы горизонтальной связи между листами не было, ты бы дважды бежал по дереву за каждым куском, а так ты находишь первый лист, а второй от него по горизонтали.
>>1033204 Так я ж тебе про то и говорил изначально, что от меня этого никто не спрашивал и не требовал, это я чисто для себя дрочу, потому что более осмысленную работу, плотнее связанную с базами данных
>>1033205 Тогда еще один вопрос по теме, если интересно. Если реверсивный индекс позволяет сократить издержки на инсерт, то почему бы не использовать его повсеместно для индексации ключа, который генерится по последовательности?. Т.е. например у нас есть таблицы, в которую ежесекундно выполняется по 100 инсертовЮ, при этом первичный ключ увеличивается на 1 для каждой следующей строки.
>>1033214 Не знаю, не разбираюсь в этом. Почитал, навскидку - есть подозрение, что на всех прочих операциях этот индекс будет работать работать медленнее. Чувак на скрине пишет, что данные будут разбросаны по диску. Это значит, что потребуется больше времени для селекта к этой таблице, джойна этой таблицы и тд. Так что в моем понимании такой индекс подходит только таблице, в которую часто что-то инсертят, но при этом редко апдейтят и вообще используют.
>>1033220 Возможно, это подойдёт для какой-нибудь таблицы логов, в которой всё фиксируют, но лезут в нее раз в год, когда что-нибудь наебнется. Вешать такой индекс на регулярно используемую таблицу я бы побоялся. Выиграешь на инсертах, но проебешь на всем остальном.
Итак, коллеги. Вечером планирую сделать перекат, может быть напишу что-нибудь дельное в шапку, но только по ораклу, остальное как-нибудь сами, мб напишете в тред и в следующий перекат сделаем
>>1033314 Покажи свои посты, обиженка. Помощь - это ответить на вопрос и подсказать. Писать за тебя запросы - это не помощь и я на это не подписывался.
Дальше лень листать. Тут не только мои посты, конечно же. По факту в треде отвечают по существу на 30% вопросов, остальные либо игнорируются, либо посылают в гугл. Может просто здесь сидит один вахтер, который портит воздух и создает такое впечатление, но это факт. Тред по пхп просто небо и земля.
>>1033329 Ура, ни одного вопроса без ответа по ораклу, видите какой я охуенный. На вопрос про хинты не стал отвечать, потому что это был бы дефолтный посыл в гугол, я и сам других источников не знаю и по этому вопросу предпочитаю гугл.
искренне ваш, топ-ораклист-120к
Алсо, с вот этой неблагодарной чмохи я сгорел и горю до сих пор >>1032747 Я разжевываю, пишу, что и как нужно делать, а ему (может, тебе?) даже прочитать впадлу, он требует, чтобы я писал за него запрос. Я уже сказал, что и через какие поля джойнить, это же так сложно написать джойн таблицы, когда тебе уже сказали, что джойнить и через что. Почему ты не можешь САМ написать свой вопрос и спросить, ДРУЗЬЯ, ПРАВИЛЬНО ЛИ Я НАПИСАЛ ЭТОТ ЗАПРОС? Почему вы считаете, что другие должны делать за вас абсолютно всё? Да, у меня нет никакого желания помогать ТАКИМ ньюфагам, и меньше всего на свете я хочу, чтобы вы научились писать запросы, устроились говноаналитиками в свои говноконторы и по каждой проблеме писали в этот тред. Без малейшего уважения к чужому времени и труду.
Спасибо за дизмораль, у меня снова нет желания отвечать кому-либо в этом треде. И перекат я вам делать не буду.
>>1015789 (OP) Привет, я только начал изучать SQL, поэтому не бейте пожалуйста. Я скачал 2 книжки: -Ицик Бен-Ган - MS SQL -Секреты oracle sql автора не помню, а искать не вижу смысла В первой книжке 'inner join' пишется как просто "join", во второй написано, что "inner join" стандарт именно "oracle ANSI". Но при этом на всяких форумах пишут, что inner join и join это одно и тоже и для обоих СУБД.
И еще один вопрос. https://www.youtube.com/watch?v=EHvzvwAv7RU&t=1s - тут мужик говорит, что join быстрее чем просто where это мне кажется более правильным А в книге написано, что join лучше только потому, что он помогает избежать перекрёстного декартового произведения.
>>1033462 Синонимы. Пиши как хочешь. Точно так же, как left join синоним left outer join.
>>1033472 Не быстрее. Пиши как хочешь. Предпочитаю писать join, потому что это тупо нагляднее. И пишешь рядом с таблицей не только условие связки, но и ограничения, накладываемые конкретно на эту таблицу.
>>1033462 >>1033463 >>1033472 Спасибо, если ты тот топ ораклист, то не стоит зацикливаться на каких-то уёбков, их можно просто игнорировать и они сами уйдут в свой пхп тред. Добра тебе.
Двач, есть алгоритм, который записывает определённые данные, которые выбирает пользователь в процессе взаимодействия с элементами страницы. Эти данные я записываю в базу Postgre в таблицу (id SERIAL PRIMARY KEY, data JSONB NOT NULL). Но теперь я хочу написать админку со статистикой, чтобы можно было составить графики и секции для отображения часто выбираемых данных. И есть два стула:
1) Либо я перебираю таблицу и все поля data и достаю данные в виде JSON из таблицы, и уже на клиенте их сортирую/составляю графики/etc. 2) Либо я делаю ещё одну таблицу, в которой будут лежать те же данные, но только кладу в неё уже не JSON, а распихиваю данные по разным полям, чтобы потом можно было делать выборку прямо из таблицы.
Что скажете? Мне больше нравится идея с одной таблицей, но не пожалею ли я потом?
Доказываем друг другу, что
>SELECT ID FROM b_entity_tvoya_mama
это тоже программирование,
Креэйтим индексы на одно и то же поле по 100 раз и инклудим в них всякие поля на всякий случай,
Храним gender в NVARCHAR(2000),
Поясняем, как можно без задней мысли хранить бизнес-логику в бд, а не в приложении,
Рассказываем, как обновлять хранилище данных актуальными real-time данными раз в минуту,
Называем логично и понятно поля в логичных и понятных таблицах
>CREATE TABLE tablica_s_clientami (
>ID_CLIENTA INT NOT NULL
>IMYA NTEXT,
>"DATA ROJDENIYA" NVARCHAR(MAX))
Ну и, конечно же, выбираем лудшую СУБД для всего:
MY SQL
MS SQL
PostgreSQL
ORACLE
MongoDB
SQLite
Excel
И даже Google Docs!
В общем, это очередной баз данных тред.