2010-03-22 9 views
0

J'essaie de développer du code qui tire uniquement les dernières informations. Ce qui est quand un utilisateur entre dans un formulaire il y a une sous-table et chaque fois qu'il change quelque chose, il crée une nouvelle ligne dans la colonne appelée type12_OriginalNoteID qui place son propre numéro unique. Un autre champ appelé type12_OriginalNoteID conserve le même numéro - garde la trace de ce qu'était le nombre original avant que des changements aient été faits. J'ai du code qui tire les dernières informations mais il ne tire rien si l'utilisateur n'a pas fait de changements dans le formulaire - et c'est parce que le type12_OriginalNoteID est nul.T Clause SQL WHERE

Le code est le suivant: -

WHERE ea.type12_NoteID IN 
    (SELECT TOP 1 ea.type12_NoteID 
    FROM UserAssessv1aidsadaptations ea1 
    WHERE ea.type12_NoteID = ea1.type12_OriginalNoteID 
    ORDER BY ea.type12_UpdatedDate DESC) 

Un exemple des données est la suivante: -

type12_note ID   12 
type12_OriginalNoteID NULL 
type12_UpdatedDate  11/03/2010 

Quelle serait la solution pour afficher les informations si personne n'a fait aucune changements à la sous-table? - ajouter une instruction if à exécuter si type12_OriginalNoteID est null ??

Répondre

1

Ce dont vous avez besoin, c'est de joindre les deux tables en utilisant un LEFT JOIN. Ainsi, les données d'enregistrement de la table principale seront toujours là, mais les champs provenant de votre deuxième table (= sous-table) seraient null. Votre déclaration devrait ressembler à quelque chose comme:

SELECT TOP 1 t1.type12_NoteID 
FROM t1 LEFT JOIN t2 
ON t1.type12_NoteID = t2.type12_OriginalNoteID 
ORDER BY t1.type12_UpdatedDate DESC