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

PHP & Base de données Discussion :

Jointure SQL [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut Jointure SQL
    Bonjour, j'ai une requete sql que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM annonce, reserv WHERE (typeoffre='location' AND piscine='1') AND annonce.idannonce = reserv.idannonce AND activ='1' GROUP by annonce.idannonce LIMIT 0, 4
    Elle doit me renvoyer 3 résultats, or elle ne m'en renvoit qu'un seul.
    Quand j'enleve le annonce.idannonce = reserv.idannonce alors cela m'affiche les 3 resultats. Comment corriger cela ?

    Autre chose dans mes deux tables (reserv, annonce), j'ai le meme champs idannonce.

    Avec cette requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM photo WHERE idannonce='".$val['idannonce']."' LIMIT 1";
    Comment differencier de quelle table provient l'information ? J'ai essayé en mettant idannonce='".$val['annonce.idannonce']." et annonce.idannonce='".$val['idannonce']."' (resultat : Unknown column 'annonce.idannonce' in 'where clause').

    Pouvez vouz m'aider ? merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La raison semble evident : tu n'as qu'une ligne ayant la meme valeur idannonce dans tes deux tables.

    Par ailleurs, une jointure s'écrit avec JOIN.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * FROM annonce 
    JOIN reserv ON annonce.idannonce = reserv.idannonce 
    WHERE typeoffre='location' AND piscine=1 AND activ=1
    GROUP by annonce.idannonce 
    LIMIT 0, 4

    Si tu veux recuperer deux champs ayant le meme nom, il faut utiliser un alias.
    Par contre dans ton cas, ca ne sert a rien puisque les deux champs idannonce ont la meme valeur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    J'ai fait cette requete et cela semble fonctionner (jointure externe)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * FROM annonce
    LEFT OUTER JOIN reserv ON annonce.idannonce = reserv.idannonce 
    WHERE typeoffre='location' AND piscine='1' AND activ='1' 
    GROUP by annonce.idannonce LIMIT 0, 4
    J'ai bien trois resultats.

    Merci Sabotage

    Par contre pas moyen de recuperer le chamsp idannonce

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM photo WHERE idannonce='".$val['idannonce']."' LIMIT 1
    Resultat 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM photo WHERE idannonce='1' LIMIT 1
    Resultat 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM photo WHERE idannonce='' LIMIT 1
    Resultat 3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM photo WHERE idannonce='' LIMIT 1
    Je ne comprends pas. Pourant j'ai bien la suite des champs qui s'aafiche correctement pour chaque idannonce

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    J'ai toujours le meme probleme.
    En enlevant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LEFT OUTER JOIN reserv ON annonce.idannonce = reserv.idannonce
    cela fonctionne. Le probleme provient il de la jointure ou du fait que les deux champs est le meme nom ?

    Je ne sais pas comment transformer cette requete afin d'avoir le resultat souhaité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM photo WHERE idannonce='".$val['idannonce']."' LIMIT 1
    Merci pour votre aide

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je n'ai pas du tout compris ce que tu fais ni ce que tu veux obtenir.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Tu peux nous montrer la table annonce (plusqu'elle ne contient pas grand chose) car j'ai un énorme doute sur le GROUP bY

    J'aimerais les trois enregistrements de la table reserve qui doivent sortir avec le idannonce

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

Discussions similaires

  1. [SQL] problème de variable tableau PHP contenant les données d'une jointure SQL
    Par Schpountz42 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/02/2007, 05h59
  2. [MS Query] neophyte demande aide sur jointures SQL
    Par thorgal972 dans le forum Langage SQL
    Réponses: 19
    Dernier message: 27/11/2006, 17h13
  3. [SQL] PB : Jointure SQL ne fonctionne pas..
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 13/09/2006, 14h03
  4. Réponses: 1
    Dernier message: 28/07/2006, 03h57
  5. Réponses: 4
    Dernier message: 11/10/2005, 10h17

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