Konctantin
16.06.2010, 00:26
Доброй ночи, подскажите пожалуйста, есть ли в mysql построитель запроса?
могу объяснить на примере запроса в 1С:
ВЫБРАТЬ
ВложенныйЗапрос.Документ КАК Документ,
ВложенныйЗапрос.Период,
ВложенныйЗапрос.РозничныйСклад КАК РозничныйСклад,
ВложенныйЗапрос.Себестоим сть КАК Себестоимость,
ВложенныйЗапрос.Выручка КАК Выручка,
1 * 0 КАК Доход,
НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Перио д, ДЕНЬ) КАК ПериодДень,
НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Перио д, НЕДЕЛЯ) КАК ПериодНеделя,
НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Перио д, МЕСЯЦ) КАК ПериодМесяц,
НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Перио д, ДЕКАДА) КАК ПериодДекада,
НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Перио д, ГОД) КАК ПериодГод,
ВложенныйЗапрос.НДСВыручк КАК НДСВыручки,
2 * 0 КАК СуммаВыручкиБезНДС
ИЗ
(ВЫБРАТЬ
ХозрасчетныйОбороты.Регистратор КАК Документ,
ХозрасчетныйОбороты.Перио КАК Период,
ХозрасчетныйОбороты.КорСу конто2 КАК РозничныйСклад,
ХозрасчетныйОбороты.Сумма борот КАК Себестоимость,
NULL КАК Выручка,
NULL КАК НДСВыручки
ИЗ
РегистрБухгалтерии.Хозрасч тный.Обороты(&ДатаНач, &ДатаКон, Регистратор, Счет В (&Счет902), , , КорСчет В (&Счет2822), ) КАК ХозрасчетныйОбороты
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ПриходныйКассовыйОрдерПри емРозничнойВыручки.Ссылка,
ПриходныйКассовыйОрдерПри емРозничнойВыручки.Ссылка.Дат а,
ПриходныйКассовыйОрдерПри емРозничнойВыручки.Ссылка.Кон трагент,
NULL,
ПриходныйКассовыйОрдерПри емРозничнойВыручки.Сумма,
ПриходныйКассовыйОрдерПри емРозничнойВыручки.СуммаНДС
ИЗ
Документ.ПриходныйКассовы Ордер.ПриемРозничнойВыручки КАК ПриходныйКассовыйОрдерПри емРозничнойВыручки
ГДЕ
ПриходныйКассовыйОрдерПри емРозничнойВыручки.Ссылка.Вид Операции = &ВидОперации
И ПриходныйКассовыйОрдерПри емРозничнойВыручки.Ссылка.Про веден
И ПриходныйКассовыйОрдерПри емРозничнойВыручки.Ссылка.Дат а МЕЖДУ &ДатаНач И &ДатаКон) КАК ВложенныйЗапрос
{ГДЕ
ВложенныйЗапрос.Документ.*,
ВложенныйЗапрос.РозничныйСклад.*}
УПОРЯДОЧИТЬ ПО
РозничныйСклад,
Документ
{УПОРЯДОЧИТЬ ПО
Документ.*,
РозничныйСклад.*,
ПериодДень,
ПериодНеделя,
ПериодМесяц,
ПериодДекада,
ПериодГод}
ИТОГИ
СУММА(Себестоимость),
СУММА(Выручка),
СУММА(Выручка) - СУММА(Себестоимость) КАК Доход,
СУММА(НДСВыручки),
СУММА(Выручка) - СУММА(НДСВыручки) КАК СуммаВыручкиБезНДС
ПО
ОБЩИЕ,
РозничныйСклад,
Документ,
ПериодДень,
ПериодМесяц,
ПериодНеделя,
ПериодДекада,
ПериодГод
{ИТОГИ ПО
Документ.*,
РозничныйСклад.*,
ПериодДень,
ПериодНеделя,
ПериодМесяц,
ПериодДекада,
ПериодГод}
АВТОУПОРЯДОЧИВАНИЕ
так вот, есть такой участок кода:
{ГДЕ
ВложенныйЗапрос.Документ.*,
ВложенныйЗапрос.РозничныйСклад.*}
// вызов
Для индекс = 0 ПО индекс = ПостроительОтчета.Отбор.Ко личество() Цикл
ПостроительОтчета.Отбор.По лучить(индекс);
Следующий;
КонецЦикла
// суть в том, что загружается таблица значений и если есть какие-то значения, то они подставляются
по этому участку можно построить отбор, тобиш если значение задано - условие учитывается, если нет, тогда игнорируется.
Есть ли что-то подобное в MySQL
могу объяснить на примере запроса в 1С:
ВЫБРАТЬ
ВложенныйЗапрос.Документ КАК Документ,
ВложенныйЗапрос.Период,
ВложенныйЗапрос.РозничныйСклад КАК РозничныйСклад,
ВложенныйЗапрос.Себестоим сть КАК Себестоимость,
ВложенныйЗапрос.Выручка КАК Выручка,
1 * 0 КАК Доход,
НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Перио д, ДЕНЬ) КАК ПериодДень,
НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Перио д, НЕДЕЛЯ) КАК ПериодНеделя,
НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Перио д, МЕСЯЦ) КАК ПериодМесяц,
НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Перио д, ДЕКАДА) КАК ПериодДекада,
НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Перио д, ГОД) КАК ПериодГод,
ВложенныйЗапрос.НДСВыручк КАК НДСВыручки,
2 * 0 КАК СуммаВыручкиБезНДС
ИЗ
(ВЫБРАТЬ
ХозрасчетныйОбороты.Регистратор КАК Документ,
ХозрасчетныйОбороты.Перио КАК Период,
ХозрасчетныйОбороты.КорСу конто2 КАК РозничныйСклад,
ХозрасчетныйОбороты.Сумма борот КАК Себестоимость,
NULL КАК Выручка,
NULL КАК НДСВыручки
ИЗ
РегистрБухгалтерии.Хозрасч тный.Обороты(&ДатаНач, &ДатаКон, Регистратор, Счет В (&Счет902), , , КорСчет В (&Счет2822), ) КАК ХозрасчетныйОбороты
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ПриходныйКассовыйОрдерПри емРозничнойВыручки.Ссылка,
ПриходныйКассовыйОрдерПри емРозничнойВыручки.Ссылка.Дат а,
ПриходныйКассовыйОрдерПри емРозничнойВыручки.Ссылка.Кон трагент,
NULL,
ПриходныйКассовыйОрдерПри емРозничнойВыручки.Сумма,
ПриходныйКассовыйОрдерПри емРозничнойВыручки.СуммаНДС
ИЗ
Документ.ПриходныйКассовы Ордер.ПриемРозничнойВыручки КАК ПриходныйКассовыйОрдерПри емРозничнойВыручки
ГДЕ
ПриходныйКассовыйОрдерПри емРозничнойВыручки.Ссылка.Вид Операции = &ВидОперации
И ПриходныйКассовыйОрдерПри емРозничнойВыручки.Ссылка.Про веден
И ПриходныйКассовыйОрдерПри емРозничнойВыручки.Ссылка.Дат а МЕЖДУ &ДатаНач И &ДатаКон) КАК ВложенныйЗапрос
{ГДЕ
ВложенныйЗапрос.Документ.*,
ВложенныйЗапрос.РозничныйСклад.*}
УПОРЯДОЧИТЬ ПО
РозничныйСклад,
Документ
{УПОРЯДОЧИТЬ ПО
Документ.*,
РозничныйСклад.*,
ПериодДень,
ПериодНеделя,
ПериодМесяц,
ПериодДекада,
ПериодГод}
ИТОГИ
СУММА(Себестоимость),
СУММА(Выручка),
СУММА(Выручка) - СУММА(Себестоимость) КАК Доход,
СУММА(НДСВыручки),
СУММА(Выручка) - СУММА(НДСВыручки) КАК СуммаВыручкиБезНДС
ПО
ОБЩИЕ,
РозничныйСклад,
Документ,
ПериодДень,
ПериодМесяц,
ПериодНеделя,
ПериодДекада,
ПериодГод
{ИТОГИ ПО
Документ.*,
РозничныйСклад.*,
ПериодДень,
ПериодНеделя,
ПериодМесяц,
ПериодДекада,
ПериодГод}
АВТОУПОРЯДОЧИВАНИЕ
так вот, есть такой участок кода:
{ГДЕ
ВложенныйЗапрос.Документ.*,
ВложенныйЗапрос.РозничныйСклад.*}
// вызов
Для индекс = 0 ПО индекс = ПостроительОтчета.Отбор.Ко личество() Цикл
ПостроительОтчета.Отбор.По лучить(индекс);
Следующий;
КонецЦикла
// суть в том, что загружается таблица значений и если есть какие-то значения, то они подставляются
по этому участку можно построить отбор, тобиш если значение задано - условие учитывается, если нет, тогда игнорируется.
Есть ли что-то подобное в MySQL