Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1295 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] - Requête SQL sur plusieurs tables

 

 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] - Requête SQL sur plusieurs tables

n°2194479
DeStROY dA​ WoRld
Posté le 15-06-2013 à 14:01:10  profilanswer
 

Bonjour à tous,
 
Actuellement en poste en tant que dev web, je suis face à une requête SQL qui me donne du fil à retordre.
 
Je m'explique. Le contexte, c'est un questionnaire sur les préférences des utilisateurs pour connaître les produits qui leur correspond le mieux (je préfère un ultraportable original et coloré / fin / esthétique ; je compte stocker toutes mes données / quelques données de temps en temps ; etc.).
 
Je dispose de deux tables :
| cab_cabine |
--------------
ID
IdProduit
IdQuestionnaire
 
Et
| cab_essayage |
-----------------
IdCabine
IdQuestion
IdReponse
 
C'est la table 'cab_essayage' liée avec la table 'cab_cabine' ON cab_cabine.ID = cab_essayage.IdCabine qui me fournit les données.
 
En gros, en fonction des réponses, je dois restreindre les résultats pour ne sélectionner que les résultats qui correspondent aux réponses de chaque question.
 
Je ne sais absolument pas par où prendre le problème. Pour l'instant je dispose d'une requête générée telle qui suit : "SELECT DISTINCT * FROM cab_essayage WHERE IdReponse IN (1,2) ORDER BY IdCabine ASC" qui marche pour la première question mais je ne sais pas comment faire pour "restreindre" les résultats trouvés. Je ne sais même pas si je peux faire ça en une seule requête où si je dois stocker les résultats dans un tableau temporaire pour l'utiliser sur une requête SQL supplémentaire.
 
Voici le code de la page qui reçoit le formulaire :
 

Code :
  1. <?php
  2. require_once('../../config/config.inc.php');
  3. echo '$_POST = ';
  4. var_dump($_POST);
  5. echo '------------------------------------<br/>';
  6.  $sql = 'SELECT DISTINCT * FROM cab_essayage WHERE IdReponse IN (';
  7. foreach($_POST AS $question => $value) { // Boucle qui lit chaque question
  8. if($question != 'questionnaire') {
  9.  $IdQuestion = substr($question, 1, 1);
  10.  echo $IdQuestion;
  11.  foreach($value AS $reponse) { // Boucle qui lit chaque réponse
  12.   if($reponse == end($value))
  13.    $sql .= $reponse;
  14.   else
  15.    $sql .= $reponse.',';
  16.  }
  17. }
  18. }
  19.  $sql .= ') ORDER BY IdCabine ASC';
  20. echo($sql);
  21. echo '<br/>------------------------------------';
  22. $i = NULL;
  23. $posts = getData($sql);
  24. echo '<br/>Nombre de posts : '.count($posts).'<br/>';
  25. foreach($posts AS $d)
  26. {
  27. $i++;
  28. echo $i.' : '.$d['IdCabine'].', '.$d['IdQuestion'].', '.$d['IdReponse'].'<br/>';
  29. }
  30. ?>


 
PS : navré pour le titre du post, je n'ai pas trouvé mieux.
 
Merci encore pour votre aide.
 
Bien à vous.


Message édité par DeStROY dA WoRld le 15-06-2013 à 14:01:37
mood
Publicité
Posté le 15-06-2013 à 14:01:10  profilanswer
 

n°2194480
Tristou
Keep calm and hack cookies
Posté le 15-06-2013 à 14:08:32  profilanswer
 

Faut utiliser les jointures. Et le SELECT *, vaut mieux éviter je pense :o


---------------
"About your cat Mr. Schrödinger : I have good news and bad news"
n°2194482
DeStROY dA​ WoRld
Posté le 15-06-2013 à 14:22:54  profilanswer
 

Bonjour Tristou, merci de ta réponse.
 
Effectivement, je pense qu'il va falloir utiliser les jointures à un moment donné pour lié les deux tables. Mais pour le moment, c'est sur la requête interrogeant la table cab_essayage où je bute.
Et le SELECT * n'est que temporaire bien évidemment, je compte restreindre les champs une fois que j'aurais la requête SQL qui va bien.
 
Merci encore à toi.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] - Requête SQL sur plusieurs tables

 

Sujets relatifs
Script pour cacluler la somme de likes sur plusieurs pages facebookRequete pour afficher le nom en fonction de l'ip
Requete avec un group by ?Requête d'insertion multi base
Requete croisée entre plusieurs tableaux (comme dans une DB)Faire la moyenne des données d'une colonne récupérées avec une requete
Récupérer des données dans plusieurs fichiersSQl : trouver l'élément suivant d'une colonne
Requete sql sur plusieurs tables avec nom de la table[SQL] Requete INSERT dans plusieurs tables liées
Plus de sujets relatifs à : [MySQL] - Requête SQL sur plusieurs tables


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR