2010-12-09 8 views
1

J'ai trois tables dans ce mode:Recherche sur 3 tables

Time1 avec la colonne "Données" au format gg/mm/aaaa

Manuel avec des colonnes "Valman" et « dataora "même format.

Automatique avec colonnes "valAuto" et "dataora" au même format.

Je dois trouver des valeurs « VALAUTO » de la table automatique où Data.Time1 est = dataora.Automatic et si la valeur est nulle, je profite de cette valeur de valMan.Manual dans le même Data.Time1 = dataora.Manual

En accès sql ou vb pour l'accès.

Est très important pour moi ... Merci beaucoup !!!

+0

Désolé. J'ai un autre petit problème, dans les colonnes de Automatic.Dataora, j'ai 4 valeurs: es. 01/01/2010, 01/01/2010 04:00:00, 01/01/2010 08:00:00, 01/01/2010 12:00:00. J'ai besoin de la dernière: 01/01/2010 12:00:00. Mais dans Time1.Data je n'ai que 01/01/2010 sans heures. Comment puis-je faire? – malvin

Répondre

1

Pour MS Access, vous pouvez essayer Iif et IsNull

SELECT Time1.Data, 
     IIf(IsNull([valAuto]),[valMan],[valAuto]) AS Expr1 
FROM (Time1 LEFT JOIN Automatic ON Time1.Data = Automatic.dataora) LEFT JOIN 
     Manual ON Time1.Data = Manual.dataora; 

ou

Nz

SELECT Time1.Data, 
     Nz([valAuto],[valMan]) AS Expr1 
FROM (Time1 LEFT JOIN Automatic ON Time1.Data = Automatic.dataora) LEFT JOIN 
     Manual ON Time1.Data = Manual.dataora; 
+0

Merci, la première solution est bonne et fonctionne très bien! Merci!!! – malvin

+0

J'ai un autre petit problème, dans les colonnes de Automatic.Dataora, j'ai 4 valeurs: es. 01/01/2010, 01/01/2010 04:00:00, 01/01/2010 08:00:00, 01/01/2010 12:00:00. J'ai besoin de la dernière: 01/01/2010 12:00:00. Mais dans Time1.Data je n'ai que 01/01/2010 sans heures. Comment puis-je faire? merci – malvin

+1

J'ai fait avec: DateAdd ("h", 12, Time1.Data) – malvin

0

Je ne sais pas accès, mais cela devrait le faire dans MS SQL Server

SELECT 
ISNULL(a.valAuto, m.valMan) AS whatIWant 
FROM 
Automatic a 
INNER JOIN Time1 t ON a.dataora = t.Data 
INNER JOIN Manual m ON t.Data = m.dataora 

La commande ISNULL remplace VALAUTO avec Valman si VALAUTO est nulle.

+0

Merci pour votre réponse .. – malvin

+0

IsNull() signifie quelque chose de complètement différent dans Access/Jet/ACE, donc cela ne fonctionnera pas. –

+0

D'accord, je ne le savais pas. Pensé que SQL Server et Access pourraient ne pas être si différents et que l'on peut au moins en déduire la solution. – fancyPants