• Выбрать друзей из таблицы?

    @Joysi75
    Кирилл Арутюнов: Если нормализовать структуру БД, то стоит хранить юзеров отдельно от их множественных свойств (дружить можно со многими). Лучше было бы сделать 2 доп таблицы:
    StatusType (Id, StatusName) например( 1, друзья),(2, враги), (3, знакомые), (4, супруги) ...
    Status(UserFromId, UserToId, StatusId,DateStart,DateEnd ... ) - первые 2 поля ссылаются на Users, 3-е на StatusType

    Но, возможно, это не нужно и слишком усложнит все.
  • Выбрать друзей из таблицы?

    @Joysi75
    Недостаточно искать только по статусу. Если юзер1 подтвердил дружбу с юзером2, а юзер2 не подтвердил - то это не является дружбой (блин, философия какая то пошла). Все равно будет запрос на связь таблицы с собой.
  • Выбрать друзей из таблицы?

    @Joysi75
    coden55:
    Поторопился, простите
    select t2.* from table1 t1,table1 t2 
      where 
         t1.from_user_id=t2.to_user_id and 
         t2.from_user_id=t1.to_user_id and 
         t1.from_user_id=5
  • Множественные объединения c условием?

    @Joysi75
    Origihor: Оказывается для MySQL необходимо проставлять алиасы для подзапросов (для Oracle это не обязательно):
    Проверил на первом попавшемся форке MySQL www.tutorialspoint.com/mysql_terminal_online.php

    select BSproduct from
      ( -- Список продуктов имеющих черный цвет и малый размер
        select product as BSProduct from
          (
            SELECT  t1.id,  t1.name AS product,  t3.name AS color,  t5.name AS size
              FROM  `product` AS t1
              JOIN `product_color` AS t2 ON t1.id = t2.product_id
              JOIN `color` AS t3 ON t2.color_id = t3.id
              JOIN `product_size` AS t4 ON t1.id = t4.product_id
              JOIN `size` AS t5 ON t4.size_id = t5.id
          ) as nested1
        where color = "black" and size = "S"  
      ) as BlackAndSmallSize, 
      ( -- Список продуктов имеющих черный цвет и средний размер
        select product as BMProduct from
          (
            SELECT  t1.id,  t1.name AS product,  t3.name AS color,  t5.name AS size
              FROM  `product` AS t1
              JOIN `product_color` AS t2 ON t1.id = t2.product_id
              JOIN `color` AS t3 ON t2.color_id = t3.id
              JOIN `product_size` AS t4 ON t1.id = t4.product_id
              JOIN `size` AS t5 ON t4.size_id = t5.id
          ) as nested2
        where color = "black" and size = "M"  
      ) as BlackAndMidSize, 
      ( -- Список продуктов имеющих большой размер
        select product as LProduct from
          (
            SELECT  t1.id,  t1.name AS product,  t3.name AS color,  t5.name AS size
              FROM  `product` AS t1
              JOIN `product_color` AS t2 ON t1.id = t2.product_id
              JOIN `color` AS t3 ON t2.color_id = t3.id
              JOIN `product_size` AS t4 ON t1.id = t4.product_id
              JOIN `size` AS t5 ON t4.size_id = t5.id
          ) as nested3
        where size = "L"  
      ) as LargeSize
    where BSProduct=BMProduct and BMProduct=LProduct
  • Где узнать словари для уровней знания английского?

    @Joysi75 Автор вопроса
    У меня нет задачи сдать тест. Изучал английский сам, естественно есть пробелы, в том числе и в личном словаре, который не сбалансирован: знаю много слов животных и растений, а например, как пишется селезенка, подтяжки - нет. Хочется банально "выровнять" основы.
  • Как построить, структурировать изучение и повторения анг. языка?

    @Joysi75
    Артем, спасибо за memrise. A lingualeo - фактически основной ресурс (у него огромный контент) на данную тему для русскоязычной части интернета: демократичная цена, разнообразные курсы + не стоит на месте и развивается .
    Попробовал The Guardian почитать (до этого не читал подобного рода новости, только на техническую тематику) - черт побери, получается (одно-два незнакомых слова на абзац) и без напряга читается! Уверовал в себя :-). Раньше ( в универе) когда нам газеты приносили (Moscow NEws и т.п.) выцеплял знакомые ключевые слова и по ним "выстраивал" общий смысл :-)
  • Как построить, структурировать изучение и повторения анг. языка?

    @Joysi75
    Кирилл:
    Хотел добавить: Со временем попробуйте бесплатные курсы по техническим дисциплинам на английском языке (например, coursera.org). На большинстве англоязычных курсах можно включать английские субтитры. Для начала просмотрите курс, содержание которого Вам хорошо знакомо (например основы известного для Вас языка программирования или основы математики и т. п.). Помимо просто просмотра там есть и тесты на время, еженедельные упражнения и задачи, общение в форуме на предмет разбора задач и тем курса и т.д. .
    Чуть позже (возможно, немного раньше чем рассчитываете ) выбирайте курс основываясь не на уровне английского языка, а на интересующей Вас тематике. Сразу убьете пару зайцев - и язык прокачиваете и новую область/технологию изучаете/улучшаете. Также не забывайте добавлять незнакомые слова в свой личный словарь.
    Я как только решил заниматься английским с начальным ~Pre-Intermediate (весной) неожиданно для себя практически без словесных затруднений прошел https://www.coursera.org/course/rprog. Английский лектора (акцент) был простой и понятный.
  • Бывают ли скидки у JetBrains + вопрос по схеме лицензирования?

    @Joysi75 Автор вопроса
    Спасибо.
    Но за 99$ Вы ранее покупали год поддержки + права на версию продукта на дату годом позже от даты покупки. А теперь права на версию продукта на дату покупки по окончании года с момента покупки. Так что сравнение не так однозначно в пользу 59$ .
  • Где можно найти реальные тестовые данные на 10М+ записей?

    @Joysi75 Автор вопроса
    v- smerti: =) Нет. Задача поиска зависимостей между данными (в том числе штатными средствами SQL)
  • Где можно найти реальные тестовые данные на 10М+ записей?

    @Joysi75 Автор вопроса
    Нет, спасибо. Хотелось бы объекты более "натуральные".
  • Где можно найти реальные тестовые данные на 10М+ записей?

    @Joysi75 Автор вопроса
    Спасибо за ответ. Но вопрос был не про генерацию данных, а про реальные данные.
  • Выборка данных из трех таблиц MySQL с условием многие к одному?

    @Joysi75
    То есть в Select-е отсортировать все по id, выводимые записи закидывать в промежуточные переменные, которые считать сформированными при смене id или при чтении последней записи
  • Выборка данных из трех таблиц MySQL с условием многие к одному?

    @Joysi75
    Тогда в цикле по типу:
    old_id = 0;
    imgpath = '';
    meta='';
    (S as SQLQuery).new.open('select ads.id, ads_meta.text, ads_images.path ...
      from ads, ads_images, ads_meta
      where ads_images.ads_id=ads.id and ads_meta.ads_id=ads.id
      order by ads.id');
    while (S.NextRecord) {
      new_id = S.FieldToInt('ads.id');
      if (new_id <> old_id) {
         Сделаем что-надо с сформированным  объявлением, у которого есть уже все пути и меты в imgpath и meta
         imgpath = S.FieldToString('path');
         meta = S.FieldToString('text');
      }
      else {
        imgpath += ';' + S.FieldToString('path');
        meta += chr(10) + chr(13) + S.FieldToString('text');
      }
    }
  • Как сделать выборку из всех таблиц одной базы данных в SQL Server?

    @Joysi75
    Vapaamies: Возможно пытается разобраться со структурой чужой базы данных. Например ищет достаточно редкое значение, чтобы понять, где оно может храниться :)
  • Как увеличить значение ячейки во всех строках таблицы?

    @Joysi75
    Дмитрий Ковальский: Конечно, но для перестраховки существуют:
    - тестовые базы с данными актуальными боевым
    - бекапы.
    - транзакции.

    В Oracle, который вы приводите, для подтверждения изменений необходимо завершить транзакцию позднее (не обязательно непосредственно после update) commit-ом.

    Простите за активность, просто я "вживую" в первые встретился с таким неожиданным применением Where.
    У вас это, наверное дело привычки (или перестраховки). Все мы разные.
  • Как увеличить значение ячейки во всех строках таблицы?

    @Joysi75
    В Oracle тоже не обязательно. Дмитрий, это Ваше дело, но: SQL - это язык, представьте себе если в "стандартном" языке программирования вы напишите:
    if 1==1 {s++};
    Это не логично у другого человека возникнет подозрение, что тут не чисто. У меня, когда увидел ваш Where в ответе- то, что SQL запрос сгенерирован и скопипастен из недоработанной сторонней утилиты или framework-а, которая не проверяя наличия условий по умолчанию выставляет заглушку а-ля 1=1. А если увидеть подобное в коде - то подумал бы, что ранее было условие и в процессе отладки убрали его, а where оставили, чтобы в дальнейшем не забыть и снова добавить условие.
    Это плохой стиль - не делайте так.
  • Как увеличить значение ячейки во всех строках таблицы?

    @Joysi75
    Стоп стоп стоп!!! Это не правда! Where используется когда необходимо выставить условие(я), нет необходимости в условиях (для всех записей таблицы) - where не стоит использовать в update выражении. Аналогично и в других командах select,delete,....
    Пожалуйста, срочно подучите основы SQL!
  • Какие у администратора БД обязанности и KPI (показатели работы)?

    @Joysi75
    igruschkafox: Дело не в количестве БД.
    Например, брокерские услуги. Центральный софт занимается торговлей ценными бумагами на разных площадках (через разные шлюзы) и хранит данные в СУБД. К которой подключаются штатные трейдеры, брокеры и др сотрудники, всевозможные клиенты. Фирма софтописатель берет за поддержку N руб/мес. Основная его задача - чтобы софт работал. Если какой сотрудник аналитик формирует ведомости за год полдня стандартным запросом - то софтописатель может за Y руб и Z дней соптимизировать запрос (профилирует, создаст отдельный запрос вместо универсального построенного софтом + индексы,). А если такого рода запросов - много .Если активность клиентов увеличилась и при этом достаток фирмы целиком держится на данном софте ? А если данные - строго конфиденциальные (я про пригласить спеца со стороны, а не софтописателя) ? Если у руководства фирмы вагон задач (не обязательно сложные отчеты к БД, а например: открыть филиалы, организовать аудит работы БД, или какой отдел захочет получить данные из софта в каком нить экзотическом или не очень виде для обработки своим любимой малоизвестной прогой...) .

    Многие финансовые институты(биржи, банки, венчурки) , провайдеры связи и т.п. имеют реализацию ~90% своего функционала в 1-2х БД :)
  • Какие у администратора БД обязанности и KPI (показатели работы)?

    @Joysi75
    Макс грамотно все изложил. Я также добавил бы умение разобраться в структуре хранимых данных и основных операциях с ними в привязке к конкретной специфике( для оптимального тюнинга существующих операций и написания новых).
  • Почему использование триггера в mysql/oracle/mssql ... в web-программирование (и не только) считается признаком говнокода?

    @Joysi75 Автор вопроса
    Если не против, возражу:
    Не планируется разделять бизнес-логику на 2 части, а погрузить целиком в СУБД. В "языках хранимых процедур" есть и сильные и слабые стороны. Сильные - они синтаксически-просто оперируют с большими объемами данных, слабые - отсутствие syntax-sugar и привычной стилизации ООП (коряво сказал, но смысл понятен, наверное) и т.п.. Не будем рассматривать использование в реализации с использованием Aurora (встроенная Java) для Oracle, C# модули для MSSQL и т.п. для того, чтобы все было на одном языке в рамках данного слоя.
    Зачем тогда слой ORM? CRUD погружается в стандартные Insert,Select,Update,Delete. Генерацию событий можно вешать на триггеры и constraint. Дополнительный функционал можно повесить на хранимые процедуры.
    Еще из плюсов:
    - нормализация хранимых данных
    - полный контроль где и как хранятся данные (models).
    - если необходимо модифицировать или сделать сложную выборку - легко написать -оптимальный-запрос/процедуру (выверенную профайлером, с расставленными нужными индексами и т.п.) на прозрачном языке (сразу видно в одном месте, что и как делается). Будет работать быстро и корректно.

    Можно построить БД так, чтобы унифицировать такие запросы/процедуры без привязки к конкретным таблицам (например, динамически строить).
    Следствие из нормализации - другое приложение, обращающееся к данным, не сможет повредить их из-за отсутствия контроля (например, не прописанных отношений или валидации для моделей). Риск, того, что delete вычистит данные из справочника - существенно ниже, если на справочник есть foreign-key из ссылающейся таблицы (как пример).

    Плохо только то, что есть привязка к своей реализации языка в каждой СУБД (TSQL, PLSQL и т.п.) - но такова цена.

    Короче есть куда учебные велосипеды направить.

    P.S. Особенно "порадовали" комментарии, что про наличие триггера можно "забыть" и они выпадают из логики работы СУБД :-(