djp1988 Posté 9 Janvier 2009 Partager Posté 9 Janvier 2009 J'ai ces tables: id | nom 1 | daniel 2 | mike 3 | dan et un autre: id_2 | ref 1 | 1 2 | 1 3 | 3 4 | 1 j'aimeri un sql pour m'afficher les noms du premier tableau de ceux qui n'apparaisent pas dans la deuxieme tableau en reference, c'est a dire: 'mike' Lien vers le commentaire Partager sur d’autres sites More sharing options...
petit-ourson Posté 9 Janvier 2009 Partager Posté 9 Janvier 2009 SELECT nom FROM table1 WHERE id NOT IN (SELECT DISTINCT ref FROM table2) ou encore SELECT t1.nom FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.ref WHERE t2.ref IS NULL Lien vers le commentaire Partager sur d’autres sites More sharing options...
djp1988 Posté 10 Janvier 2009 Auteur Partager Posté 10 Janvier 2009 (modifié) Merci, vous savez quand c'est sous mon nez ca a l'air tres simple (pas pour join) mais il faut vraiment que je me creuse la tete pour me familiarisé avec join et d'autres techniques plus avancés en sql. Vous voulez rigolez? Voici comment je traitez mon probleme avant d'avoir votre réponse: $sql = 'SELECT * FROM t1'; $result = mysql_query ($sql, $dbc); $total1=@mysql_num_rows($result); $sql = 'SELECT * FROM t1, t2 WHERE t1.id = t2.ref GROUP BY ref'; $result = mysql_query ($sql, $dbc); $total2=@mysql_num_rows($result); if($total1 == $total2){ echo 'Tous sont representees'; }else{$sql = 'SELECT * FROM t1'; $result = mysql_query ($sql, $dbc);echo '<ul>'; while($row = mysql_fetch_array ($result, MYSQL_BOTH)){ $ref = $row['id']; $sql3 = "SELECT * FROM t1, t2 WHERE t1.id = t2.ref AND ref = $ref"; $result3 = mysql_query ($sql3, $dbc); $total3=@mysql_num_rows($result3); if($total3 == 0){ // pas dans la t2 $sql4 = "SELECT * FROM t1 WHERE id = $ref"; $result4 = mysql_query ($sql4, $dbc); $row4 = mysql_fetch_array ($result4, MYSQL_BOTH); $nom = $row4['nom']; echo '<li>'.$nom.'</li>'; } } echo '</ul>';} Donc 2 sql pour comparer si tous les noms sont representees, si c'est pas le cas, on sql pour tous les noms, et dans une boucle on verifie si le sql cherhant un lien entre les 2 tables renvoie un ou plusieurs lignes en resultat, si elle renvoie rien, c-a-d que ce nom n'a pas de ref dans la t2, alors on REfais un sql avec la 'id' de celui ci dans la t1 pour recuperer leur nom pour l'afficher dans une liste..... ouf.... ou alors, on fais : SELECT nom FROM t1 WHERE id NOT IN (SELECT DISTINCT ref FROM t2) MERCI BEAUCOUP Modifié 10 Janvier 2009 par djp1988 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant