Skip to content

Конструктор SQL запросов #40

@otymko

Description

@otymko

Хотелось бы видеть функционал создания sql запросов в виде конструктора в fluent стиле.
Примеры:
Дано:

  • Сущность Автор с полями: Код, Имя, Почта, Роль. Таблица бд называется Авторы.
  • Сущность Роль с полями: Код, Имя. Таблица бд называется Роли.
Конструктор = МенеджерСущностей.КонструкторЗапросов();

Выборка = Конструктор.Из("Автор") .Где("Код", 1).Выполнить();
Для Каждого ЭлементВыборки Из Выборка Цикл
    Сообщить(ЭлементВыборки.Имя);
КонецЦикла;

Возможности:

  • Из(ИмяСущности) - метод FROM
  • Где(ИмяПоля, Значение), Где(Соответствие), Где(Массив) - метод WHERE
  • Выбрать(), Выбрать("ИмяСущности.Поле1, ИмяСущности.Поле2, ИмяСущности.Поле3"), Выбрать(Массив) - указание выбора определенных полей из запроса
  • Ограничить(НомерЗаписи, КоличествоЗаписей) - метод LIMIT
  • ЛевоеСоединение(Условие), ПравоеСоединение(Условие), ВнутренееСоединение(Условие), ВнешнееСоединение(Условие) - методы LEFT JOIN, RIGHT JOIN, INNER JOIN, OUTER JOIN
  • Упорядочить(Поле, ПорядокСортировки), Упорядочик(Массив) - метод ORDER BY
  • Выполнить() - выполнить запрос

Еще пример (дано такое же):

Выборка = Конструктор
    .Из("Автор")
    .Выбрать("Автор.Имя, Автор.Почта")
    .ЛевоеСоединение("Роль", "Автор.Роль=Роль.Код")
    .Выбрать("Роль.Имя")
    .Упорядочить("Автор.Имя", ПорядокСортировки.Убывание);
    .Выполнить();

Как пример всего этого в других языках: fluentPDO

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions