Vérifier qu'un élément n'existe pas dans la BD

Résolu/Fermé
nguim - 14 mars 2014 à 12:56
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 - 14 mars 2014 à 14:06
Bonjour à tous !

Je suis nouveau dans les BD.

J'ai deux tables dans ma base de données MySQL, nommées respectivement coordab et imsitr.

coordab a une colonne nommée IMSI et imsitr a une colonne nommée num.

Problème:

J'ai besoin d'afficher tous les nombres de la colonnes num de la table imsitr ayant vérifié qu'ils n'existent pas dans la colonne IMSI de la table coordab.

S'il vous plait quelle est la requête qui fait cela ?

Voici la requête que j'ai écrit:


$sql = 'select t1.IMSI, t1.MDN, t2.num
from coordab t1
inner join (
    select distinct num as num from imsitr
) t2 ON t2.num <> t1.IMSI';


Mais elle tourne indéfiniment et ne m'affiche rien pourtant toutes les tables sont rempli correctement.

NB: Quand j'exécute le contraire (t2.num = t1.IMSI), ma requête fonctionne très bien.

S'il vous plait aidez moi par votre méthode !

Merci d'avance.

5 réponses

Merci beaucoup pour la solution que vous m'avez donné !
Mon problème qui a duré des heures est enfin résolu.
Voici la réponse finale:



$sql = 'SELECT num 
FROM imsitr 
LEFT JOIN coordab ON imsitr.num = coordab.IMSI 
WHERE coordab.IMSI IS NULL';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());



Merci encore et Salut à tous !
3
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
14 mars 2014 à 14:06
Pas de quoi, ravi d'avoir pu t'aider ! :)
0
Merci pour votre AIDE.

Je voulais juste afficher le nombre de la colonne num de imsitr s'il n'existe pas dans IMSI de coordab.

Exemple:

IMSI(de la table coordab)

2346
2345
2340
2349
2346

num (de la table imstr)

2345
2317

Resultats:

num inexistant: 2317

Mais elle m'affiche plutôt:

Resultats :

num inexistant: 2317,2317,2317,2317,2317 ( autant de fois qu'il y'a de ligne dans IMSI de coordab)
0
Guigeek77 Messages postés 54 Date d'inscription vendredi 14 mars 2014 Statut Membre Dernière intervention 10 juin 2014 2
14 mars 2014 à 13:47
Essaye :

SELECT * FROM ta_table suivi de ta condition

L'étoile te retournera les doublons entres tes tables
0
Comme ceci ?
$sql = 'SELECT * FROM t1.IMSI, t1.MDN, t2.num
from coordab t1
inner join (
    select distinct num as num from imsitr
) t2 ON t2.num <> t1.IMSI';
0
boughate Messages postés 3 Date d'inscription jeudi 13 mars 2014 Statut Membre Dernière intervention 14 mars 2014
14 mars 2014 à 13:27
salut,

tu as déjà utilisé la fonction mysql_num_rows (nom_de_la_requete) ?

a mon avis, celle ci peut t'être utile

ciao !
-1
Guigeek77 Messages postés 54 Date d'inscription vendredi 14 mars 2014 Statut Membre Dernière intervention 10 juin 2014 2
14 mars 2014 à 13:33
Il ne veut pas de doublon, c'est son souci si j'ai bien compris.

Cette commande permet juste de retourner le nombre de ligne d'un résultat de requête :p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
14 mars 2014 à 13:52
Si j'ai bien compris, c'est tout simplement :

SELECT num
FROM imstr
LEFT JOIN coordab ON imstr.num = coordab.IMSI
WHERE coordab.IMSI IS NULL;
-1