Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jointures pour deux Tables

Difficulté à joindre les deux tables

    9 août 2018 à 0:31:04

    Salut à toutes et à tous. J'espère avoir votre aide pour résoudre ce problème qui me chauffe la tête depuis 2jours

    En fait pour mon site web de pronostique des matchs de football j'avais créé une table 'parifoot' contenant un id en auto_incrémente à chaque fois qu'il y a un nouveau utilisateur,une colonne 'nom' contenant le nom de l'utilisateur ,une colonne 'equipe_1' ,une colonne 'équipe_2,' une colonne 'date' et une colonne 'active' qui ne prend que deux valeurs 1 et 0.

    La colonne active à pour zéro(0) si l'utilisateur n'a pas encore pronostiqué et un(1) si l'utilisateur à pronostiqué. J'ai fait cela pour qu'un utilisateur ne pronostique pas 2fois.

    Voici mon code au départ 

    <code>

    <?PHP

    If(isset($_post[équipe_1]&& isset ($_post[équipe_2])){

    $req = $bdd->prepare("SELECT id FROM parifoot WHERE id=:id AND active ='0' ");

    $req->execute(array(

    'id'=>$_GET['idi]

    ));

    $resultat = $req->fetch();

    if(résultat){

    $req = $bdd->prepare(" UPDATE parifoot SET équipe_1=:équipe_1, équipe_2=:equipe2, date=now(),active='1' WHERE id=:id");

    $req->execute(array(

    'équipe_1' =>$POST['equipe_1'],

    équipe_2' =>$POST['equipe_2'],

    'id'=>$GET['id']

    ));

    </code>

    Ce code fonctionne très bien et j'arrive à récupérer les scores correspondant à chaque utilisateur. Mais vous êtes d'accord avec moi qu'il y a plusieurs matchs et pour chaque macth j'utilise minimum 4champs(équipe_1, équipe_2 , date_pronostique , active).le champ active ne prend que deux valeurs (0 et 1) 0 si l'utilisateur n'a pas encore pronostiqué et 1 si l'utilisateur à déjà pronostiqué.

    L'id,les noms des utilisateurs et tous ses panoplies de matchs qu'ils ont a pronostiqué se retrouve dans la table parifoot. ma table est trop long.du coût j'ai décidé de créer une nouvelle table pour nommé score qui va gérer les scores que les utilisateurs auront a pronostiqué et laissé la table parifoot pour l'id et le nom de l'utilisateur. Voilà ce que j'arrive pas à faire .la jointure entre la table parifoot et la table foot.La table foot ne comporte que 4champs:équipe_1, équipe_2 , date , active.Comment faire la jointure entre la table parifoot qui gère uniquement le nom des utilisateurs et la table foot qui gère le score que l'utilisateur aura donné. C'est ça mon plus gros soucis.et c'est pour ça que je viens demander votre aide.Si vous voulez m'aider et que vous me trouvez pas claire dans l'explication de mon problème ,je suis prêt pour une reexplication.Merci pour vos efforts  pour avoir lu toute cette explication de mon problème et merci d'avance pour votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      9 août 2018 à 22:10:34

      Je ne te suis pas vraiment sur ta modélisation. Il te fait une table avec tes utilisateurs, une table avec toutes les équipes, une table des match entre deux équipes, et une table de paris où les utilisateur pronostiquent pour un match.

      Ce qui donne :

      utilisateur ( id [pk], nom, etc... )

      equipe( id [pk], nom, etc... )

      match( id[pk], equipe_1 [fk equipe.id], equipe_2 [fk equipe.id], date_matche) Avec une contrainte CHECK pour vérifier que equipe_1 est différent de équipe_2, car une équipe ne peut pas jouer contre elle même

      paris [ id_utilisateur [fk utilisateur.id], id_match [fk match.id], score_equipe_1, score_equipe_2 ] Avec une contrainte UNIQUE sur le couple (id_utilisateur, id_match) pour interdire à un utilisateur de pronostiquer plusieurs fois.

      On peut encore faire largement mieux au niveau de la modélisation (ici la 3NF n'est pas totalement respectée), mais ça devrait déjà te permettre d'avancer dans un premier temps.

      • Partager sur Facebook
      • Partager sur Twitter
        9 août 2018 à 22:37:29

        Je vais essayer cela et je vais revenir pour dire ce qui s'est passé quand j'ai essayé cette méthode.
        • Partager sur Facebook
        • Partager sur Twitter
          20 août 2018 à 10:33:43

          Bonjour! Je voudrais reformuler le sujet.

          J'ai deux tables:parifoot et foot.

          Dans parifoot se trouve les colonnes nom,pseudo,mot de passe, numéro de téléphone ,un id en auto_incrémente,deuxième_prénom de l'utilisateur (je l'utilise pour aider l'utilisateur a réinitialiser son mot de passe en cas d'oublis) une date d'inscription.Pour un match donné entre deux équipes(je suppose France vs Croatie) je créé à la suite de ces colonnes une colonne France(pour prendre le pronostique de l'utilisateur pour la France), une colonne Croatie (pour prendre le pronostique de l'utilisateur pour la Croatie) une colonne date_fran_cro pour savoir à quel moment l'utilisateur à pronostiquer pour ces deux équipes qui jouent,en enfin une colonne active_fran_cro pour savoir si l'utilisateur à déjà pronostiquer ou non.la colonne active_fran_cro prend la valeur zéro(0) par défaut(si l'utilisateur n'a pas encore pronostiquer ) et un(1) si il a déjà pronostiquer afin que la même personne 'e pronostique pas deux fois.

          À chaque fois qu'il y a un match entre deux équipes je met à la suite des colonnes id,nom,pseudo, deuxième_prénom,téléphone,mot de passe et date d'inscription 4colonnes(colonne de première équipe, colonne de la deuxième équipe, colonne date_du_pronostique, colonne active_équipe1_équipe_2(je le rappel il permet de savoir si l'utilisateur à déjà pronostiquer pour ces deux équipes qui jouent ce match ou nom)Du coût ma table est vraiment long. J'ai décidé de scinder en créant maintenant une nouvelle table nommé foot qui va stocker uniquement les pronostiques de l'utilisateur pour un match donné. Dans le cas du match entre France et Croatie,la table foot comprend les colonnes suivantes : user_id en auto_incrémente, un id(qui est une clé étrangère et fais référence à l'id qui se trouve dans la table parifoot afin d'identifier l'utilisateur qui pronostique, une colonne croatie ,une colonne France (ces deux colonnes prennent les pronostiques de l'utilisateur pour ces deux équipes), une colonne date(la date et l'heure ou l'utilisateur à pronostiquer) et enfin une colonne active_fran_cro pour savoir si l'utilisateur à déjà pronostiquer ou nom.

          Voilà mes chefs toute la structure de mes deux tables. Si vous avez pu me comprendre jusqu'ici je vois remercie. Il ne reste plus qu'a poser mon problème.

          J'aimerais joindre mes deux tables grâce à la clé étrangère id qui sa trouve dans la table foot et qui fait référence à l'id qui se trouve dans la table parifoot.

          Voici mes requêtes.

          • Partager sur Facebook
          • Partager sur Twitter

          Jointures pour deux Tables

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown