Bonjour,
Ma table A possede deux champs article,prix.
Quels sont les articles que je peux acheter pour 100 euro ?(pas d'article en double)
Comment construire cette requete ?
Merci
Bonjour,
Ma table A possede deux champs article,prix.
Quels sont les articles que je peux acheter pour 100 euro ?(pas d'article en double)
Comment construire cette requete ?
Merci
SELECT DISTINCT Article
FROM MaTable
WHERE PRIX = 100
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Bonjour,
J'ai oublie de preciser la somme des prix de ces articles <=100
Merci
Est ce que tu ne chercherais pas plutot à faire quelque chose du genre:
Là on se limite à l'achat de 2 articles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT DISTINCT t1.article, t2.article FROM MaTable t1, MaTable t2 WHERE t1.article != t2.article and (t1.prix + t2.prix) <= 100
C'est un peu lourd ce que tu demandes... Dans le sens où la requête est exponnentielle. Ou plutôt la procédure dans ce cas.
Bonjour,
La requete ne concerne que sur 1000 enregistrement environs
Tout se trouve dans la meme table.
@Rei Angelus
Je ne peux me limiter à deux articles
@BiMouXeTTe
As tu une solution ?
Merci
Ca sent l'usine à gaz tout ça, tu n'as pas quelques limitations du genre:
- prix minimun d'un article,
nombre d'articles max achetables,
etc...
Dans tous les cas, je pense que la procédure s'impose.
Bonjour,
la seule chose que je peux faire c'est limiter la prix total.
@Rei Angelus
'Dans tous les cas, je pense que la procédure s'impose.'
Une explication serait le bienvenue pour ' la procedure'
Merci
Une procédure est un ensemble de requêtes et de mots clefs (FOR, IF, ELSE...) dans un bloc entouré de BEGIN et END.
A propos
Je travail sous vb6 et access
Un petit exple serait le bienvenue
Merci
Et là ce n'est plus de la simple requête mais plus de la programmation.Envoyé par BiMouXeTTe
C'est vrai lol, mais c'est spécifique au SQL, tu ne vas pas chercher des trucs dans des fichiers et tout.
enibris, je te conseille de réfléchir simplement... Du style, est-ce que ce sera fonctionnel ?
C'est un problème de combinatoire, du SQL seul ne peut répondre à cette problématique.
Ex : voici un jeu d'essai (qu'il serait sympa de fournir lors de la demande initiale) :
Si on veut la liste des couples d'articles répondant la la condition requise, on aura la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CREATE TABLE Article ( id NUMBER (10), ref VARCHAR2 (16), prix NUMBER (12,2)); INSERT INTO Article VALUES (1, 'Art 1', 50); INSERT INTO Article VALUES (2, 'Art 2', 30); INSERT INTO Article VALUES (3, 'Art 3', 60); INSERT INTO Article VALUES (4, 'Art 4', 10); INSERT INTO Article VALUES (5, 'Art 5', 40); COMMIT;
J'ai mis la condition " AND A1.id < A2.id" car sinon, on aura des doublons style (Art1, Art2) puis (Art2, Art1).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SELECT A1.ref, A1.prix, A2.ref, A2.prix, (A1.prix + A2.prix) AS Somme FROM Article A1, Article A2 WHERE (A1.prix + A2.prix) <= 100 AND A1.id < A2.id ORDER BY A1.ref, A2.ref; REF PRIX REF PRIX SOMME ---------------- ---------- ---------------- ---------- ---------- Art 1 50 Art 2 30 80 Art 1 50 Art 4 10 60 Art 1 50 Art 5 40 90 Art 2 30 Art 3 60 90 Art 2 30 Art 4 10 40 Art 2 30 Art 5 40 70 Art 3 60 Art 4 10 70 Art 3 60 Art 5 40 100 Art 4 10 Art 5 40 50
Le Order By est là pour faire joli ...
Idem, si on veut les triplets d'articles ...
Bref, il est préférable de se tourner vers un langage procédural pour récupérer toutes les combinaisons d'articles possibles ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT A1.ref, A1.prix, A2.ref, A2.prix, A3.ref, A3.prix, (A1.prix + A2.prix + A3.prix) AS Somme FROM Article A1, Article A2, Article A3 WHERE (A1.prix + A2.prix + A3.prix) <= 100 AND A1.id < A2.id AND A2.id < A3.id ORDER BY A1.ref, A2.ref;
Bon courage,
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément." Nicolas Boileau
"Expliquer empêche de comprendre si cela dispense de chercher"
Quiz Oracle : venez tester vos connaissances !
La FAQ Oracle : 138 réponses à vos questions
Aidez-nous à la compléter
Bonjour,
Merci Xo
Cela tombe bien mon programme utilise deja les combinaisons
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager