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

Résolu
nguim -  
flokocha Messages postés 1519 Statut Membre -
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

  1. nguim
     
    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
    1. flokocha Messages postés 1519 Statut Membre 281
       
      Pas de quoi, ravi d'avoir pu t'aider ! :)
      0
  2. nguim
     
    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
    1. Guigeek77 Messages postés 68 Statut Membre 2
       
      Essaye :

      SELECT * FROM ta_table suivi de ta condition

      L'étoile te retournera les doublons entres tes tables
      0
  3. nguim
     
    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
  4. boughate Messages postés 5 Statut Membre
     
    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
    1. Guigeek77 Messages postés 68 Statut Membre 2
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. flokocha Messages postés 1519 Statut Membre 281
     
    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