0

会社の給与に関するレポートを作成しようとしています。次のようなクエリを使用して、会社のすべての従業員を表示したいと考えています。

select tab1.name, tab1.job,tab1.salary, tab2.discount-days,
       (tab1.salary-((tab1.salary/30)*tab2.discount-days) as 'total' 
from   tab1, 
       tab2 
where  tab2 .date_discount between date_begin and date_end;

ここでは、この期間中に割引を受けた従業員のみが表示されますが、会社のすべての従業員を表示したいと思います。誰かが割引を受けた場合は、これも合計で表示します。

割引がある従業員だけでなく、すべての従業員を表示するクエリを実行するには、ヘルプが必要です

4

1 に答える 1

1

LEFT JOIN を使用する必要があります。

select tab1.name, tab1.job,tab1.salary, tab2.discount-days,
       (tab1.salary-((tab1.salary/30)*tab2.discount-days) as 'total' 
from   tab1, 
       tab2 left join tab2  as tab3 on tab2.primary_key = tab3.id.primary_key 
and tab3 .date_discount between date_begin and date_end;

左結合を使用すると、左側のテーブルに存在するすべてのレコードが取得され、右側のテーブルから一致したレコードが取得されます。

私はそれがあなたのために働くかもしれないと思います.

于 2013-09-26T06:32:22.413 に答える