Rechercher : dans
Par :

3 tables avec requête complexe

Dernière réponse le 30 mar 2004 à 10:04:03 yamino, le 25 mar 2004 à 15:00:07 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « 3 tables avec requête complexe » dans :
Google Hacks - Automatiser les requêtes complexes Voir Google Hacks est un logiciel open source totalement gratuit qui permet de générer automatiquement des requêtes complexes pour rechercher de la musique, des livres, des programmes, des polices, des vidéos, etc. Google Hacks est une véritable...

1

maily, le 25 mar 2004 à 17:51:03

Bonjour
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.

Répondre à maily

2

Tittom, le 25 mar 2004 à 19:06:11

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 :

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)

Répondre à Tittom

3

yamino, le 25 mar 2004 à 19:33:53

Super TITTOM cela fonctionne.
Grand merci pour ta réponse.

Merci aussi à maily

Répondre à yamino

4

 Naima, le 30 mar 2004 à 10:04:03

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)

Répondre à Naima
Collection CommentÇaMarche.net