[Résolu] [MySQL] Comparaison entre 2 tables

Comparaison entre 2 tables [Résolu] [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 26-06-2006 à 18:44:06    

Bonjour,
 
Ma requete est pas facile à expliquer...  
Je souhaiterai faire une comparaison entre 2 tables et n'avoir en réponse que si elle n'existe pas dans la 2eme table....
 
Un petit exemple sera peut etre plus compréhensible :
On commence par le détail des 2 tables mysql :
 
Table ip
champs : indexip, ip
exemple : 1, 192.168.2.11
exemple : 2, 192.168.2.12
exemple : 3, 192.168.2.13
 
Table serveur  
champs : indexserveur, ip, hostname
exemple : 1, 192.168.2.11, serveur-mail
exemple : 2, 192.168.2.12, serveur-pop
exemple : 3, 192.168.2.13, serveur-http
exemple : 4, 192.168.2.14, serveur-mysql
 
Je souheterai dans ce cas, avoir comme réponse l'exemple "4, 192.168.2.14, serveur-mysql" car il n'est pas référencé dans la table ip
Quelqu'un as t'il une idée de la requete ?


Message édité par masterlolo le 26-06-2006 à 21:36:40
Reply

Marsh Posté le 26-06-2006 à 18:44:06   

Reply

Marsh Posté le 26-06-2006 à 19:06:28    

Pourrais tu essayer ceci:
 
select * from Table serveur
inner join Table ip on Table ip.ip=Table serveur.ip
where Table ip.ip is null

Reply

Marsh Posté le 26-06-2006 à 21:16:30    

la fonnction EXISTS n'existe pas en mysql?

Reply

Marsh Posté le 26-06-2006 à 21:21:36    

Reply

Marsh Posté le 26-06-2006 à 21:22:06    

thierryR a écrit :

Pourrais tu essayer ceci:
 
select * from Table serveur
inner join Table ip on Table ip.ip=Table serveur.ip
where Table ip.ip is null


Aucun résultat sur ma requete
Par contre si je supprime la condition where, voici le résultat :
 
indexserveur ip hostname indexip ip  
1 192.168.2.11 mail 1 192.168.2.11  
2 192.168.2.12 pop 2 192.168.2.12  
3 192.168.2.13 http 3 192.168.2.13  

Code :
  1. requête SQL:
  2. SELECT *
  3. FROM serveur
  4. INNER JOIN ip ON ip.ip = serveur.ip
  5. WHERE ip.ip IS NULL

Reply

Marsh Posté le 26-06-2006 à 21:33:10    

Trouvé !  

Code :
  1. SELECT * FROM serveur
  2. WHERE serveur.ip NOT IN (SELECT ip.ip FROM ip)


 
La réponse est bien :
indexserveur  ip  hostname  
4 192.168.2.14 mysql  
 
Merci beaucoup de l'aide, je connaissait pas INNER JOIN... j'aurai au moins apris quelque chose ce soir

Reply

Marsh Posté le 26-06-2006 à 21:37:36    

tu utilises quelle version de mysql ?

Reply

Marsh Posté le 26-06-2006 à 21:42:49    

MySQL 4.1.9

Reply

Marsh Posté le 26-06-2006 à 21:45:39    

Ha.... Ben là, tu m'as aussi appris quelque chose.

WHERE serveur.ip NOT IN (SELECT ip.ip FROM ip)

Reply

Marsh Posté le 26-06-2006 à 21:51:27    

J'ai trouvé ça un peu par hasard en lisant le manuel mysql : http://dev.mysql.com/doc/refman/5. [...] eries.html

Reply

Marsh Posté le 26-06-2006 à 21:51:27   

Reply

Marsh Posté le 26-06-2006 à 22:23:10    

pour le exists c'est  
 
   
      SELECT * FROM serveur
      WHERE NOT exists (SELECT * from ip where serveur.ip= ip.ip)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed