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 :

requete speciale avec tableaux croisés [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 79
    Points : 40
    Points
    40
    Par défaut requete speciale avec tableaux croisés
    Bonjour, j'essaye de trouver une solution pour une requete speciale sur 2 tableaux, et je cale.
    J'ai un tableau 1, base_contenu, contenant differents types de programme repas par jour (petit dej + dej + diner)
    Nom : base_contenu.jpg
Affichages : 113
Taille : 23,7 Ko

    puis un 2e tableau base_programme
    Nom : base_programme.jpg
Affichages : 115
Taille : 30,6 Ko
    qui contient les combinaisons de repas sur une periode

    Dans ma requete j'appelle la semaine 1 avec le code_semaine, et je souhaite donc retrouver dans les j1, j2, j3...le contenu correspondant.
    Par exemple, en appelant s1, je souhaite afficher le programme repas de la semaine
    j1 : petit dejeuner:jus d'orange + croissant - dejeuner: salade - diner:quiche
    j2: petit dejeuner: cafe + pain - dejeuner:pizza - diner:jambon
    j3: petit dejeuner: yaourt + cereale - dejeuner:dorade - diner:saumon
    j4: petit dejeuner:jus d'orange + croissant - dejeuner: salade - diner:quiche
    j5: petit dejeuner: cafe + pain - dejeuner:pizza - diner:jambon
    j6: petit dejeuner: yaourt + cereale - dejeuner:dorade - diner:saumon
    j7: petit dejeuner:jus d'orange + croissant - dejeuner: salade - diner:quiche

    Est-ce possible ?

    merci pour votre aide...

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    La bonne structure pour base_programme aurait été :
    id, code_semaine, jour, id_contenu
    1, 1, 1, 1
    1, 1, 2, 3
    etc.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 79
    Points : 40
    Points
    40
    Par défaut
    Bonjour,

    Oui c'est vrai, on peut remplacer le code semaine par l'id de la base code_contenu.

    Mais c'est sur l'affichage avec la requête que je cale. Merci pour votre aide.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 42
    Points
    42
    Par défaut
    Pour recuperer le menu de l'ensemble de la semaine 1 dans mon exemple voici la requete :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select "lundi" as 'jour', petit_dejeuner, dejeuner, diner from base_contenu left outer join base_programme  on ( base_contenu.id = base_programme.j1 ) where base_programme.code_semaine  = "s1" 
    union 
    select "mardi" as 'jour', petit_dejeuner, dejeuner, diner from base_contenu left outer join base_programme  on ( base_contenu.id = base_programme.j2 ) where base_programme.code_semaine  = "s1" 
    union 
    select "mercredi" as 'jour', petit_dejeuner, dejeuner, diner from base_contenu left outer join base_programme  on ( base_contenu.id = base_programme.j3 ) where base_programme.code_semaine  = "s1" 
    union 
    select "jeudi" as 'jour', petit_dejeuner, dejeuner, diner from base_contenu left outer join base_programme  on ( base_contenu.id = base_programme.j4 ) where base_programme.code_semaine  = "s1" 
    union 
    select "vendredi" as 'jour', petit_dejeuner, dejeuner, diner from base_contenu left outer join base_programme  on ( base_contenu.id = base_programme.j5 ) where base_programme.code_semaine  = "s1"
     union 
    select "samedi" as 'jour', petit_dejeuner, dejeuner, diner from base_contenu left outer join base_programme  on ( base_contenu.id = base_programme.j6 ) where base_programme.code_semaine  = "s1" 
    union 
    select "dimanche" as 'jour', petit_dejeuner, dejeuner, diner from base_contenu left outer join base_programme  on ( base_contenu.id = base_programme.j7 ) where base_programme.code_semaine  = "s1"

    Cordialement



    Personnellement j'aurais créé trois tables : 1 table semaine et une table jour relation N/N (création d'une table intermédiaire avec les identifiants semaine et jour en temps que clefs étrangères) ainsi qu'une table menu dont la clef primaire serait dans la table intermédiaire en temps que clef étrangère également. Cette table intermédiaire disposerait du code semaine, du code jour ainsi que du code menu, il y aurait autant d'enregistrements dans cette table qu'il y aurait de semaines de jours dans chacune des ces semaines et de menus pour chacun de ces jours.
    Ainsi pour une semaine, vous pouvez facilement consulter les menus de chaque jour sans passer par une requêtes trop "complexe" et surtout associer plusieurs menus pour une seule et même journée d'une semaine donnée.

    La structure de la base de "monsieur sabotage" serait dans un premier temps parfaite pour votre exemple et peut être un peu moins contraignante a mettre en place que celle décrite directement ci dessus mais ayant le mérite d'être peut être un peu plus rigoureuse .

  5. #5
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 79
    Points : 40
    Points
    40
    Par défaut
    Bonjour nikopol44,
    Merci pour votre réponse. J'essaye de mettre en place votre suggestion avec 3 tables...et je vous tiens informé !

  6. #6
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 79
    Points : 40
    Points
    40
    Par défaut
    Bonjour,
    Bon finalement, j'ai opté pour une solution plus simple avec inner join, en remaniant un peu mes tables.
    merci qm

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

Discussions similaires

  1. Requete speciale avec jointure
    Par nn2009 dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/03/2012, 17h14
  2. [Toutes versions] Tableaux croisés avec des sous-totaux
    Par Clausisse dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/03/2011, 21h48
  3. [XL-2003] Instabilité des classeurs avec des Tableaux Croisés Dynamiques
    Par oohcalme dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/08/2009, 11h45
  4. Tableaux croisés, possible ou pas avec SQL?
    Par fram069 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/11/2008, 02h57
  5. Problème lors de copie de classeur avec Tableaux croisés dynamiques
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/04/2008, 17h01

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