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: récupérer joueur qui n'est pas dans l'autre table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Points : 93
    Points
    93
    Par défaut Jointure: récupérer joueur qui n'est pas dans l'autre table
    Bonjour à tous,

    J'ai fait un script qui permet de récuperer les joueurs titulaires de chaque équipe afin d'effectuer un match.
    Ce que je souhaite, c'est de vérifier que les joueurs que chaque équipe a mis sur la feuille de match (table phpl_ordres) appartiennent toujours a l'équipe (qu'il n'y ai pas eu de transfert entre temps).

    Voici les 2 tables en questions :

    Joueurs-id_joueur
    -id
    - equipe_id
    -caracteristique1
    -caracteristique2
    ect

    phpl_ordres-id
    -match_id
    -equipe_id
    -joueur-id
    -poste (le poste du joueur : 1 2 3 4 5)

    Donc dans cette table il y a une entrée pour chaque poste (que prendra un joueur) de chaque équipe a chaque match

    Mon code actuel :

    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
    <?php
    // Cette premiere requete permet de récuperer les joueurs (des 2 équipes) qui joueront le match
    $sql='SELECT  phpl_ordres.equipe_id AS id_equipe_ordre, joueur_id, joueurs.equipe_id AS id_equipe, poste, dribble, interception, defense
    FROM phpl_ordres
    LEFT JOIN joueurs
    ON (phpl_ordres.joueur_id = joueurs.id)
    WHERE '.$row['id_match'].' = match_id';
     $requete2 = mysql_query($sql) or die (mysql_error());
     
    // ON BOUCLE CHAQUE JOUEUR
    while($row2 = mysql_fetch_assoc($requete2))
    {
     
    // ICI on vérifie que le joueur appartient toujours bien a une des 2 équipes	
    		if($row2['id_equipe'] != $row['id_equipe_dom'] && $row2['id_equipe'] != $row['id_equipe_ext'])
    		{
    	echo '<br /><strong> CE JOUEUR : '.$row2['joueur_id'].' nappartient plus à léquipe </strong><br />';
     
    // on le remplace par un joueur qui ne joue pas
    $sql3='SELECT joueur_id, joueurs.equipe_id AS id_equipe, poste, dribble, interception, defense
    	FROM joueurs
    	LEFT JOIN phpl_ordres
    	ON (phpl_ordres.joueur_id = joueurs.id)
    	WHERE joueurs.equipe_id ='.$row2['id_equipe_ordre'].' AND
          	match_id !='.$row['id_match'];
    Voila ma derniere requete sert a mettre un autre joueur a sa place.
    il faut que le joueur appartienne bien a l'équipe (premiere clause du WHERE)
    mais aussi que le joueur ne soit pas déja sur la feuille de match a un autre poste (2eme clause du WHERE

    J'aimerais que donc dans le cas ou ma condition (le if) est passé
    la derniere requete (sql3) récupere un joueur (id_joueur) de l'équipe défini par id_equipe, mais qui n'étais pas sur la feuille de match, c'est a dire qu'il n'y ai pas d'entrée dans la table phpl_ordres de ce joueur avec le id_match du match actuel
    ce que je traduisais par match_id !='.$row['id_match'];

    Donc j'aimerais vos conseils sur cette jointure.

    Merci !

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    c'est bisarre j'aurai mis une table avec la composition des équipes et je n'aurai pas eu le probleme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT idjoueur 
    FROM joueurs AS j
    WHERE idjoueur NOT IN 
    ( SELECT idjoueur
    FROM ordre AS o
    WHERE o.equipe = j.equipe 
    AND matche = :matche 
    AND o.equipe = :equipe )
    est ce que ceci conviendrait?
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Points : 93
    Points
    93
    Par défaut
    c'est bisarre j'aurai mis une table avec la composition des équipes et je n'aurai pas eu le probleme.
    C'est a dire ?

    Avec quelques modifications, j'ai pu réglé mon probleme

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/05/2011, 11h50
  2. Requete sur des champs qui ne sont pas dans une autre table
    Par jean christophe dans le forum Débuter
    Réponses: 4
    Dernier message: 20/05/2010, 18h05
  3. selectionner un resultat qui n'est pas dans une autre requete
    Par yosraisi dans le forum Langage SQL
    Réponses: 6
    Dernier message: 07/05/2008, 13h17
  4. Réponses: 6
    Dernier message: 09/01/2008, 11h56
  5. Réponses: 2
    Dernier message: 11/11/2007, 16h49

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