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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Aide pour créér une requete pour un regroupement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide pour créér une requete pour un regroupement

n°1584586
albertos
kikoo
Posté le 10-07-2007 à 14:17:46  profilanswer
 

Bonjour j'ai besoin d'aide pour creer une requete.
Je m'explique :
j'ai 3 tables 1 hébergements H,et 1 options O,et intitule_options IO
dans la table des options il y a les correspondances entre les options et les hébergements et dans la 3 eme le nom des options.
Je sais qu'un hebergement peut avoir au max 6 options (il n'en existe pas plus)
Si je fait un : select * from H,O,IO WHERE h.id = o.id_H
si un hebergement possede 3 options je vais avoir 3 fois la ligne avec l'hebergement et chacune des options.
 
Je voudrais savoir si il y avait un moyen pour n'affiche qu'une seule ligne par hebergement peut etre avec des champs O1,O2,O3,O4,O5,O6 et uen valeur dedans s'il y a quelque chose ou nulle si l'hebergement n'a ps l'option... ?

mood
Publicité
Posté le 10-07-2007 à 14:17:46  profilanswer
 

n°1584620
skeye
Posté le 10-07-2007 à 14:43:21  profilanswer
 

Habituellement on traite ce genre de choses dans le langage qui récupère les résultats, pas directement en SQL. Tu as un intérêt quelconque à le faire directement en SQL? :??:


---------------
Can't buy what I want because it's free -
n°1584654
anapajari
s/travail/glanding on hfr/gs;
Posté le 10-07-2007 à 15:12:22  profilanswer
 

mysql? si oui group_concat

n°1585040
albertos
kikoo
Posté le 11-07-2007 à 08:27:35  profilanswer
 

et oui c'est pour exporter sous exel .... :S et c'est une base firebird.. !
merci !


Message édité par albertos le 11-07-2007 à 08:27:51
n°1585130
MagicBuzz
Posté le 11-07-2007 à 12:48:31  profilanswer
 

group_concat ça fait qu'une seule colonne non ?
 
ta table IO, elle contient combien de lignes ?
(en fait, tu dis que tu peux pas avoir plus de 6 options par appartement, parcequ'il n'y a que 6 options dans la base, ou si ça n'a rien à voir ?)
 
Dans tes 6 colonnes, tu veux regrouper les mêmes options dans les mêmes colonnes, ou si tu te moques de leur ordre ?
 
Toutes ces questions, parceque tu peux faire ça comme requête :

Code :
  1. SELECT *
  2. FROM h
  3. LEFT OUTER JOIN o1 ON o1.id_h = h.id
  4. LEFT OUTER JOIN io1 ON oi1.id = o1.o_id AND io1.id = 'OPT1'
  5. LEFT OUTER JOIN o2 ON o2.id_h = h.id
  6. LEFT OUTER JOIN io2 ON oi2.id = o2.o_id AND io2.id = 'OPT2'
  7. LEFT OUTER JOIN o3 ON o3.id_h = h.id
  8. LEFT OUTER JOIN io3 ON oi3.id = o3.o_id AND io3.id = 'OPT3'
  9. LEFT OUTER JOIN o4 ON o4.id_h = h.id
  10. LEFT OUTER JOIN io4 ON oi4.id = o4.o_id AND io4.id = 'OPT4'
  11. LEFT OUTER JOIN o5 ON o5.id_h = h.id
  12. LEFT OUTER JOIN io5 ON oi5.id = o5.o_id AND io5.id = 'OPT5'
  13. LEFT OUTER JOIN o6 ON o6.id_h = h.id
  14. LEFT OUTER JOIN io6 ON oi6.id = o6.o_id AND io6.id = 'OPT6'


 
Evidement, c'est plus chiant à écrire...

n°1585134
MagicBuzz
Posté le 11-07-2007 à 12:50:01  profilanswer
 

Sinon, pour info, si c'est pour envoyer dans Excel, tu devrais faire un extract normal (ta première requête) et effectuer la mise en colonne à l'aide d'un tableau croisé dynamique.
 
Un SGBD, ça sert à gérer les informations brutes
Excel, ça sert à transformer des informations brutes afin d'en faire des informations analytiques
 
Bref, chacun son métier ;)


Message édité par MagicBuzz le 11-07-2007 à 12:50:09
n°1585206
albertos
kikoo
Posté le 11-07-2007 à 14:50:34  profilanswer
 

MagicBuzz a écrit :

group_concat ça fait qu'une seule colonne non ?
 
ta table IO, elle contient combien de lignes ?
(en fait, tu dis que tu peux pas avoir plus de 6 options par appartement, parcequ'il n'y a que 6 options dans la base, ou si ça n'a rien à voir ?)
 
Dans tes 6 colonnes, tu veux regrouper les mêmes options dans les mêmes colonnes, ou si tu te moques de leur ordre ?
 
Evidement, c'est plus chiant à écrire...


 
-Il n'y a que 6 options disponibles dans la base en effet, donc la table io contient 6 lignes
- a la limite je me moque de leur ordre du moment que je peux les identifier ;)
merci pour les réponses !
 
Sinon avec une procédure stockée, ou on peut mettre des IF, ce ne serait pas possible ? j'ai essayé de m'engager sur cette voie. Car il faudrait que j'arrive a automatiser la procédure de recherche que je cherche à faire ..


Message édité par albertos le 11-07-2007 à 15:18:57
n°1585246
albertos
kikoo
Posté le 11-07-2007 à 15:45:28  profilanswer
 

bon ben en fait j'ai réussi a faire ce que je voulais ! Merci pour l'aide en tout cas :jap:

n°1585328
MagicBuzz
Posté le 11-07-2007 à 16:40:06  profilanswer
 

tu peux poster ta solution pour la pérénité du topic ? :)


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

  Aide pour créér une requete pour un regroupement

 

Sujets relatifs
pb requete mysql[resolu]Petit défi !! Compteurs qui s'incrémentent à l'aide d'une commande
[SQL Server][Gestion de fichier] Ouvrir lire créer un fichier via SQL?creer un script a partir des valeurs d'un fichier
comment créer un programme?Créer une gestion de comptes pour des downloads
Requete UPDATE et parcourt de fichiertravailler sur les réponses d'une recherche sur google
[RÉSOLU] Aide pour une requete MySQL 
Plus de sujets relatifs à : Aide pour créér une requete pour un regroupement


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