Как я могу разделить команду T-SQL - PullRequest
1 голос
/ 13 мая 2019

Как разделить команду T-SQL на

SELECT    FROM    WHERE    GROUP

Например, мне нужно разделить эту команду

Text To lcSQLCommand TextMerge NoShow Flags 1 Pretext 15
         SELECT a.HabitacionID, a.TipoID, b.AlquilerID, b.Desde, b.Hasta, IFNULL(b.Estado, 0) Estado,
                 c.Habitacion, c.Precio1 Precio
                 FROM habitaciones a
                      LEFT JOIN (SELECT HabitacionID, AlquilerID, Desde, Hasta, Estado
                                        FROM alquiler 
                                        WHERE (Estado = 2 AND Desde <= CURDATE()) OR Estado = 1
                                        ) b ON a.HabitacionID = b.HabitacionID
                      LEFT JOIN habitaciones_tipo c ON a.TipoID = c.TipoID
EndText

В

lcSQLSelect = "SELECT a.HabitacionID, a.TipoID, b.AlquilerID, b.Desde, b.Hasta, IFNULL(b.Estado, 0) Estado, c.Habitacion, c.Precio1 Precio"

lcSQLFrom = "FROM habitaciones a LEFT JOIN (SELECT HabitacionID, AlquilerID, Desde, Hasta, Estado FROM alquiler WHERE (Estado = 2 AND Desde <= CURDATE()) OR Estado = 1) b ON a.HabitacionID = b.HabitacionID LEFT JOIN habitaciones_tipo c ON a.TipoID = c.TipoID"

lcWhere = "" && No Where in this command

lcGroup = "" && No Group un this command

С уважением

Ze Roberto

Текст в lcSQLCommand TextMerge NoShow Flags 1 Предлог 15 ВЫБРАТЬ a.HabitacionID, a.TipoID, b.AlquilerID, b.Desde, b.Hasta, IFNULL (b.Estado, 0) Estado, c.Habitacion, c.Precio1 Precio ИЗ мест обитания СЛЕДУЮЩЕЕ СОЕДИНЕНИЕ (ВЫБЕРИТЕ HabitacionID, AlquilerID, Десде, Хаста, Estado ИЗ ПРОИГРЫВАТЕЛЯ ГДЕ (Estado = 2 И Desde <= CURDATE ()) ИЛИ Estado = 1) b ON a.HabitacionID = b.HabitacionID ЛЕВОЕ СОЕДИНЕНИЕ

1 Ответ

0 голосов
/ 13 мая 2019

Посмотрите на функцию STREXTRACT (). Это позволяет вам разделять строки, указав начальный и конечный разделители. Так, например, чтобы получить список полей, вы должны использовать:

lcFieldList = STREXTRACT(lcSQLCommand, "SELECT", "FROM")

Это становится сложнее для всего остального, что вам нужно, потому что вам придется проверять наличие ключевых слов WHERE и GROUP BY, чтобы точно знать, какие у вас есть разделители, но все это не должно превышать 15 или 20 строк.

Примечание: я предполагаю, что вы хотите сделать это в VFP.

...