champs identique, résultat mixe

champs identique, résultat mixe - SQL/NoSQL - Programmation

Marsh Posté le 13-04-2006 à 20:31:45    

Bonsoir,
 
J'ai un ptit soucis que voici donc:
 
J'ai une table SDL_Objectif, SDL_ObjText et SDL_ObjImg
 
Je récupère un IdObject dans SDL_Objectif et je recherche les lignes ayant le meme IdObject dans SDL_ObjText et SDL_ObjImg
SDL_ObjText et SDL_ObjImg ayant des champs identiques et qui sont les seuls à m'intéresser, je voudrais aditionner ces 2 tables...
 
 
 
SDL_Objectif
 
IdObject   Date
    ...         ...
     7        2001
     8        2006
    ...         ...
 
SDL_ObjText
 
IdObjText   IdObject    IdObjEns    Position  Texte     Type
     ...             ...            ...            ...        ...         ...
      9              7              1             1      "blabla"      1
     ...             ...            ...            ...        ...         ...
 
 
SDL_ObjImg
 
IdObjImg     IdObject    IdObjEns    Position   Src       Largeur     Hauteur    Type
     ...             ...            ...            ...        ...           ...            ...          ...
     17              7             1             2       "f.jpg"       290           128         2
     ...             ...            ...            ...        ...           ...            ...          ...
 
 
Je voudrais pouvoir récupérer :
 
Table
 
  Id      IdObject    IdObjEns    Position    Type
  ...         ...             ...            ...          ...  
   3          7              1              1           1
   4          7              1              2           2
  ...         ...             ...            ...          ...  
 
 
Voila loool
 
merci davance

Reply

Marsh Posté le 13-04-2006 à 20:31:45   

Reply

Marsh Posté le 13-04-2006 à 22:51:52    

Il me semble que l'on peut s'en sortir avec des requêtes ordinaires, mais peut-être qu'il y a une difficulté cachée que je n'ai pas vue.
 

SELECT ST.IdObject, ST.IdObjEns, ST.Position, ST.Type
   FROM SDL_ObjText AS ST, SDL_Objectif AS SO
 WHERE ST.IdObject = SO.IdObject;


SELECT SI.IdObject, SI.IdObjEns, SI.Position, SI.Type
   FROM SDL_ObjImg AS SI, SDL_Objectif AS SO
 WHERE SI.IdObject = SO.IdObject;


 
Si l'on ne veut que les enregirstrement ayant des IdObjets commun aux trois tables, il suffit de rajouter une condition à chaque requête :

SELECT ST.IdObject, ST.IdObjEns, ST.Position, ST.Type
   FROM SDL_ObjText AS ST, SDL_Objectif AS SO, SDL_ObjImg AS SI
 WHERE ST.IdObject = SO.IdObject
    AND ST.IdObject = SI.IdObject;


SELECT SI.IdObject, SI.IdObjEns, SI.Position, SI.Type
   FROM SDL_ObjImg AS SI, SDL_Objectif AS SO, SDL_ObjText AS ST
 WHERE SI.IdObject = SO.IdObject;
    AND SI.IdObject = ST.IdObject;


 
Si l'on veut combiner les deux requêtes, on peut utiliser UNION :
 

SELECT ST.IdObject, ST.IdObjEns, ST.Position, ST.Type
   FROM SDL_ObjText AS ST, SDL_Objectif AS SO
 WHERE ST.IdObject = SO.IdObject
UNION
SELECT SI.IdObject, SI.IdObjEns, SI.Position, SI.Type
   FROM SDL_ObjImg AS SI, SDL_Objectif AS SO
 WHERE SI.IdObject = SO.IdObject;


 
Si on veut faire des additions, on utilisera SUM et GROUP BY.


Message édité par olivthill le 13-04-2006 à 22:55:42
Reply

Marsh Posté le 14-04-2006 à 09:58:13    

c pas ça que je veux dsl
 
qd je dis adition c pas SUM
 
Le truc c que je veux au final une seule requete et donc une seule table

Reply

Marsh Posté le 14-04-2006 à 09:59:04    

fusioner les 2 tables...

Reply

Marsh Posté le 14-04-2006 à 10:29:01    

Utilise union dans ce cas la :
 
SELECT ST.IdObject, ST.IdObjEns, ST.Position, ST.Type  
FROM SDL_ObjText AS ST, SDL_Objectif AS SO  
WHERE ST.IdObject = SO.IdObject;  
UNION
SELECT SI.IdObject, SI.IdObjEns, SI.Position, SI.Type  
FROM SDL_ObjImg AS SI, SDL_Objectif AS SO  
WHERE SI.IdObject = SO.IdObject;  
 
Tout simplement


---------------
Mindiell
Reply

Sujets relatifs:

Leave a Replay

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