Показать сообщение отдельно
Старый 24.06.2011, 20:43   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Как лучше оформлять несколько условий в select where? Повторная попытка
Начало здесь Как лучше оформлять несколько условий в select where?

Прошу переголосовать с измененными формулировками.

В коде часто встречаются select c несколькими условиями (условными выражениями).
Как лучше оформлять несколько условий в select where?

Вариант 1. (операторы после условия)
X++:
    select firstonly paymentTrans
        where paymentTrans.AccountNum            == factureJour.CustVendInvoiceAccount &&
              paymentTrans.Voucher               == factureJour.Voucher                &&
              paymentTrans.CurrencyCode          == factureJour.CurrencyCode           &&
              paymentTrans.PrepaymentFactureId_W == factureJour.FactureId              &&
              paymentTrans.Prepayment            == NoYes::Yes;
Вариант 2. (операторы до условия)
X++:
    select firstonly paymentTrans
        where paymentTrans.AccountNum            == factureJour.CustVendInvoiceAccount
           && paymentTrans.Voucher               == factureJour.Voucher
           && paymentTrans.CurrencyCode          == factureJour.CurrencyCode
           && paymentTrans.PrepaymentFactureId_W == factureJour.FactureId
           && paymentTrans.Prepayment            == NoYes::Yes;
Как вы предпочитаете ставить операторы между условиями?
Перед условием или после условия?
Почему?

А в более сложны случаях? Например,
X++:
    while select bankClientPayment_RU
    where bankClientPayment_RU.RContractAccount
    notexists join RContractTable
    where (
              ( RContractTable.RContractPartnerType == RContractPartnerType::Cust
             && BankClientPayment_RU.PartnerType == ModuleCustVend::Cust )
           || ( RContractTable.RContractPartnerType == RContractPartnerType::Vend
             && BankClientPayment_RU.PartnerType == ModuleCustVend::Vend )
          )
       && RContractTable.RContractAccount == bankClientPayment_RU.RContractAccount
       && RContractTable.RContractCode == bankClientPayment_RU.RContractCode
Добавлено: понятно, что при правке существующих select'ов скорее всего будете оставлять так как есть. Вопрос как вы предпочитаете, когда сами создаете select'ы
__________________
полезное на axForum, github, vk, coub.