IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Left join sur requete (Projet Gestion de parc informatique)


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club Avatar de fomy
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 96
    Points : 56
    Points
    56
    Par défaut Left join sur requete (Projet Gestion de parc informatique)
    Bonsoir à tous,
    j'ai deux tables, une représentant l'ensemble du matériel et l'autre celle relevé lors d'un inventaire dans un de nos stock.
    Le but est suite à un copier coller de l'inventaire fait manuellement, vérifier si cela correspond a ce que la table matériel indique, autrement dit que tout le matériel est bien en stock qu'il ne manque rien ou qu'il n'y a rien en plus
    j'essaye donc de faire trois requete :
    - Une premiere requete pour vérifier si il y a des doublons dans l'inventaire éffectué (cela arrive).
    - Une seconde pour vérifier ce qui devrait etre en stock mais est manquant dans l'inventaire.
    - Une troisieme pour vérifier ce qui est dans l'inventaire mais qui ne devrait pas y etre(car est censé etre installé, ou en stock mais sur un autre site.

    pour ce faire, dans la table base_mat, il y a une colonne site, et une colonne etat, je connais donc le matériel qui est installé, en stock et dans quel stock(site).
    l'inventaire est fait sur un site en particulier, il s'agit donc d'un critere a prendre en compte !
    -Pour les doublons j'ai une requete faite simplement grace à l'assistant access et qui fonctionne tres bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT First(base_inventaire.Num_immo) AS Num_immoChamps, Count(base_inventaire.Num_immo) AS NombreDeDbls
    FROM base_inventaire
    GROUP BY base_inventaire.Num_immo
    HAVING (((Count(base_inventaire.Num_immo))>1));
    - Pour ce qui devrait etre en stock mais n'est pas dans l'inventaire, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT base_mat.Num_immo, base_mat.site, base_mat.date_inv
    FROM base_mat LEFT JOIN base_inventaire ON base_mat.Num_immo = base_inventaire.Num_immo
    WHERE (((base_mat.site)=Getgsite()) AND ((base_mat.etat)="en stock") AND ((base_inventaire.Num_immo) Is Null));
    Là ou j'ai un probleme c'est sur la derniere requete,
    si je fait une simple requete de non correspondance, je ne ressort finalement que le matériel qui n'est pas référencé dans la table base_mat(ce qui ne devrait d'ailleurs pas arriver)il ne ressort donc pas le matériel éxistant qui est installé et/ou sur un site différent.
    j'ai donc essayé d'ajouter les criteres dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT base_inventaire.Num_immo
    FROM base_inventaire LEFT JOIN base_mat ON base_inventaire.Num_immo = base_mat.Num_immo
    WHERE (((base_mat.Num_immo) Is Null));
    mais sans succes par contre si je construit une premiere requete :
    base_mat Requête1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT base_mat.Num_immo
    FROM base_mat
    WHERE (((base_mat.site)=getgsite()) AND ((base_mat.etat)="en stock"));
    et ensuite une seconde :
    "base_inventaire" et "base_mat Requête1" sans correspondance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT base_inventaire.Num_immo
    FROM base_inventaire LEFT JOIN [base_mat Requête1] ON base_inventaire.Num_immo = [base_mat Requête1].Num_immo
    WHERE ((([base_mat Requête1].Num_immo) Is Null));
    j'obtiens alors le résultat souhaité

    je n'arrive donc pas a ce résultat en écrivant une seule requete
    d'avance merci de votre aide.

    PS : Les couleurs correspondent avec la copie d'écran

  2. #2
    Membre du Club Avatar de fomy
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 96
    Points : 56
    Points
    56
    Par défaut
    Heu j'ai honte, mais en relisant mon poste je crois que j'ai trouvé la solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT base_inventaire.Num_immo
    FROM base_inventaire LEFT JOIN base_mat ON base_inventaire.Num_immo = base_mat.Num_immo
    WHERE (((base_mat.site)<>getgsite())) OR (((base_mat.etat)<>"en stock")) OR (((base_mat.Num_immo) Is Null));
    Est ce que quelqu'un peut me dire si cela parait ok ?

  3. #3
    Membre du Club Avatar de fomy
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 96
    Points : 56
    Points
    56
    Par défaut
    Bon, a priori sans réponses cela doit etre bon

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/03/2008, 21h03
  2. Projet Gestion de parc informatique
    Par fomy dans le forum Modélisation
    Réponses: 21
    Dernier message: 06/03/2008, 09h10
  3. Réponses: 6
    Dernier message: 05/03/2008, 15h52
  4. Réponses: 1
    Dernier message: 24/02/2008, 11h08
  5. Réponses: 2
    Dernier message: 23/02/2008, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo