0

テーブル mainTable を作成する curr_Table.empID を empID として選択し、(currTable.ToTalDays-oldTable.ToTalDays) を diffDays として currTable 左外部結合 oldTable on currTable.empID = oldTable.empID として選択する

これは、従業員が働いた日を見つけるために使用するクエリです。

「新規参加者」がいる場合に問題が発生します。「oldTable.ToTalDays」には値がありません。oldTable には「New Joinee」のレコードが見つからないためです。したがって、このレコードの DiffDays (Integer-null) の結果は、現在の合計日数ではなくゼロになります。

この問題を解決する方法はありますか?

4

2 に答える 2

1

これについては完全にはわかりませんが、mysql では許可されていないと思います

CREATE TABLE AS SELECT ...

物事の並べ替え。そのマニュアルを再確認してください。postgresでそのようなクエリを見たことがありますが、mysqlでそのようなクエリを覚えていません...

編集:

ダブルチェックも実行し、CREATE TABLE AS SELECT ...が実際に機能することを認めなければなりません。気にしないで、コーヒーを飲みに行こう...

于 2009-10-13T06:59:27.007 に答える
0
create table mainTable as
select curr_Table.empID as empID,
       (currTable.ToTalDays - ifnull(oldTable.ToTalDays, 0)) as DiffDays 
  from currTable
         left outer join
       oldTable  on currTable.empID = oldTable.empID
于 2009-10-13T07:23:35.150 に答える