3 tables avec requête complexe
yamino
-
Naima -
Naima -
Voilà mon problème :
J’ai 3 tables ‘FOURNITURES’, ‘FOURNISSEURS’, ‘PRIX’
Ces tables sont reliées entre-elle par une relation 1-n.
La table FOURNITURES :
idFourniture
Quantité
Description
…
La table FOURNISSEURS :
idFournisseur
Nom
Adresse
…
La table PRIX :
idExtFourniture
idExtFournisseur
Prix
Je désirais savoir à l’aide d’une requête SQL, pour chaque fourniture quelle est le fournisseur le moins chère, et ce, en une seul requête
Merci de votre aide.
J’ai 3 tables ‘FOURNITURES’, ‘FOURNISSEURS’, ‘PRIX’
Ces tables sont reliées entre-elle par une relation 1-n.
La table FOURNITURES :
idFourniture
Quantité
Description
…
La table FOURNISSEURS :
idFournisseur
Nom
Adresse
…
La table PRIX :
idExtFourniture
idExtFournisseur
Prix
Je désirais savoir à l’aide d’une requête SQL, pour chaque fourniture quelle est le fournisseur le moins chère, et ce, en une seul requête
Merci de votre aide.
A voir également:
- 3 tables avec requête complexe
- Ai suite 3 - Télécharger - Optimisation
- Tables des matières word - Guide
- Picasa 3 - Télécharger - Albums photo
- Photorecit 3 - Télécharger - Visionnage & Diaporama
- Combien de combinaison possible avec 3 chiffres - Forum Réseaux sociaux
4 réponses
Bonjour, Je viens de lire votre question ( un peu tard), mais comme j'adore les req SQL, j'ai voulu seulement faire une remarque, La requête proposé par Tittom est la meilleur est marchera surement seulement pour améliorer le temps de réponse je crois qu'il est recommandé d'ajouter d'autre jointures au niveau table des prix "P2":
SELECT idFourniture
, Description
, prix
, idFournisseur
, Nom
, Adresse
FROM fournisseurs, fournitures, prix p1
WHERE idFournisseur = idExtFournisseur
AND idFourniture = idExtFourniture
AND prix = (
SELECT MIN(p2.prix)
FROM prix p2
WHERE p2.idExtFourniture = p1.idExtFourniture
and p2.idExtFournisseur = fournisseurs.idfournisseur
and p2.idExtFourniture = fourniture.idfourniture)
SELECT idFourniture
, Description
, prix
, idFournisseur
, Nom
, Adresse
FROM fournisseurs, fournitures, prix p1
WHERE idFournisseur = idExtFournisseur
AND idFourniture = idExtFourniture
AND prix = (
SELECT MIN(p2.prix)
FROM prix p2
WHERE p2.idExtFourniture = p1.idExtFourniture
and p2.idExtFournisseur = fournisseurs.idfournisseur
and p2.idExtFourniture = fourniture.idfourniture)
Bonjour
Moi, je le vois comme ça!!
Bon courage
Maily :-)))) L'hirondelle ne fait pas le printemps
mais le dromadaire fait le désert.
Moi, je le vois comme ça!!
SELECT Description, Nom, Min(prix) FROM PRIX, FOURNISSEURS, FOURNITURES WHERE idExtFourniture=idFourniture AND idExtFournisseur= idFournisseur
Bon courage
Maily :-)))) L'hirondelle ne fait pas le printemps
mais le dromadaire fait le désert.
Bonjour,
La requête de Maily me semble douteuse (utilisation d'une fonction de regroupement MIN avec des colonnes normales sans GROUP BY).
Essaye ceci :
--
Tittom (ça c'est de la signature)
La requête de Maily me semble douteuse (utilisation d'une fonction de regroupement MIN avec des colonnes normales sans GROUP BY).
Essaye ceci :
SELECT idFourniture , Description , prix , idFournisseur , Nom , Adresse FROM fournisseurs, fournitures, prix p1 WHERE idFournisseur = idExtFournisseur AND idFourniture = idExtFourniture AND prix = ( SELECT MIN(p2.prix) FROM prix p2 WHERE p2.idExtFourniture = p1.idExtFourniture )
--
Tittom (ça c'est de la signature)