views:

27

answers:

1

Why in the first case displays debit = 'null', and the second the right amount

~

SELECT  o.kadastr,             /* Кадастровый номер */
        d.ar_inn,              /* ИНН арендатора */
        o.adres,               /* Адрес участка */
        r.name,                /* ФИО арендатора */
        o.pl_common,           /* Общая плащадь */
        d.arenda_beg,          /* Дата начала ареды */
        d.arenda_end,          /* Дата конца ареды */
        d.dogovor_kadst,       /* Общая кадастровая стоимость */
        rr.ref_str,             /* Вид разрешенного использования */
        ( SELECT SUM(rsh.debit) 
            FROM raschet rsh 
           WHERE rsh.s = 'C' 
             AND rsh.period_y = '2010' 
             AND rsh.dog_no = d.dog_no_fact) debet  /* Годовая арендная плата */
    FROM dogovor d
    INNER JOIN recviz r ON (r.inn_fact = d.ar_inn)
    LEFT JOIN object o ON (o.obj_no = d.obj_no)
    LEFT JOIN ras_refstr rr ON (rr.rasrefstrid = o.object_razr_isp)

~

SELECT SUM(rsh.debit) debit
FROM raschet rsh
WHERE r.dog_no = '1000' 
AND r.s = 'C' 
AND r.period_y = '2010'
+2  A: 

debet will be NULL because of this:

AND rsh.dog_no = d.dog_no_fact

If there's no rs.dog_no that matches the d.dog_no_fact, the subselect will return NULL.

OMG Ponies
Thank you. I was not attentive and just do not compare those fields table
kmsboy