aide pour une requete

aide pour une requete - SQL/NoSQL - Programmation

Marsh Posté le 27-07-2008 à 13:35:43    

bonjour, tout le monde, j'aimerai de l'aide pour résoudre ce cas de requete sql s'il vous plait,  
j'ai une table (oracle) qui s'appelle "voiture" dans cette table j'ai d'un coté les  "modeles" (750i, 323, slr, q7, 600...)  d'un autre coté j'ai des "départements" associés a ces "modeles"  (92, 95, 77, 02, 89...)  
donc chaque "modeles" est rattaché a un seul "départements" à la fois mais un même "modeles" peut etre présent dans tout les "départements" (ex, il y a des "modeles" 750i "departements" 92, des "modeles" 750i "departements" 95, des 750i "departements" 02 etc...)
certains "modeles" sont donc présents dans tout les "départements", d'autres dans certains départements seulement (ex: il y a des q7 "départements" 95, des q7 "départements" 02, mais pas de q7 "départements" 89)
j'aimerai savoir si il est possible de faire un requête pour connaitre le ou les "modeles" qui sont présents dans tout les "départements" donc un résultat qui dirait que c'est  la 750i qui est présente dans tout les départements de france (ou a la fois la 750i, la 323, la 600 etc...)
je vous remercie beaucoup (bien sûr je suis un débutant vous l'aurez compris :) )

Message cité 1 fois
Message édité par casul le 27-07-2008 à 13:45:18
Reply

Marsh Posté le 27-07-2008 à 13:35:43   

Reply

Marsh Posté le 27-07-2008 à 22:22:31    

si tu as une table des départements, tu peux comparer un count(*) sur le département avec un cout(distinct departement_id) groupé par modèle.


Message édité par MagicBuzz le 27-07-2008 à 22:22:42
Reply

Marsh Posté le 27-07-2008 à 22:31:58    

merci, mais pas de table départements

Reply

Marsh Posté le 28-07-2008 à 00:44:29    

casul a écrit :

bonjour, tout le monde, j'aimerai de l'aide pour résoudre ce cas de requete sql s'il vous plait,
j'ai une table (oracle) qui s'appelle "voiture" dans cette table j'ai d'un coté les  "modeles" (750i, 323, slr, q7, 600...)  d'un autre coté j'ai des "départements" associés a ces "modeles"  (92, 95, 77, 02, 89...)
donc chaque "modeles" est rattaché a un seul "départements" à la fois mais un même "modeles" peut etre présent dans tout les "départements" (ex, il y a des "modeles" 750i "departements" 92, des "modeles" 750i "departements" 95, des 750i "departements" 02 etc...)
certains "modeles" sont donc présents dans tout les "départements", d'autres dans certains départements seulement (ex: il y a des q7 "départements" 95, des q7 "départements" 02, mais pas de q7 "départements" 89)
j'aimerai savoir si il est possible de faire un requête pour connaitre le ou les "modeles" qui sont présents dans tout les "départements" donc un résultat qui dirait que c'est  la 750i qui est présente dans tout les départements de france (ou a la fois la 750i, la 323, la 600 etc...)
je vous remercie beaucoup (bien sûr je suis un débutant vous l'aurez compris :) )


Impossible comme ça pour une raison simple : imagine que tu n'ai que 3 lignes dans la table : une 750i dans le 01, une 600 dans le 01 et une 600 dans le 02. Comment savoir si la France n'a pas que 2 départements ? (dans ce cas la 600 serait présente dans tous les déps, 01 et 02)
Tu peux te dire "j'ai qu'à prendre en compte qu'il y a 98 départements" : non seulement c'est crade et pas trop dans l'esprit des BDD relationelles, mais surtout ya le 2A et le 2B, et ptet des numéros qui n'existent pas vers la fin (?)

 

Si tu veux savoir si une voiture est présente dans tous les départements, il te faut d'une façon ou d'une une liste de tous les départements existants (indépendante de cette table)

 

edit : ou *au pire* le nombre de départements dispos, et tu compare COUNT(DISTINCT departement) à celui-ci (cf MagicBuzz)


Message édité par theredled le 28-07-2008 à 00:47:27

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 28-07-2008 à 20:34:45    

bonjour
en fait tout les département ne sont pas forcement présents, admettons qu'il y ait 500 voiture au total (il peut y  avoir plusieurs 600, plusieurs 635,ou un modele en exemplaire unique...) chacun de ces modeles est rattaché a un departement (donc un même modele dans plusieurs département,  ou un modele absent d'un ou plusieurs département)
 
 ce qu'on veut c'est simplement les points commun: quel sont les département (peu importe leur nombre) qui possedent au moins un modele de chaque voiture
merci de votre aide


Message édité par casul le 28-07-2008 à 20:35:00
Reply

Marsh Posté le 28-07-2008 à 21:16:29    

c'est ce qu'on appelle une division en sql, avec ici la particularité que tu la fais sur les champs d'une meme table donc il faut une synchronisation (réalisée grace aux alias+auto jointure)
 
pour la liste des voitures presentes dans tous les departements de la table:
 
select distinct modeles
from voiture v1
where not exists (select distinct departements
                        from voiture
                        MINUS
                        select distinct departements
                        from voiture v2
                        where v1.modeles=v2.modeles);
 
pour la liste des deps qui possedent tous les modeles de voiture:
 
select distinct departements
from voiture v1
where not exists (select distinct modeles
                        from voiture
                        MINUS
                        select distinct modeles
                        from voiture v2
                        where v1.departements=v2.departements);
 


Message édité par Scrypt le 28-07-2008 à 21:25:44
Reply

Marsh Posté le 28-07-2008 à 21:24:38    

je ne pourrai tester que demain, en tout cas merci beaucoup, je te tiens au courant

Reply

Marsh Posté le 31-07-2008 à 06:28:25    

merci beaucoup, j'ai pu m'en tirer avec ta requete
:)

Reply

Marsh Posté le 31-07-2008 à 09:49:07    

de rien  :jap:

Reply

Sujets relatifs:

Leave a Replay

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