2009-10-13 9 views
0

create table maintable comme select curr_Table.empID comme EMPID, (currTable.ToTalDays-oldTable.ToTalDays) comme DiffDays de currTable jointure externe gauche OldTable sur currTable.empID = oldTable.empIDproblème dans la création de table

C'est la requête que j'utilise pour trouver les jours travaillés par un employé.

Le problème se lève lorsqu'il y a "New Joinee". "oldTable.ToTalDays" n'aura aucune valeur car aucun enregistrement ne sera trouvé pour "New Joinee" dans oldTable. Donc, pour cet enregistrement, les résultats de DiffDays (Integer-null) sont Zéro au lieu des jours totaux actuels.

Un moyen de résoudre ce problème?

+0

Est-ce que ce travail est fait? – mjv

+0

N'importe où je suis intéressé à apprendre et à faire des devoirs tout au long de ma vie :) –

Répondre

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 
1

Pas tout à fait sûr de celui-ci, mais je ne pense pas que MySQL permet genre de choses

CREATE TABLE AS SELECT ... 

. Doublecheck the manual on that one. Ont vu de telles requêtes sur Postgres, mais ne me souviens pas de tels ceux sur mysql ...

EDIT:

a effectué le double contrôle trop et doivent admettre que CREATE TABLE ... AS SELECT fonctionne en acte. Peu importe, je vais prendre un café ...

+0

J'ai trouvé cette "CREATE TABLE new_tbl SELECT * FROM orig_tbl" dans le lien ci-dessus et encore j'ai trouvé "CREATE TABLE AS SELECT ..." fonctionne bien ! –

Questions connexes