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 MySQL Discussion :

requete sql/php qui ne respecte pas les conditions


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut requete sql/php qui ne respecte pas les conditions
    Bonjour à tous

    Voici une requête qui "fonctionne" mais qui ne respecte pas les conditions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT f.societe , f.numclt , p.prodspe , z.client_zone , t.client_type 
    FROM fiche f , _prodspe p , _clt_zone z , _clt_type t 
    WHERE f.societe = "tikehau" AND p.prodspe="credithy" AND z.client_zone="belgium" AND t.client_type="banks"
    Elle me trouve des entrées sans respecter les AND !

    par exemple une entrée où seul [ f.societe = "tikehau" ] est present

    est ce normal ?

    Merci de votre attention


    edit:
    Apparemment je devrais plutôt me diriger vers des "requetes externes" ?? Quid

    Pouvez vous m'eclairer sur le sujet, où fais-je erreur ?

    Merci de votre attention

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 38
    Par défaut
    Salut,

    oriente toi vers les jointures.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    bonjour et merci de votre aide

    j'ai fait ça mais le resultat est le même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sql = $bdd->query('SELECT DISTINCT f.societe , f.numclt , f.role , f.prod , f.ville , p.prodspe , z.client_zone , t.client_type 
    	FROM fiche f 
    	LEFT OUTER JOIN _prodspe p  ON p.prodspe="creditdistressed"
    	LEFT OUTER JOIN _clt_zone z ON  z.client_zone="italy" 
    	LEFT OUTER JOIN _clt_type t ON  t.client_type="banks"
    	WHERE f.societe = "tikehau" AND f.role = "head" AND f.prod = "fixed income" AND f.ville = "paris" ' );
    en fait seule le test de la table FICHE l’intéresse ( rapport a WHERE, surement) !

  4. #4
    Membre chevronné
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Par défaut
    Citation Envoyé par bilcosby Voir le message
    en fait seule le test de la table FICHE l’intéresse ( rapport a WHERE, surement) !
    euh...ouai, vu que tous les tests dans le where concerne la table fiche (f.xxxxx)...
    au passage, je suis pas sur que ta question soit sur le bon forum... il me semble qu'elle serait plus adaptée sur http://www.developpez.net/forums/f98...ysql/requetes/

    et:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    LEFT OUTER JOIN _prodspe p  ON p.prodspe="creditdistressed"
    LEFT OUTER JOIN _clt_zone z ON  z.client_zone="italy" 
    LEFT OUTER JOIN _clt_type t ON  t.client_type="banks"
    non... le ON du join doit te permettre de joindre les tables. du coup l'égalité doit être
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LEFT JOIN _prodspe p  ON p.clé_étrangère=f.id_fiche
    un truc comme ça... si l'id de la fiche est externalisé dans _prodspe (ne connaissant pas ton MCD, je mets n'importe quoi mais tu vois le principe ?)

    plus d'éléments dans ce tuto.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    je vois ce que vous voulez dire mais pas de correspondance utile (pour cette requete en tout cas)

    C'est le principe de la recherche avancée,
    4 champs qui ce réfère à la table1 + 1 champs pour table 2 + 1 champs pour table 3 + 1 champs pour la table 4

    donc dans l'idée du debut j'ai collé des AND partout....

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    vois plutôt du coté de UNION.

    Citation Envoyé par bilcosby Voir le message
    4 champs qui ce réfère à la table1 + 1 champs pour table 2 + 1 champs pour table 3 + 1 champs pour la table 4
    Par contre, là, si ni les noms ou types des champs ni leur nombre ne correspond, il faut peut-être envisager plusieurs requêtes indépendantes...

  7. #7
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 711
    Par défaut
    Citation Envoyé par bilcosby Voir le message
    Bonjour à tous

    Voici une requête qui "fonctionne" mais qui ne respecte pas les conditions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT f.societe , f.numclt , p.prodspe , z.client_zone , t.client_type 
    FROM fiche f , _prodspe p , _clt_zone z , _clt_type t 
    WHERE f.societe = "tikehau" AND p.prodspe="credithy" AND z.client_zone="belgium" AND t.client_type="banks"
    Elle me trouve des entrées sans respecter les AND !

    par exemple une entrée où seul [ f.societe = "tikehau" ] est present

    est ce normal ?
    OUi c'est parfaitement normal car tu n'as pas précisé de conditions concernant les relations entre les tables,

    aussi le résultat de ta requête correspond au produit cartésien de toutes les fiches dont la société vaut "tikehau" plus
    les _prodspe dont prodspe vaut "credithy", etc.

    Tu dois préciser une condition de relations entre tes tables, c'est à dire une jointure :
    Comme tu n'as pas précisé ton modèle, je te fourni ici un pseudo exemple :

    A l'ancienne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DISTINCT f.societe, f.numclt, p.prodspe, z.client_zone, t.client_type 
    FROM fiche f, _prodspe p , _clt_zone z , _clt_type t 
    WHERE 
         f.zone_id = z.id AND f.client_type_id = t.id AND  f.prodspe_id = p.Id
         AND f.societe = "tikehau" AND p.prodspe="credithy" AND z.client_zone="belgium" AND t.client_type="banks"
    la Forme moderne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT DISTINCT f.societe, f.numclt, p.prodspe, z.client_zone, t.client_type 
    FROM fiche f
    LEFT JOIN _prodspe p ON f.prodspe_id = p.Id
    LEFT JOIN _clt_zone z ON f.zone_id = z.id
    LEFT JOIN _clt_type t ON f.client_type_id = t.id
    WHERE 
         f.societe = "tikehau" AND p.prodspe="credithy" AND z.client_zone="belgium" AND t.client_type="banks"

    PS: Pourquoi avoir préfixé tes noms de tables d'un __ ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    Merci ddoumeche
    la requête n°2 fonctionne sans message d'erreur, je fait des test et je reviens

    @+

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    Merci ddoumeche
    Les premiers tests sont concluants.

    merci beaucoup

    Si quelqu'un est intéressé par le code entier => email


    merci à tous

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

Discussions similaires

  1. requete SQL incomplète qui ne renvoie pas le résultat attendu
    Par ballantine's dans le forum Langage SQL
    Réponses: 14
    Dernier message: 07/10/2010, 08h23
  2. resultat de la fonction ajdate qui ne respecte pas les critères
    Par alassanediakite dans le forum Requêtes et SQL.
    Réponses: 16
    Dernier message: 02/09/2007, 01h07
  3. Réponses: 1
    Dernier message: 17/07/2007, 16h45
  4. [SQL] Ma requête renvoie tous les tuples et ne respecte pas la condition AND
    Par JackBeauregard dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/02/2007, 14h33
  5. [Requete] qui n'affiche pas les doublons mais sur un seul champs
    Par joseph.breham dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/12/2006, 15h57

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