[Résolu]Union?

Union? [Résolu] - SQL/NoSQL - Programmation

Marsh Posté le 01-11-2009 à 16:25:53    

Bonjour,
 
Je fait un système d'objets ayant des propriétés qui peuvent êtres de plusieurs type avec mySQL.
Certaines propriétés  sont fondamentales et communes à tout les objets:
J'ai donc créé une table objets du genre : id(int),x(int),y(int).  
 
Pour les propriétés appartenant à un sous type d'objet particulier, j'ai des tables comme celles ci:
 
object_property_int: id(int), property_name(varchar50) et property_value(int)
object_property_datetime: id(int), property_name(varchar50) et property_value(datetime)
object_property_varchar100: id(int), property_name(varchar50) et property_value(varchar100)
 
Donc pour résumer un objet est au moins 1 élément dans la table objets et 0 ou plusieurs entrées dans les tables object_property.
 
Pour charger mes objets, je fait une requete sur objets qui va me permettre de charger les données essentielles,
puis je souhaite faire une requete sur mes tables de propriétés pour remplir les autres champs.
 
J'ai déja deux requetes pour charger une liste d'objets, je souhaite savoir si il y a un moyen de combiner mes résultats sur les tables property de manière à ne faire qu'une requete au lieu de trois (une par table property)
 
 
Union me semblait très bien mais il faut les memes types dans les trois tables..
Une jointure me combine mes résultats..
 
J'aurais souhaité des résultats de ce type :
 
id pn     pv1  pv2    pv3
1  nb     3    NULL  NULL
1  text   NULL toto  NULL
1  date  NULL NULL 22/8/...
 
Où les pn sont les property name fusionnés et les pv les valeurs selon leur type
 
Une idée?
 
Merci à vous


Message édité par milootooloo le 01-11-2009 à 19:34:53
Reply

Marsh Posté le 01-11-2009 à 16:25:53   

Reply

Marsh Posté le 01-11-2009 à 19:33:56    

Bon, J'ai trouvé quelque chose qui marche:
 
 SELECT id, pn, pv1, NULL AS pv2, NULL AS pv3, NULL AS pv4
FROM object_property_int
WHERE object_property_int.id
IN ( '1' )
UNION SELECT id, pn, NULL AS pv1, pv2, NULL AS pv3, NULL AS pv4
FROM object_property_text
WHERE object_property_text.id
IN ( '1' )
UNION SELECT id, pn, NULL AS pv1, NULL AS pv2, pv3, NULL AS pv4
FROM object_property_datetime
WHERE object_property_datetime.id
IN ( '1' )
UNION SELECT id, pn, NULL AS pv1, NULL AS pv2, NULL AS pv3, pv4
FROM object_property_varchar100
WHERE object_property_varchar100.id
IN ( '1' )
LIMIT 0 , 30

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed