Requête SQL/PHP qui marche pas ?

Requête SQL/PHP qui marche pas ? - PHP - Programmation

Marsh Posté le 26-06-2009 à 16:22:06    

Bonjour à tous, voila je lance le script ci-dessous pour pouvoir faire un matching entre deux tables.
 

Code :
  1. $query_a = "SELECT * FROM table1";
  2. $result_a = mysql_query($query_a);
  3. $i=0;
  4. while ($item_a = mysql_fetch_array($result_a))
  5. {
  6. $nom1 = $item_a['nom'];
  7. $query_b = "SELECT * FROM table2 WHERE nom2 = '$nom1'";
  8. $result_b = mysql_query($query_b);
  9. $num_b = mysql_num_rows($result_b);
  10. if ($num_b = 0)
  11. {
  12.  echo $nom1."<br>";
  13.  $i++;
  14. }
  15. }
  16. echo "<p><b>TOTAL : $i</b></p>";


 
Le resultat attendu serait de n'afficher les "nom" que des valeurs ne figurant pas dans la table2 ... Mais seulement voila, le num_rows me renvoi systematiquement "0", alors que certains champs sont pourtant strictement identique entre les deux tables...
 
Si qq'un à une idée du problème merci par avance
Cordialement

Reply

Marsh Posté le 26-06-2009 à 16:22:06   

Reply

Marsh Posté le 26-06-2009 à 16:29:50    

regarde du coté des jointures, ca serait plus sexy et bcp plus efficace de faire ca en full sql...
 
Edit: ou plutot des sous requetes: qqchose du style:  
 

Code :
  1. SELECT * FROM table1 WHERE nom NOT IN (SELECT nom FROM table2);


 
doit pouvoir marcher (peut etre en adaptant en fonction de ton sgbd).


Message édité par pataluc le 26-06-2009 à 16:34:11
Reply

Marsh Posté le 26-06-2009 à 16:47:29    

A adapter a ton cas :
SELECT t1.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.champ1=t2.champ2 WHERE t2.champ2 IS NULL


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 26-06-2009 à 17:07:35    

Table 1
nom
AAA
BBB
CCC
DDD
EEE
 
Table 2
nom
AAA
FFF
GGG
HHH
 
Toutes vos requetes ci-dessus me renvoi la totalité de la Table 1 alors que logiquement la valeur AAA (étant présente dans Table 2) ne devrait pas être retournée... je pige pas ... Ce bug peut il etre lié a mon sgbd ? (pourtant en local je suis sous EasyPhp de base sans modif spé...)
 
Merci de votre aide

Reply

Marsh Posté le 26-06-2009 à 22:05:50    

Quel est le type de base de données? MySql?
 
Autrement, les valeurs entre les tables sont-elles exactement les mêmes?
 
Pas "AAA" et "aaa", "AAA" et "AAA ", ce genre de différences?

Reply

Marsh Posté le 28-06-2009 à 13:16:16    

Base MySQL oui, et pour les données elles sont exactement les mêmes (tout en majuscule).
J'ai vérifié aussi le contenu des champs ... c'est bien "AAAAA" et pas "AAAAA " ou " AAAAA   " ou tout autres espace indésirable :p
En fait j'ai un fichier texte contenant les infos (une par ligne) et chaque enregistrement est ajouté dans la base pour comparaison ... Donc je vais voir a comparer directement le fichier txt avec la base ...  
 
Si qq'un à une idée ... sinon demain j'attaque ca ;)

Reply

Sujets relatifs:

Leave a Replay

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