existe-t-il une requete pour ce problème SVP ??

existe-t-il une requete pour ce problème SVP ?? - SQL/NoSQL - Programmation

Marsh Posté le 30-03-2006 à 19:51:22    

Hello
Je ne parviens pas à trouver une requete capable de résoudre la question suivante :(
En existe-t-il une?
Si oui merci de proposer vos solutions..
 
-- comment afficher le titre le plus vendu dans CHAQUE magasin et le nom du magasin? --
 
 
voici ci-dessous le contenu des 3 tables impliquées  
ainsi que le diagramme de la base de donnée  
(il s'agit de la base de donnée PUBS, fournie comme exemple dans le SGBD SQL Server 7 de microsoft)
 
http://img489.imageshack.us/img489/9083/basepubs9tl.jpg
 
http://img88.imageshack.us/img88/1126/tabletitles3me.jpg
 
http://img232.imageshack.us/img232/9584/tablesales3hm.jpg
 
http://img88.imageshack.us/img88/934/tablestores8kl.jpg
 
 
Et afin de lever toutes ambiguité dans l'énoncé du problème:
voici en rouge les lignes qui nous intéressent dans le résultat:

 
http://img236.imageshack.us/img236/9393/rsultat4zo.gif
 
 
 
d'avance merci


Message édité par lepisme le 30-03-2006 à 20:17:58
Reply

Marsh Posté le 30-03-2006 à 19:51:22   

Reply

Marsh Posté le 30-03-2006 à 19:52:19    

ça sent l'exercice de cours...[:dawao]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 30-03-2006 à 20:05:22    

en fait je me suis inspiré d'un exemple de cours d'il y a qques années maintenant,
dont j'ai moi-meme modifié l'énoncé
mais qui rend de fait l'exercice soit impossible soit très difficile..

Reply

Marsh Posté le 30-03-2006 à 20:06:04    

Tu as fait quoi avec quel résultat, pour l'instant? :??:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 30-03-2006 à 20:10:01    

lepisme a écrit :

en fait je me suis inspiré d'un exemple de cours d'il y a qques années maintenant,
dont j'ai moi-meme modifié l'énoncé
mais qui rend de fait l'exercice soit impossible soit très difficile..


on y croit très fort...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 30-03-2006 à 20:15:53    

skeye a écrit :

Tu as fait quoi avec quel résultat, pour l'instant? :??:


 
avec un collègue on a planché sur ce problème pendant 2H.. on a beau retourner tout dans tous les sens.. on se heurte à une impossibilité.. mais bon on n'est pas des spécialistes en BDD..
 
le truc (qui marche) le plus proche du résultat cherché est encore ceci:
 
http://img228.imageshack.us/img228/1774/exo5hj.gif
 
mais le fait de récupérer les max(qty) de chaque magasin ne me semble guère exploitable..

Reply

Marsh Posté le 30-03-2006 à 21:21:07    

je ferais un truc ainsi
 
select *
from (select sales.stor_id nom, sum(qty) nbr
from sales
group by sales.stor_id) t1
where nbr >= (select sum(qty)
                    from sales
                    where sales.stor_id = t1.stor_id
                    group by sales.stor_id);
 
voila ça doit être un truc ainsi... mais difficile à pondre sans pouvoir tester.

Reply

Marsh Posté le 31-03-2006 à 22:11:49    

merci de ta participation..
 
j'ai testé ta requete: ça génère une erreur dès la première ligne
Serveur: Msg 207, Niveau 16, État 3, Ligne 1
'stor_id' : Nom de colonne incorrect.

 
Quelque soient les noms de colonnes qu'on choisisse dans le select, le meme message persiste.
Le message d'erreur disparait lorsqu'on supprime la clause where:
 

Code :
  1. where nbr >= (select MAX(qty)
  2.                     from sales
  3.                     where sales.stor_id = t1.stor_id
  4.                     group by sales.stor_id);


 
En fait, j'ai tenté de comprendre ton code, mais j'ai du mal à comprendre à quoi sert cette dernière portion,
notamment quel role joue le   where sales.stor_id = t2.stor_id
 
Ca semble etre une condition de corrélation entre tables.. mais je ne vois pas très bien quelle présentement sa raison d'etre..
 
P.S. moi23372> veux-tu décrire quel était ton raisonnement stp (plus globalement, ça permet dans un premier temps de mettre de coté la syntaxe SQL )

Reply

Marsh Posté le 01-04-2006 à 09:15:22    

Il faut faire attention au fait que la table sales peut contenir plusieurs ventes d'un même ouvrage dans un même magasin ...
 
Essaye quelque chose comme :
 

Code :
  1. select st.stor_name, t.title, sum(sa.qty)
  2. from store st, sales sa, titles t
  3. where st.stor_id = sa.stor_id
  4. and t.title_id = sa.title_id
  5. group by st.stor_name, t.title
  6. having sum(sa.qty) =
  7. (select max(sum(qty))
  8. from (
  9. select t1.title, sum(sa1.qty)
  10. from store st1, sales sa1, titles t1
  11. where st1.stor_id = sa1.stor_id
  12. and t1.title_id = sa1.title_id
  13. and st1.stor_id = st.stor_id
  14. group by t1.title));


Message édité par Beegee le 01-04-2006 à 09:16:33
Reply

Sujets relatifs:

Leave a Replay

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