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 :

Pb SQL Requete selection


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Par défaut Pb SQL Requete selection
    Bonjour,

    J'ai un demi souci sur une requete SQL.
    Je me suis servi du code dans la faq Requête donnant la liste des enregistrements de la table 1 qui ne sont pas dans la table 2.

    J'ai une liste de factures et de commandes et je cherche a comparer les montant ne correspondant pas dans les 2 tables.

    Cette requete marche parfaitement lorsque je cherche les montants des commandes non présents dans les factures:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT commandes.[montant ht], commandes.numcomm, commandes.numchant
    FROM commandes
    WHERE (((commandes.[montant ht]) Not In (Select montantht from factures)) AND ((commandes.numchant)=1));
    Mais lorsque je cherche les montants des factures non présents dans les commandes : là rien !
    et je sais qu'il y en a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT factures.montantht, factures.nfacture
    FROM factures
    WHERE (((factures.montantht) Not In (Select [montant ht] from commandes)));
    Merci

  2. #2
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut
    et je sais qu'il y en a
    Assures-toi que ce soit reellement le cas, car vue la complexite de la requete a premiere vue je ne vois pas pourquoi ca ne marcherait pas.

  3. #3
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Par défaut
    Yep merci de me répondre

    Effectivement il y a des montants qui ne correspondent pas j'en suis sur, car les montants venant de mes commandes peuvent etres éclatés en plusieurs factures.
    Et comme je le disais je trouve les commandes différentes.

    Je me suis posé la question de savoir si le pb ne venait pas du format des données dans les 2 tables ... Mais étant donné que ça marche dans 1 sens ... je ne comprend vraiment pas d'ou peut venir ce pb

  4. #4
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut
    Essaie ces deux requetes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT count(*)
    FROM factures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT count(*)
    FROM factures
    WHERE (factures.montantht) In (Select [montant ht] from commandes);
    Les resultats sont-ils differents ?

  5. #5
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Par défaut
    Effectivement, il y a une différence :

    -d'un coté j'ai 2300 factures

    -et la 2eme requete me donne 1219.

  6. #6
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut
    Donc tu as bien raison la requete devrait retourner des resultats.

    Que te renvoie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT count(*)
    FROM factures
    WHERE (factures.montantht) Not In (Select [montant ht] from commandes);

  7. #7
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Par défaut
    ça me renvoie 0, cette requete n'en compte aucun !

  8. #8
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut
    Si cette requete te renvoie 1219 je pense qu'on a la reponse au probleme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Select count(*) from commandes
    Essaies aussi ca par curiosite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT count(*)
    FROM commandes
    WHERE (((commandes.[montant ht]) Not In (Select montantht from factures)) AND ((commandes.numchant)=1));

  9. #9
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Par défaut
    Et non !

    la 1ere me renvoie 1781


    la 2eme, elle, me renvoie 49

  10. #10
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Par défaut
    Ces chiffres correspondent tout a fait au nombre d'enregistrements contenu dans mes tables commandes (1781) et factures (2300)

    Et lorsque je fais ma requete de selection qui marche je trouve bien 49 enregistrements différents

  11. #11
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut
    Bon j'ai du mal a reflechir la ... essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT count(*)
    FROM commandes
    WHERE (commandes.[montant ht]) Not In (Select montantht from factures);

  12. #12
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Par défaut
    ça renvoie 555

  13. #13
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Par défaut
    ça renvoie ce chiffre qui est correct aussi car ici tu ne prend pas en comptes mon critere "numchant"

  14. #14
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut
    Donc je resume:

    Il y a 2300 factures
    1219 de ces factures sont egalement dans la table commande
    0 de ces factures ne sont pas dans la table commande.

    Je dois etre vraiment fatigue la parce que ca n'a aucun sens pour moi ... que quelqu'un de plus frais prenne le relais svp.

    Edit : ok .... en fait on parle du champ 'montant HT' donc ce que je viens de dire n'est pas vrai ...

  15. #15
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut
    Bon ... je persiste histoire de descendre encore plus bas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Essaie:
    Select count(*)
    From Factures
    Where Nz(montantht, "") <> ""

  16. #16
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Par défaut


    J'ai 1781 commandes.
    2300 factures.
    Au global

    Ces chiffres s'expliquent par le fait qu'une commande peu etre facurée en plusieurs montants donc plusieurs factures.

    Concernant numchant je filtre sur le critère du N° de chantier qui est commun à plusieurs factures ou plusieurs commandes

    Donc j'ai dans ce qui m'interresse (chantier n°1) :

    345 commandes
    386 factures

    Sur ces 345 commandes, ma requete arrive a m'en distinguer correctement 49 dont le montant n'est pas égal dans les factures

    Sur ces 386 factures la meme requete me renvoie 0 montant ne se trouvant pas dans mes commandes (or il y en a sur vu que les commandes sont fractionnées en plusieurs factures) et c'est la que se trouve mon pb.

Discussions similaires

  1. [SQL] Requete SELECT un peu confuse
    Par benoitinfrance dans le forum PHP & Base de données
    Réponses: 46
    Dernier message: 02/08/2006, 22h04
  2. utilisation de la requete select de sql
    Par pepper18 dans le forum SGBD
    Réponses: 3
    Dernier message: 31/05/2006, 15h01
  3. [SQL] requete select max
    Par kabikou dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 19/10/2005, 16h18
  4. Requete SELECT qui cause une erreur SQL
    Par ahage4x4 dans le forum ASP
    Réponses: 23
    Dernier message: 10/06/2005, 14h46
  5. SQL server 7.0 requete select
    Par sangokus dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/03/2004, 11h09

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