Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
otymko opened this issue Jun 25, 2019 · 0 comments
Open

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

otymko opened this issue Jun 25, 2019 · 0 comments

Comments

@otymko
Copy link
Contributor

otymko commented Jun 25, 2019

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

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

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

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

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

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant