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 :

Problème jointure MySQL


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut Problème jointure MySQL
    Bonjour !!

    J'ai un petit soucis dans ma jointure SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT DISTINCT e. * , c.status, c.msgid, 
      DATE_FORMAT(e.date, '%d/%m/%Y % H:% i:%s') AS date_send 
    FROM envoi_push e 
      LEFT OUTER JOIN confirm_push c ON c.msgid = e.status 
    WHERE type = 'AS205' 
    ORDER by date DESC 
    LIMIT 0,40
    Alors le soucis, c'est que je lui demande de m'inclure la colonne Status dans mon résultat. Tout simplement.

    Le problème, c'est que j'ai plusieurs Status qui répondent. Il faut que je sélectionne celui avec le plus grand id. (le dernier quoi)

    J'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE .... AND max(c.id)
    Mais ca ne fonctionne pas : #1111 - Invalid use of group function

    Quelqu'un pourrait me guider ?
    Je suis un peu perdu, les jointure ne sont pas mon fort !!

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT content, confirm_push.status
    FROM envoi_push, confirm_push
    WHERE envoi_push.status = confirm_push.msgid
    AND confirm_push.msgid = envoi_push.status
    LIMIT 0 , 10;
    j'ai tenté l'approche autrement..
    ca fonctionne mais,

    - Il me renvoie une ligne de envoi_push, par confirm_push trouvé.. (donc doublons) et DISTINCT n'agis pas. il faut juste prendre le DERNIER.

    - Et quand ce 1er problème sera reglé, il faudra juste renvoyer le plus grand id trouvé dans confirm_push ...

  3. #3
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 637
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 637
    Points : 6 805
    Points
    6 805
    Par défaut
    Si tu regardes bien ta requête n'est consitué en rien de SQL normé...regarde les jointure normalisée (INNER JOIN...ON, LEFT JOIN...ON, etc.).

    De plus, si tu regardes bien, tu as écrit quelque chose d'insencé ta condition (qui en fait ne le sera plus en SQL normé) est répété dans ton AND.

    Et distinct fonctionne..c'est que tu dois avec un problème dans ta requête.

    Enfin, si tu n'obtiens pas le résultat voulu dans ton select, donne un alias a tes tables du type envoi_push AS ep puis précise la table utilisé pour chaque champ que tu nommes dans ta requête.

    2 ème enfin pour ton dernier ID, un MAX sur celui-ci pourrait fonctionner.

    Bon courage


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT content, confirm_push.STATUS
    FROM envoi_push, confirm_push
    WHERE envoi_push.STATUS = confirm_push.msgid
    AND confirm_push.msgid = envoi_push.STATUS
    LIMIT 0 , 10;
    je note aussi que tu as fait un truc bizarre confirm_push.STATUS, envoi_push.STATUS c'est surement une clé dans une de tes tables...vu ta requête....mais si je suppose qu'il est bien dans envoi_push...pourquoi cherches-tu a afficher confirm_push.STATUS

    Bref il y a écrit deux fois dans les même deux lignes envoi_push.STATUS donc a priori il y a un soucis si tu cherches ce champ dans confirm_push (a moisn que la cle est le meme nom...mais ta requête reste tordue)
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Effectivement, un "AND ..." n'était pas nécessaire.

    Le résultat de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT DISTINCT content, confirm_push.STATUS
    FROM envoi_push, confirm_push
    WHERE envoi_push.STATUS = confirm_push.msgid
    AND confirm_push.msgid = envoi_push.STATUS
    LIMIT 0 , 10;
    donne ceci:
    (désolé pour les caractères UTF-8-ISO, c'est PHPmyAdmin qui supporte pas ça)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    content 	STATUS
    bb pk tu répond plus? rép stp il mreste ke 1E99 ... 	Error
    1 2 test sa marche ? (lesms.be) 	Error
    TOUS AU MONA SE SOIR.mega nuit delire avec entree ... 	operator
    TOUS AU MONA SE SOIR.mega nuit delire avec entree ... 	handset
    TOUS AU MONA SE SOIR.mega nuit delire avec entree ... 	not delivered
    pa facil 2 trouV D sites bb! jregard Moesha pa tro... 	handset
    je te disais juste que je t'aime et que je tenais ... 	operator
    je te disais juste que je t'aime et que je tenais ... 	handset
    le résultat devrait être:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    content 	STATUS
    bb pk tu répond plus? rép stp il mreste ke 1E99 ... 	Error
    1 2 test sa marche ? (lesms.be) 	Error
    TOUS AU MONA SE SOIR.mega nuit delire avec entree ... 	handset
    pa facil 2 trouV D sites bb! jregard Moesha pa tro... 	handset
    je te disais juste que je t'aime et que je tenais ... 	handset
    - pas de doublons et si sélection à faire, prendre l'ID le plus haut (qui prendra donc le confirm_push.STATUS correct!)

  5. #5
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 637
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 637
    Points : 6 805
    Points
    6 805
    Par défaut
    Tente avec un jeu d'essais plus propres ca sera surement plus clair.


    ET vu que je ne comprends toujours rien à ta requete, pour deviner la structure des tables, la impossible, donc si tu pouvais poster les sructures des 2 tables que tu veux utiliser ca sera plus simple.
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

Discussions similaires

  1. Problème jointure mysql
    Par snorky94 dans le forum Requêtes
    Réponses: 3
    Dernier message: 17/10/2012, 16h41
  2. Problème Jointure MySQL
    Par Soward dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/11/2009, 15h36
  3. Réponses: 4
    Dernier message: 29/06/2007, 16h08
  4. Problème jointure gauche qui ne passe plus sous MySQL 5
    Par OuiOui007 dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/09/2006, 10h33

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