[MySQL] Débutant, requêtes moyennes

info
Invité n'ayant pas de compte PHPfrance

13 oct. 2007, 20:17

salut,
je suis un debutant dans le langage SQL,
et ca fait 2 jours pour resoulut 3 requete et ca marche pas :x
je vous une aide.
voila les requete:
la table est:
Produit(code,nom,prix,categorie)
bon il ya deux type de categorie:
L et M.

1) déterminer les produits les plus chères pour chaque catégorie.
2) afficher les produit ayant un prix qui dépasse la moyenne dett les prix.
3) établir l'analyse croise suivante:

exemple:
Matériel Logiciel
Nombre 3 2
Moyen 76 3000

et merci d'avance :wink:

Eléphant du PHP | 443 Messages

13 oct. 2007, 20:50

Salut,

J'avais un peu de temps, alors voilà:
Struture utilisée:

Code : Tout sélectionner

create table Produit ( code int not null primary key auto_increment , nom varchar(50) not null, prix float(53) not null, categorie varchar(10) not null ); insert Produit (nom, prix, categorie) values ('ABIT AB9 (Intel P965 Express) - ATX', 122.9, 'Matériel'); insert Produit (nom, prix, categorie) values ('Alim 300W ATX CE sans boitier', 13.95, 'Matériel'); insert Produit (nom, prix, categorie) values ('Textorm Boîtier 2"1/2 Hotsync', 19.95, 'Matériel'); insert Produit (nom, prix, categorie) values ('Adaptec PCI ASC 29160 SCSI160 kit', 269, 'Matériel'); insert Produit (nom, prix, categorie) values ('Eset NOD32 - Pack 5 postes (français, WINDOWS)', 179.01, 'Logiciel'); insert Produit (nom, prix, categorie) values ('Nero 8 (français, WINDOWS)',78.51, 'Logiciel'); insert Produit (nom, prix, categorie) values ('Drive Clone 2 (français, WINDOWS)', 36.9, 'Logiciel'); insert Produit (nom, prix, categorie) values ('Mandriva Linux Powerpack+ 2007 Spring (français)', 189.49, 'Logiciel'); insert Produit (nom, prix, categorie) values ('Microsoft Windows Vista Édition Familiale Premium (français)', 338.99, 'Logiciel'); insert Produit (nom, prix, categorie) values ('Pack OFFICE One 6.5 (français, WINDOWS)', 69.89, 'Logiciel');
Liste de tes requêtes:

Code : Tout sélectionner

-- # 1 select * from produit p inner join ( select categorie, max(prix) as prix from produit group by categorie ) cm on p.categorie = cm.categorie and p.prix = cm.prix -- # 2 select * from produit p inner join ( select categorie, avg(prix) as prix_moyen from produit group by categorie ) cm on p.categorie = cm.categorie and p.prix > cm.prix_moyen -- # 3 select categorie, count(*) as nombre, avg(prix) as moyen from produit group by categorie with rollup
Tracker.

[edit]
Pour la seconde, j'ai considéré que tu voulais les articles dont le prix était supérieur à la moyenne de leur catégorie. Si tu veux l'info par rapport à la moyenne totale:

Code : Tout sélectionner

-- # 2 select * from produit p inner join ( select avg(prix) as prix_moyen from produit ) cm on p.prix > cm.prix_moyen
a+

info
Invité n'ayant pas de compte PHPfrance

16 oct. 2007, 23:48

Salut,
Voila c’est juste je vous remercier infiniment, ca marche j’ai bien exécuté les requêtes.
Vous êtes le meilleure Mr.tracker je vous félicite.
Merci une autre fois est a bien tot.


:o

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 oct. 2007, 00:05

Modération :
Merci d'utiliser un titre clair et qui correspond bien à ta demande.

Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute