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 16/11/2011, 21h30   #1
Nouveau Membre du Club
 
Inscription : décembre 2007
Messages : 84
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 84
Points : 37
Points : 37
Par défaut Interaction entre deux tables

Bonsoir,

Je possède deux tables, une qui s'appele NODE et l'autre NODE_EXC :

Colonnes dans NODE : |__IP__|__NODESTATUS__| ==» IP ici est une cle unique

Colonnes dans NODE_EXC : |__IP__|__EXCEPTION__|

Voila ce que je fais dessus actuellement :

Code :
1
2
3
 
-- Si on ne retrouve pas l'IP dans la table NODE_EXC, on édite Nodestatus à 0
UPDATE NODE SET NODESTATUS=0 WHERE IP NOT IN (SELECT DISTINCT ip FROM NODE_EXC);
Cependant j'aimerais rajouter deux valeurs à Nodestatus :

- Si une des exceptions associées à cette IP a une valeur differente de 4 alors Nodestatus vaut 1
- Si une seule exception est associée à l'IP et que sa valeur est 4 alors Nodestatus passe à 2

Si je n'ai pas été assez clair dites le moi.

Merci beaucoup !!!

EDIT: Je viens de trouver pour Nodestatus = 1 :
Code :
UPDATE TLANNODES SET NODESTATUS=1 WHERE IPADDRESS IN (SELECT DISTINCT ipaddress FROM TLANNODES_EXC WHERE EXCEPTION_ID NOT LIKE '4');
RE-EDIT: Et voila pour le second :
Code :
1
2
UPDATE TLANNODES SET NODESTATUS=2 WHERE IPADDRESS IN (SELECT DISTINCT ipaddress FROM TLANNODES_EXC)
                                  AND IPADDRESS NOT IN (SELECT DISTINCT ipaddress FROM TLANNODES_EXC WHERE EXCEPTION_ID NOT LIKE '4');
Merci quand même
Geoffrey49000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 09h07   #2
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Personnellement, je serais tenté de prendre le problème autrement, afin de tout faire en une seule requête.

Tu as besoin de mettre une valeur différente à NODESTATUS selon :
- Le nombre d'exceptions
- La présence d'exception à 4

Code :
1
2
3
4
5
6
7
8
9
10
 
UPDATE node
SET nodestatus = 
case 
   when (SELECT count(*) FROM node_exc WHERE node_exc.ip = node.ip) = 0
   then 0 
   when (SELECT count(*) FROM node_exc WHERE node_exc.ip = node.ip) = 1 AND (SELECT count(*) FROM node_exc WHERE node_exc.ip = node.ip AND exception != 4) = 0
   then 2 
   else 1
end;
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 16h54   #3
Nouveau Membre du Club
 
Inscription : décembre 2007
Messages : 84
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 84
Points : 37
Points : 37
Excellent ! Merci beaucoup c'est déja beaucoup plus propre de même
Geoffrey49000 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 08h08.


 
 
 
 
Partenaires

Hébergement Web