#6. Фильтрация строк в Select. Работа с оператором BETWEEN и вложенными запросами | Основы SQL

Поділитися
Вставка
  • Опубліковано 2 гру 2024

КОМЕНТАРІ • 24

  • @Dr_MaO
    @Dr_MaO 8 місяців тому +1

    Спасибо! Коммент в поддержку канала!

  • @maemelyanov
    @maemelyanov 3 роки тому +4

    Запросы в уроке:
    00:35
    select * from departments;
    01:07
    select * from employees
    where
    department_id in (30, 91, 100)
    ;
    01:45
    select * from departments
    where
    department_name in ('Purchasing', 'Executive', 'Finance')
    ;
    02:21
    select * from employees
    where
    department_id in
    (
    select department_id from departments
    where
    department_name in ('Purchasing', 'Executive', 'Finance')
    )
    ;
    03:06
    select * from employees
    where hire_date between '01.06.05' and '31.08.05'
    --where employee_id between 100 and 110
    ;
    Не благодарите! :)

    • @ExcelStore
      @ExcelStore  3 роки тому

      Для данного урока также есть ссылка с соответствующими запросами.
      pastebin.com/tf855H6A

  • @ExcelStore
    @ExcelStore  4 роки тому +3

    Если у кого-то есть вопросы по домашнему заданию, указанному в описании к данному видео, пишите здесь в комментариях или в нашей группе Телеграмм. Отвечу всем!
    Также, если пропустили, рекомендую посмотреть первую часть урока про фильтрацию строк в запросе select. Ссылка: ua-cam.com/video/OWSRLbj1afo/v-deo.html

  • @Netwebnet
    @Netwebnet 3 роки тому +2

    Все доступно☆

  • @DMITRIYGeorgia
    @DMITRIYGeorgia Рік тому

    Спасибо

  • @modest_handsome
    @modest_handsome 3 роки тому +1

    1. Правильно ли я понял из предыдущих уроков, что если дело доходит до манипуляций с датами, то лучше Всегда! не полениться и использовать оператор TO_DATE, а не просто заключать в апострофы указываемые даты? Т.е., например, вместо '01.06.2005' всегда! лучше не полениться и написать TO_DATE('01.06.2005', 'dd.mm.yyyy') во избежание некорректной выгрузки?
    2. Оператор BETWEEN понимает оба формата даты: '01.06.05' и '01.06.2005'? (год указан полностью и частично).

    • @ExcelStore
      @ExcelStore  3 роки тому +2

      Глеб,
      1. Если код пишите исключительно для себя и на других ПК не планируете его запускать, то можно и без TO_DATE. В остальных случаях, лучше с TO_DATE.
      2. Тут дело не в BETWEEN. Дату распознает сама СУБД. Поэтому, если в обычном селекте вы можете использовать тот или иной формат, то эти же форматы указания даты будут допустимы и в BETWEEN .

  • @АлександрАнтасюк-ч2т

    Класс, мозги вскипели на подзапросах. А как вывести несколько полей из обеих таблиц?

    • @ExcelStore
      @ExcelStore  3 роки тому

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

  • @АльбертСабитов-ц3п
    @АльбертСабитов-ц3п 3 роки тому +1

    С подзапросами реально трудновато, надеюсь на практике уложится в голове, но 3-ье задание из ДЗ сделано ✌

    • @ExcelStore
      @ExcelStore  3 роки тому

      Тут просто дело привычки. Надо чаще с ними работать и будет все нормально. Вещь очень полезная и реально часто используемая на практике.

  • @modest_handsome
    @modest_handsome 3 роки тому +2

    Максим, приветствую! Подскажите, пжл, почему не срабатывает запрос в ДЗ? В чем ошибка?
    SELECT * FROM employees
    WHERE manager_id IN (SELECT manager_id FROM departments WHERE location_id >= 2600);
    Все логично вроде: находим в таблице DEPARTMENTS айди всех менеджеров у кого LOCATION_ID >= 2600. Затем подставляем эти значения в оператор IN. Поле MANAGER_ID есть в обеих таблицах.

    • @ExcelStore
      @ExcelStore  3 роки тому

      Глеб, добрый день.
      Сама конструкция кода у вас правильная. Только вместо manager_id должно быть department_id

    • @modest_handsome
      @modest_handsome 3 роки тому

      @@ExcelStore А не могли бы пояснить "почему именно department_id"? И почему не подходит manager_id? Этот параметр ведь есть в обеих таблицах и должен мочь выступать как связующее (общее) значение.
      Мне на этом этапе важно это понять, чтобы разобраться в принципе выбора или, наоборот, отсева полей, которые должны или не должны быть использованы в расчетах.

    • @ExcelStore
      @ExcelStore  3 роки тому +2

      @@modest_handsome Там просто по условию задачи звучит: "...все строки, LOCATION_ID департамента которых...". Т.е. явно сказано, что нужно ориентироваться на департаменты, а не на менеджеров. Поэтому и использовать надо department_id вместо manager_id

    • @modest_handsome
      @modest_handsome 3 роки тому

      @@ExcelStore Ясно.

    • @maxbod5246
      @maxbod5246 5 місяців тому

      @@modest_handsome Кстати тоже не понял почему именно manager_id нельзя, думал что обязательным условием является ЛЮБОЕ общее. Типо отношение родитель-дочка...но при этом с департмент_ид все получается и выдается результат, а тоже самое, но с менеджер_ид не получается...

  • @aleksandrlukashev4398
    @aleksandrlukashev4398 Рік тому

    4 минуты не мало для такой темы ?
    И как решить это - Используя предложение WHERE и оператор BETWEEN, оставьте только те строки, в которых значение поля SALARY попадает в диапазон от 1 000 до 10 000 и дата приема сотрудника на работу попадает в диапазон от 01.01.07 до 30.06.07.

  • @arroganz9318
    @arroganz9318 Рік тому +1

    horosho chto v exele na rabote s massiwami dannih rabotal, logika ponyatna. Inache by tyazhelovato bilo bi.
    podzaprosi napominaut logiku funkcii VPR / INDEX POISKPOZ a sama vlozhennost' napominaet strukturu funkcii ESLI , kogda v nee pihaesh esche nescolko 'ESLI' kaskadom.

    • @ExcelStore
      @ExcelStore  Рік тому

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