Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2010, 14h42   #1
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 548
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 548
Points : 29
Points : 29
Par défaut PRODUIT prix total= prix unitaire * quantité

Bonjour,


J'ai une BDD simple avec 2 tables "ensemble" et "composant", reliées par une clé étrangère avec le champs quantité.
Composant a un champs prix unitaire. J'aimerais savoir comment quel code dois je utiliser pour connaitre le prix total=prix unitaire * quantité.

Merci d'avance.
toutounesan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 15h16   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 977
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 977
Points : 18 221
Points : 18 221
Envoyer un message via MSN à CinePhil
Merci de respecter les règles de ce forum en donnant notamment la structure de tes tables (dans ton message, on ne sait pas quelles colonnes font la condition de jointure), la requête que tu as essayée, éventuellement un petit jeu de données et le résultat attendu.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 15h26   #3
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 548
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 548
Points : 29
Points : 29
C'est la référence de l'ensemble et la référence du composant qui font la jointure.

J'avais pensé à ça :
Code :
1
2
3
SELECT SUM([qté]*[prix]) AS [total]
  FROM COMPOSANT AS C, Ensemble AS E, intègre AS I
 WHERE (((I.ref)=E.ref) AND (C.ref=I.ref)
toutounesan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 07h27   #4
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 552
Points : 552
Bonjour,
Dans ton premier post tu parles de deux tables dans le deuxième il y en a trois.
On n'a toujours pas la structure des tables ni leur clé, ni les clé étrangère.
On ne sait pas de quoi tu veux calculer le prix total, par ensemble, pour toute la table pour un ensemble.

Quel est le problème avec la requete que tu nous a fourni, mis à part que les jointures ne sont pas normées, et qu'il y a un nombre de parenthèse impressionnant qui nuit à la lisibilité de la bête. Je l'a réécrit avec les jointures comme il faut.
Code :
1
2
3
4
5
6
SELECT SUM(qté*prix) AS total
  FROM COMPOSANT AS C
INNER JOIN  intègre AS I
ON C.ref=I.ref
INNER JOIN  Ensemble AS E
ON  I.ref=E.ref;
PS en relisant bien ta requête initiale il y a une parenthèse ouvrante qui ne ferme pas, je n'irait pas jusqu'à dire qu'il y a une parenthèse fermante manquante.
Cordialement
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 09h44   #5
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 548
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 548
Points : 29
Points : 29
j'ai 2 tables indépendantes
Ensemble et Composant, avec une table Intègre entre les 2, qui fait office de laison avec un champs qté (quantité).


La cardinalité entre intègre et ensemble c'est 0-1 (côté intègre) et 0-n pour Ensemble.

La cardinalité entre intègre et Composant c'est 1-n (côté) Composant et 0-1 (côté intègre)


La table Ensemble contient les champs
RefEns (cléprimaire)
DésignationEns
PrixVHT

Table composant:
RefComp (clé primaire)
DésignationComp
PrixHT


Table Intègre:
RefComp (clé)
RefEns (clé)
Qté

pour la table intègre je ne sais pas le nom du type de cette liaison mais ça va quand même et pareil pour les clés (je pense clés étrangères)


Donc voilà mon architecture
Pour d'autre questions, je suis là.
toutounesan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 20h05   #6
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 552
Points : 552
Bonjour
Au vu des tables cela ressemble à une nomenclature.
En revanche je n'ai pas compris à quoi servait le PrixVHT de la table Ensemble, à moins que ce soit ce que tu essaies de calculer.
Tu n'as pas répondu à
Citation:
On ne sait pas de quoi tu veux calculer le prix total, par ensemble, pour toute la table pour un ensemble.
Ni à
Citation:
Quel est le problème avec la requete que tu nous a fourni,
Il nous faudrait aussi ton SGBD
Tes colonnes changent de noms à chaque post cela devient gênant.


Code :
1
2
3
4
5
6
7
8
9
10
SELECT	E.RefEns,
	DésignationEns,
	 SUM([qté]*prix) AS prix_de_l_ensemble
FROM COMPOSANT AS C
	INNER JOIN  [intègre] AS I
	ON C.RefComp=I.RefComp
INNER JOIN  Ensemble AS E
	ON  I.RefEns=E.RefEns
GROUP BY E.RefEns,
DésignationEns;
A+
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 21h26   #7
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 548
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 548
Points : 29
Points : 29
Je voudrais juste afficher la somme totale des composants pour un ensemble

Comment peut on intégrer dans un message une image pour le SGBD?

prix taotal= prix Achat unitaire du composant * nombre de ce composant

chaque ensemble peut avoir plusieurs composants

pour le prix vente d'un ensemble, je m'y occupe pas trop On peut le saisir et l'afficher avec une création d'état
toutounesan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 02h12   #8
Membre habitué
 
Avatar de bobmidou
 
Inscription : avril 2008
Messages : 116
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 116
Points : 128
Points : 128
Salut

Si j'ai bien compris tes tables essaye ça :
Code :
1
2
3
4
5
6
 
SELECT intègre.RefEns , count(*),sum(intègre.Qté * composant.prixht)
FROM Ensemble, intègre, composant
WHERE composant.RefComp = intègre.RefComp  AND
Ensemble.RefEns = intègre.RefEns
GROUP BY intègre.RefEns
J'ai ajouté intègre.Refens et count(*) pour voir le nombre de composants pour chaque ensemble. mais tu peux faire mieux avec join.


Bonne chance
__________________
--<< Il n y a que les clous qui ne plantent pas >>---
bobmidou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 07h49   #9
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
c'est la même requête que soazig, en non normalisée que vous postez
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 14h55   #10
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 548
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 548
Points : 29
Points : 29
je vais essayer plus tard, au pire dans la soirée. Je vous dirais ce que ça me donne. J'utilise Windev et je fais une génération d'état
toutounesan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 18h46   #11
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 548
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 548
Points : 29
Points : 29
en fait j'ai crée un nouvel attribut "prixTotal" associé à l'association "intégre", comme ça au lieu de faire une requête compliqué avec une liaison j'ai juste à appelé beaucoup plus simplement avec windev cet attribut pour faire un Etat
toutounesan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 22h13   #12
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 552
Points : 552
Bonjour,
Tu veux le prix d'un ensemble c'est ce qu'on t'a donné bobmidou et moi.
Qu'ont ces requêtes? Est-ce qu'elles ne donnent pas le bon résultat, est-ce que tu as un message d'erreur.

Pourquoi veux tu faire une horreur pareille mettre le prixTotal de l'association intègre? De plus cela ne règlera pas le problème, il faudra que tu l'alimentes?
Et comme feras-tu?

Je sais que windev ou hyperfile ne sont pas au mieux au niveau sql et fonction d'agrégation, mais je pensais néanmoins qu'ils avaient fait des progrès depuis 2001.

A+
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2010, 08h16   #13
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 548
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 548
Points : 29
Points : 29
c'est le prix total de tous les composants par ensemble.

J'utilise la version express de windev 15 (de 2010) et c'est facile à mettre en oeuvre
toutounesan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2010, 09h25   #14
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 552
Points : 552
Bonjour,
Citation:
c'est le prix total de tous les composants par ensemble.
C'est ce qu'on t'a fourni avec bobmidou.

Citation:
prix taotal= prix Achat unitaire du composant * nombre de ce composant
Nous t'avons proposé quantité * prixht est-ce que la colonne qté ne contient pas le nombre de composant d'un ensemble?
Est-ce que le prixht n'est pas le prix d'achat unitaire du composant?
As-tu au moins testé! ou tu postes juste pour nous faire perdre notre temps.
On te propose des requêtes, et tu continues à poster sans nous dire si tu les as essayé, si elles conviennent? et si elles ne conviennent pas?

Citation:
J'utilise la version express de windev 15 (de 2010) et c'est facile à mettre en oeuvre
Je n'ai pas dit que c'était compliqué à mettre en oeuvre mais que lorsque j'ai essayé de l'utiliser le SQL était pauvre.

Comment vas-tu alimenter le prixTotal de l'association intègre?
A+
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h48.


 
 
 
 
Partenaires

Hébergement Web