Aide en postgreSQL

Résolu/Fermé
mr linux Messages postés 11 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 7 novembre 2009 - 19 mai 2009 à 15:04
mr linux Messages postés 11 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 7 novembre 2009 - 25 mai 2009 à 22:38
Bonjour à toutes et à tous, j'espère que vous allez bien
chers amis j'ai besoin de votre aide...j'ai une base de données qui contient les tables suivantes:
CLIENT(NCLI,Nom,[Adresse],[ville])
COMMANDE(NCOM,Client,DateCommande,[DateLivraison])
Client réference NCLI
PRODUIT(NPRO,Libelle,Prix,[Stock],[Poids])
DETAIL(Commande,Produit,Quant)
Commande référence NCOM
Produit référence NPRO

je veux la requête qui me donne les produits commandés par tous les clients de la ville Casablance..

je serais reconnaissant si vous m'aidiez..sinon, merci d'avance...
A voir également:

6 réponses

estofilo Messages postés 9 Date d'inscription samedi 23 mai 2009 Statut Membre Dernière intervention 24 mai 2009 8
24 mai 2009 à 22:44
Voyons voir si j'ai compris la nuance. Nouvelle version: on considère tous les produits achetés par des clients de Casablanca, mais on ne garde que ceux dont le nombre d'acheteurs DISTINCTS est égal au nombre total de clients de Casablanca (donc les produits qui ont été acheté par tous les clients de cette ville)

SELECT produit.numero_produit
FROM produit,commande,client,detail
WHERE produit.numero=detail.numero_produit
AND commande.numero_client=client.numero_client
AND detail.commande=commande.numero_commande
AND client.ville='casablanca'
GROUP BY produit.numero_produit
HAVING count(distinct client.numero_client) =(select count(*) from client where ville='casablanca')
2
mr linux Messages postés 11 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 7 novembre 2009
19 mai 2009 à 15:46
où êtes vous les amis??
j'ai vraiment besoin de votre aide.....
0
estofilo Messages postés 9 Date d'inscription samedi 23 mai 2009 Statut Membre Dernière intervention 24 mai 2009 8
23 mai 2009 à 20:05
C'est une jointure classique multi-tables

SELECT produit.nom_du_produit
FROM produit,commande,client,detail
WHERE produit.numero=detail.numero_produit
AND commande.numero_client=client.numero_client
AND detail.commande=commande.numero_commande
AND client.ville='la ville que tu cherches'
0
mr linux Messages postés 11 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 7 novembre 2009
24 mai 2009 à 00:33
merci estofilo pour l'aide.mais c'est pas ce que je cherche.

en fait la requête que je cherche doit me rendre les produits qui sont demandés par tous les clients de la ville casablanca alors que la requête que tu as proposée me donne les prodits demandés par les clients de casablanca.

j'espère que tu as constaté la différence.
et merci....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 331
24 mai 2009 à 01:27
C'est une division relationnelle. Ca se prend de plusieurs manières selon sur quoi on travaille et ça peut être très tordu.
Voilà quelque-chose qui devrait marcher dans ton cas, le principe est de sélectionner tous les produits commandés par le nombre de personne de Casablanca :
SELECT npro
FROM detail, commande
WHERE produit = npro
GROUP BY npro
HAVING count(*)=(SELECT count(*) FROM client WHERE ville='Casablanca')
0
mr linux Messages postés 11 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 7 novembre 2009
25 mai 2009 à 22:38
merci à vous Yoan et estofilo
les requêtes que vous avez proposées doivent resoudre le problème..merci bcp
et bonne continuation...
0