Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/04/2011, 19h06   #1
Invité de passage
 
Inscription : mai 2010
Messages : 25
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 25
Points : 2
Points : 2
Par défaut Besoin d'une lumière :)

Bonsoir,
J'ai besoin que vous m’éclairez car je ne sais pas comment faire...voilà j'ai une base de données avec plusieurs tables et je voudrais fusionner deux tables pour n'en faire qu'une et faire ma requête sur celle ci. Je vais m'expliquer:

table1 avec comme champs (id, date, heure, temperature, volume,...)
table1 avec comme champs (id, date, heure, duree_pompe)
je voudrai qu'une 3 table soit créée en reprenant dedans toutes les valeurs des deux tables précédentes.

J'ai réussi à faire une requête avec une jointure mais le truc c'est qu'elle m'affiche que les données dont l'heure et la date sont les mêmes donc si par exemple pour le 21/04/2011 à 13:00:00 j'ai des données pour tous les champs de la table1 mais pas de données pour la table2 elle me l'affiche pas alors que je voudrais que ma requête créée soit une nouvelle table avec toute les données et quand il n'y en à pas pour un champ elle me met NULL ou rien...

J'espère que vous m'auriez compris
Merci d'avance
crepeonutella est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 19h32   #2
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 552
Points : 552
Bonjour,
Citation:
J'espère que vous m'auriez compris
En fait non.
Si tu nous donnais un exemple avec le contenu de table1 et table2.
Et de ce que tu veux en sortie, sur quel critère, dans quelle condition
Parce que là tu nous as donné la structure de table1, et de table1
et pas leur contenu.
Veux tu obligatoirement peupler une nouvelle table, ou veux tu juste le résultat de l'opération entre table1 et table2.

a+
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 20h17   #3
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 3 878
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 39
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 3 878
Points : 7 655
Points : 7 655
En gros tu veux faire une union

Code :
1
2
3
4
5
SELECT id, date, heure, temperature, volume, NULL AS duree_pompe
FROM Table1
UNION
SELECT id, date, heure, NULL AS temperature, NULL AS volume, duree_pompe
FROM Table2
__________________
Sevyc64 --- Le partage est notre force

NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS
sevyc64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 09h04   #4
Invité de passage
 
Inscription : mai 2010
Messages : 25
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 25
Points : 2
Points : 2
Déjà merci pour vos réponses et désolé pour le retard je n'avais plus internet !!!
J'ai essayé l'union mais ça ne fonctionne pas voilà en gros ce que j'ai:

TABLE1
ID DATE HEURE TEMP_AMB TEMP_EXT VOLUME
01 21/12/2010 12:30:00 13,2 4,5 23,03
02 21/12/2010 12:45:00 13,1 4,6 23,08
03 21/12/2010 13:00:00 13,1 4,7 23,11
04 21/12/2010 13:15:00 13,1 4,7 23,15

TABLE2
ID DATE HEURE DUREE
01 21/12/2010 12:30:00 879
02 21/12/2010 12:45:00 1023
03 21/12/2010 13:15:00 1290


Je voudrai avoir cette table par une requête

TABLE
ID DATE HEURE TEMP_AMB TEMP_EXT VOLUME DUREE
01 21/12/2010 12:30:00 13,2 4,5 23,03 879
02 21/12/2010 12:45:00 13,1 4,6 23,08 1023
03 21/12/2010 13:00:00 13,1 4,7 23,11
04 21/12/2010 13:15:00 13,1 4,7 23,15 1290



J'espère que vous avez mieux compris ce que je cherche à faire
Merci
crepeonutella est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 11h25   #5
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour,

Il faut faire une jointure externe :

Code SQL :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
SELECT 
    T1.id, 
    T1.Date, 
    T1.Heure, 
    T1.TEMP_AMB, 
    T1.TEMP_EXT, 
    T1.Volume,
    T2.Duree
FROM Table1 T1
LEFT OUTER JOIN Table2 T2 
    ON T1.Date = T2.Date
    AND T1.Heure = T2.Heure

S'il est également possible d'avoir des heures dans T2 qui ne sont pas dans T1, faites

Code SQL :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
SELECT 
    COALESCE(T1.id, T2.id) AS Id, 
    COALESCE(T1.Date, , T2.Date) AS Dte
    COALESCE(T1.Heure, T2.Heure) AS Heure
    T1.TEMP_AMB, 
    T1.TEMP_EXT, 
    T1.Volume,
    T2.Duree
FROM Table1 T1
FULL OUTER JOIN Table2 T2 
    ON T1.Date = T2.Date
    AND T1.Heure = T2.Heure
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 14h18   #6
Invité de passage
 
Inscription : mai 2010
Messages : 25
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 25
Points : 2
Points : 2
Merci beaucoup beaucoup aieeeuuuuu super ça marche niquel
crepeonutella est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h51.


 
 
 
 
Partenaires

Hébergement Web