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 :

Problème avec une jointure [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Par défaut Problème avec une jointure
    Bonjour,
    j'ai 2 tables :
    - membre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    CREATE TABLE `membre` (
      `id` int(11) NOT NULL auto_increment,
      `login` varchar(200) NOT NULL,
      `passe` varchar(200) NOT NULL,
      `mail` varchar(200) NOT NULL,
      `sexe` varchar(200) NOT NULL,
      `prenom` varchar(200) NOT NULL,
      `annee` varchar(200) NOT NULL,
      `departement` varchar(200) NOT NULL,
      `taille` varchar(200) NOT NULL,
      `cheveux` varchar(200) NOT NULL,
      `main` varchar(200) NOT NULL,
      `yeux` varchar(200) NOT NULL,
      `dentition` varchar(200) NOT NULL,
      `charme` varchar(200) NOT NULL,
      `qi` varchar(200) NOT NULL,
      `culture` varchar(200) NOT NULL,
      `alcool` varchar(200) NOT NULL,
      `fume` varchar(200) NOT NULL,
      `drogue` varchar(200) NOT NULL,
      `photo` varchar(200) NOT NULL,
      `argent` mediumtext NOT NULL,
      `statut` varchar(200) NOT NULL,
      `proprietaire` varchar(200) NOT NULL,
      `vendu` varchar(200) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;
    - vendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE TABLE `vendre` (
      `id` int(11) NOT NULL auto_increment,
      `vendeur` varchar(200) NOT NULL,
      `ami` varchar(200) NOT NULL,
      `prix` varchar(200) NOT NULL,
      `fin` varchar(200) NOT NULL,
      `description` varchar(200) NOT NULL,
      `statut` varchar(200) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
    Je voudrais faire une jointure entre ces deux tables.
    J'ai déjà fait sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $select_acheter = mysql_query("SELECT * FROM membre, vendre  WHERE membre.vendu = 'non' AND vendre.statut = 'ok'");
    while ($affiche_acheter = mysql_fetch_array($select_acheter))
    {
    echo ''.$affiche_acheter["login"].'<br>';
    echo ''.$affiche_acheter["ami"].'<br>';
    }
    mais sa ne marche pas (sa me renvoi, a chaque enregistrement dans la table membre(13) l'enregistrement de la table vendre(1)).
    Comment faire pour que cela fonctionne ??
    Merci d'avance pour vos réponses

  2. #2
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Bonjour,

    Tu veux faire une jointure mais qu'est ce qui doit relier tes 2 tables ?

    dans le WHERE il faut rajouter la liaison :
    membre.champ = vendre.champ

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    Je ne comprend pas la relation entre les 2 tables:
    membre.id et vendre.id? mais les 2 sont toutes des auto_increment.

  4. #4
    Membre confirmé Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Par défaut
    Ben en faite je ne sais pas si c'est une jointure que je veux faire mais je veux afficher les deux champs (login dans membre et ami dans vendre).

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par worldhugo
    je veux faire mais je veux afficher les deux champs (login dans membre et ami dans vendre)
    Sous quelle condition?
    Voici un tutoriel sur select:
    http://sqlpro.developpez.com/cours/sqlaz/select/

  6. #6
    Membre confirmé Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Par défaut
    Ben je voudrais faire un trus genre :
    - SELECT * FROM membre WHERE vendu = 'non'
    - SELECT * FROM vendre WHERE statut = 'ok'
    Mais avec 1 requete

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Les 2 tables sont-elles liées?
    Si oui
    Citation Envoyé par Seb33300
    dans le WHERE il faut rajouter la liaison :
    membre.champ = vendre.champ
    Sinon, je ne comprend pas pourquoi utiliser une seule requête?

  8. #8
    Membre confirmé Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Par défaut
    ben non les 2 tables sont ne pas lié mais je fait sa parce que je veux pouvoir classer les résultat par ordre alphabétique

  9. #9
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    je veux pouvoir classer les résultat par ordre alphabétique
    Tu veux mélanger l'affichage des 2 tables en les triant par ordre alphabétique?

  10. #10
    Membre confirmé Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Par défaut
    exactement
    tu a une idée de comment faire
    désolé d'insister mais je suis pressés par le temps

  11. #11
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si il n'y a aucune liaison entre les tables, je ne vois pas bien l'intérêt de faire ça en une seule requête, ni vraiment comment faire. A part peut-être en faisant une union des 2...
    http://sqlpro.developpez.com/cours/s...nsembles/#L3.1
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT id, login FROM membre WHERE vendu = 'non'
    UNION
    SELECT id, ami FROM vendre WHERE statut = 'ok'
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  12. #12
    Membre confirmé Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Par défaut
    merci pour ta réponse j'étudie sa tout de suite mais que sa soit en une seule ou plusieurs requête ce n'est pas grave.
    Je veux juste "mélanger" les 2 résultats et les trier par ordre alphabétique
    le union marche bien mais comment trier après ??

  13. #13
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Je ne pense pas que ça passe Celira, ses 2 tables ne sont pas compatible.
    @worldhugo
    Citation Envoyé par worldhugo
    je veux pouvoir classer les résultat par ordre alphabétique
    Tu ne peux pas le faire avec un simple SQL vue les tables.

  14. #14
    Membre confirmé Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Par défaut
    je peut peut être les rendre compatible ???
    et comment le faire sans un "simple SQL" ??
    ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $select_acheter = mysql_query("
    SELECT id, login FROM membre WHERE vendu = 'non'
    UNION
    SELECT id, ami FROM vendre WHERE statut = 'ok'");
    while ($affiche_acheter = mysql_fetch_array($select_acheter))
    {
    echo ''.$affiche_acheter["login"].'<br>';
    }
    ?>
    fonctionne parfaitement.
    il reste à trié par ordre alphabétique ....

  15. #15
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    je peut peut être les rendre compatible ???

    Tu n'as pas lu le lien donnée par Celira.
    trie le avec oder by ;

  16. #16
    Membre confirmé Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Par défaut
    le code que m'a mis Celira est ok.
    j'ai fait sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    $stack = array();
    $select_acheter = mysql_query("
    SELECT id, login FROM membre WHERE vendu = 'non'
    UNION
    SELECT id, ami FROM vendre WHERE statut = 'ok'");
    while ($affiche_acheter = mysql_fetch_array($select_acheter))
    {
    array_push ($stack, "".$affiche_acheter["login"]."<br>");
    }
    usort($stack, "strcasecmp");
    print_r($stack);
    ?>
    sa me renvoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Array ( [0] => alcyoneshadow
    [1] => aldo1978
    [2] => bon
    [3] => cooldadamode
    [4] => diaso
    [5] => ebaroc
    [6] => Juliet
    [7] => loulu0621
    [8] => malilas72300
    [9] => MellexSwan
    [10] => micheldem
    [11] => rouxy23
    [12] => salegoss
    [13] => wookiz
    [14] => worldhugo
    [15] => zaza11.95
    )
    comment avoir juste les "pseudo" ??

  17. #17
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    comment avoir juste les "pseudo" ??
    Il n'y a pas de pseudo dans les tables.

  18. #18
    Membre confirmé Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Par défaut
    non mais comment supprimé les [0] => , [1] => , [2] => , ect ......

  19. #19
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    à la place de print_r($stack); utilise un boucle,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($stack as $value) {
        echo "$value<br />";
    }

  20. #20
    Membre confirmé Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Par défaut
    ho merci vous êtes géniaux.
    Problème réussi.
    Merci

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

Discussions similaires

  1. [BO XIR2] Problème avec une jointure externe
    Par Fouinto dans le forum Designer
    Réponses: 6
    Dernier message: 13/01/2011, 17h19
  2. [MySQL] Problème avec une jointure
    Par student_php dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/11/2010, 13h34
  3. Problème avec une jointure
    Par shelko dans le forum Requêtes
    Réponses: 7
    Dernier message: 19/03/2009, 16h54
  4. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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