Renvoyer valeur inexistante - PHP 5.3.23 - MYSQL 5.1.66

  • Auteur de la discussion Auteur de la discussion StefouFR
  • Date de début Date de début
S
StefouFR
Guest
Bonsoir,

je bloque depuis plusieurs heures sur un problème qui me semblait simple à la base !

Je possède une table A et une table B.

Dans la table A il existe une valeur qui est dans la grande majorité des cas aussi dans la table B.

Il peut arriver dans un cas précis que la valeur soit inexistante dans la table B.

Je cherche à afficher toutes les valeurs de la table A ne se trouvant pas dans la table B et là je bloque !

J'ai testé avec not exists, except/minus, not in, mais sans résultat, mon code me renvoi 0 ligne alors qu'il en existante.

Si vous avez une idée ou un exemple je suis prenneur ;) !


Steph.
 
WRInaute passionné
Afficher les valeurs d'un champ d'une table qui ne se trouvent pas dans dans le champ d'une autre table ?
Il y a deux façons de faire, je pense que l'utilisation d'une sous-requête est la plus simple :

SELECT valeur FROM tableA WHERE valeur NOT IN (SELECT valeur FROM tableB);
 
S
StefouFR
Guest
Coucou et merci pour ta réponse !! :)

J'ai tenté cela :
Code:
$req=mysql_query('SELECT client_user FROM user WHERE client_user NOT IN (SELECT client_user FROM file)');
while($retour=mysql_fetch_assoc($req))
{
echo $retour['client_user'];
}

Il ne me renvoi pas d'info, mais en plus il affiche aucune erreur je vais le tuer !

Tu aurais une idée, j'ai du faire une grosse connerie que je ne vois pas... J'ai testé aussi avec NOT EXISTS.


Edit: Le pire c'est que si je change client_user par id, là ça me renvoi des résultats !
 
WRInaute accro
StefouFR a dit:
Edit: Le pire c'est que si je change client_user par id, là ça me renvoi des résultats !
Bah passe par les id ... c'est surement une différence de format de tes données.
SELECT id, client_user FROM user WHERE id NOT IN (SELECT id FROM file)
 
WRInaute discret
existe il une relation maitre détail entre les 2 tables ?

En te lisant, les unions me viennent à l'esprit, as-tu déjà essayer avec
INNER JOIN lorsque la valeur dans B est obligatoire
LEFT OUTER JOIN lorsque la valeur dans B n'est pas requise
 
S
StefouFR
Guest
Coucou à vous deux ! Merci pour vos messages :).

@fobec : Entre les deux tables je n'ai pas de relation maitre, et je dois avouer ne jamais avoir utiliser les INNER et OUTER, il faudra que je me renseigne quand même !

@zeb : Je vais tenter une bidouille, mais frenchement je ne comprends pas le "bug", surtout que tout est identique c'est juste que dès fois un utilisateur Machin_1 peut ne pas être dans la table file alors qu'il est dans la table user, et Machin_2 peut être dans les deux tables, du coup je voulais seulement afficher Machin_1 pour ce cas là.


J'ai du faire une grosse erreur en amont car ça me semble pas complexe dans la théorie...
 
S
StefouFR
Guest
ZEBOUUUUUNET !!

Tu avais raison !

J'avais une colonne en latin1_general_ci et une en latin1_swedish_ci, j'ai tout passé en latin1_general_ci et maintenant ça fonctionne hihi !!

Merci :D.
 
Discussions similaires
Haut