История изменений
Исправление NitroJunkie, (текущая версия) :
SELECT
...
FROM Registry
LEFT JOIN Product ON Registry.Subcount1Type = &ProductType
AND Registry.Subcount1Value = Product.Id
LEFT JOIN Clients ON Registry.Subcount1Type = &ClientsType
AND Registry.Subcount1Value = Clients.Id
...
Ну это как раз странный пример. Потому в PostgreSQL (и lsFusion) проблема не в классах, а в типах, то есть когда у вас одно поле скажем строка, дата или объект.
В данном случае, можно просто поле Subcount1Value абстрактного класса Object сделать. И в lsFusion тогда будут просто разные свойства.
// тут возможно для resolving'а надо будет или cast (то есть Subcount1Value(r) AS Client) или явный класс указать (то есть phone[Client](Subcount1Value(r))), если у вас много свойств phone в данном namespace
clientPhone(r) = IF Subcount1Type(r) = Type.Client THEN phone(Subcount1Value(r))
productBarcode(r) = IF Subcount1Type(r) = Type.Product THEN barcode(Subcount1Value(r)) // аналогично верхнему
А дальше если вы их используете вместе платформа сама скомпилирует их в что-то типа как у вас, скажем если будет так на lsFusion:
EXPORT FROM clientPhone(Registry r), productBarcode(Registry r);
Исправление NitroJunkie, :
SELECT
...
FROM Registry
LEFT JOIN Product ON Registry.Subcount1Type = &ProductType
AND Registry.Subcount1Value = Product.Id
LEFT JOIN Clients ON Registry.Subcount1Type = &ClientsType
AND Registry.Subcount1Value = Clients.Id
...
Ну это как раз странный пример. Потому в PostgreSQL (и lsFusion) проблема не в классах, а в типах, то есть когда у вас одно поле скажем строка, дата или объект.
В данном случае, можно просто поле Subcount1Value абстрактного класса Object сделать. И в lsFusion тогда будут просто разные свойства.
// тут возможно для resolving'а надо будет или cast (то есть Subcount1Value(r) AS Client) или явный класс указать (то есть phone[Client](Subcount1Value(r))), если у вас много свойств phone в данном namespace
clientPhone(r) = IF Subcount1Value(r) = Type.Client THEN phone(Subcount1Value(r))
productBarcode(r) = IF Subcount1Value(r) = Type.Product THEN barcode(Subcount1Value(r)) // аналогично верхнему
А дальше если вы их используете вместе платформа сама скомпилирует их в что-то типа как у вас, скажем если будет так на lsFusion:
EXPORT FROM clientPhone(Registry r), productBarcode(Registry r);
Исправление NitroJunkie, :
SELECT
...
FROM Registry
LEFT JOIN Product ON Registry.Subcount1Type = &ProductType
AND Registry.Subcount1Value = Product.Id
LEFT JOIN Clients ON Registry.Subcount1Type = &ClientsType
AND Registry.Subcount1Value = Clients.Id
...
Ну это как раз странный пример. Потому в PostgreSQL (и lsFusion) проблема не в классах, а в типах, то есть когда у вас одно поле скажем строка, дата или объект.
В данном случае, можно просто поле Subcount1Value абстрактного класса Object сделать. И в lsFusion тогда будут просто разные свойства.
// тут возможно для resolving'а надо будет или cast (то есть Subcount1Value(r) AS Client) или явный класс указать (то есть phone[Client](Subcount1Value(r))), если у вас много свойств phone в данном namespace
clientPhone(r) = IF Subcount1Value(r) = Type.Client THEN phone(Subcount1Value(r))
productBarcode(r) = IF Subcount1Value(r) = Type.Product THEN barcode(Subcount1Value(r)) // аналогично верхнему
А дальше если вы их используете вместе платформа сама скомпилирует их в что-то типа как у вас, скажем если будет так на lsFusion:
EXPORT FROM clientPhone(Registry r), productBarcode(Registry r);
Исходная версия NitroJunkie, :
SELECT
...
FROM Registry
LEFT JOIN Product ON Registry.Subcount1Type = &ProductType
AND Registry.Subcount1Value = Product.Id
LEFT JOIN Clients ON Registry.Subcount1Type = &ClientsType
AND Registry.Subcount1Value = Clients.Id
...
Ну это как раз странный пример. Потому в PostgreSQL (и lsFusion) проблема не в классах, а в типах, то есть когда у вас одно поле скажем строка, дата или объект.
В данном случае, можно просто поле Subcount1Value абстрактного класса Object сделать. И в lsFusion тогда будут просто разные свойства.
clientPhone(r) = IF Subcount1Value(r) = Type.Client THEN phone(Subcount1Value(r)) // тут возможно для resolving'а надо будет или cast (то есть Subcount1Value(r) AS Client) или явный класс указать (то есть phone[Client](Subcount1Value(r)))
productBarcode(r) = IF Subcount1Value(r) = Type.Product THEN barcode(Subcount1Value(r)) // аналогично верхнему
А дальше если вы их используете вместе платформа сама скомпилирует их в что-то типа как у вас, скажем если будет так на lsFusion:
EXPORT FROM clientPhone(Registry r), productBarcode(Registry r);