sql requete aide please - SQL/NoSQL - Programmation
Marsh Posté le 27-11-2003 à 16:50:41
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
Quelle Base
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????
Marsh Posté le 27-11-2003 à 17:14:37
Si tu me dis ORACLE, j'ai une solution toute simple !
Si tu me dis MySql 3.x, c'est pas possible en une seule requête.
Je vais pas me faire chier à pondre une requête que tu ne pourras pas utiliser !
En GROS :
Merci de poser des questions en précisant le contexte !
Marsh Posté le 27-11-2003 à 17:40:02
ID_1 clé primaire
ID_2 clé primaire
et tu veux le minimum pour chacun des couples ID_1, ID_2 ?
Etant donné que un couple ID_1, ID_2 est une clé primaire, t'auras toujours qu'un enregistrement associé à ce couple donc le minimum est pas difficile à trouver, c'est LA valeur pour ce couple.
Ou alors tu t'es trompé dans ta description des champs
Marsh Posté le 27-11-2003 à 17:57:10
c'est vrai que c'est un peu plus compliqué que ca
mais ID_A n'est pas clé primaire et donc par conséquant on peut avoir ca :
table B
ID_1 | ID_2 | VAL | ID_A | Autres champs
------|-------|------|-------|---------
1 | 2 | 34 | 12 |
------|-------|------|-------|---------
1 | 3 | 12 | 5 |
------|-------|------|-------|---------
2 | 1 | 1 | 4 |
------|-------|------|-------|---------
2 | 2 | 15 | 5 |
table A
id_a | lib_a |
------|-------|
12 | balba |
5 | labao |
4 | abj |
réponse à la requete recherchée :
id_1 id_2 lib_a
-----|-------|--------
1 3 labao
2 1 abj
Marsh Posté le 27-11-2003 à 18:28:22
select |
Impossible en MySql 3.X !
Mais possible avec Oracle
Marsh Posté le 27-11-2003 à 19:07:44
je vais tester ca demain, mais si ca marche j'avoue que t'y connais drolement
Marsh Posté le 28-11-2003 à 10:34:45
ca ne marche pas
parce que lorsque IN est utilisé on ne peut pas faire un select sur plusieurs champs!
mais c'est bon j'ai trouvé
select
B.ID_1,
B.ID_2,
B.VAL,
A.LIB_A
from
B,A
Where
B.ID_A=A.ID_A
and B.VAL = (select min(B1.val) from B1 (instance de B)
where B1.id_1=B.id and B1.id_2=B.id_2)
;
et ca marche
Marsh Posté le 28-11-2003 à 11:25:28
Bon, y'a bien des bugs dans ma requête, mais y'a des problèmes :
Tu cherche le mini de VAL, mais pour B.ID_1, pas pour le couple ID_1 et ID_2. Sinon çà ne vaux rien dire puisque ID_1 + ID_2 est la cléf primaire... Donc pour chaque couple t'as qu'une seule valeur de VAL...
Ta requête :
select |
Ne marche pas !
Corrigée comme çà :
select |
Le résultat est :
ID_1 ID_2 VAL LIB_A |
En fait pour chaque ID_1, tu cherche le ID_2 qui a le val le plus petit.
En fait ce que tu veux c'est :
select |
Qui donne bien :
ID_1 ID_2 VAL LIB_A |
A+
Marsh Posté le 28-11-2003 à 11:43:39
oui c'est vrai qu'il ya d'autre champs.
effectivement dans ma requête il y avait un _1 d'oublié
Mais c'est bon c'est bien ce que je recherche.
encore merci
Marsh Posté le 27-11-2003 à 16:34:30
j'ai deux tables :
A et B
A
ID_A clé primaire
LIB_A
B
ID_1 clé primaire
ID_2 clé primaire
VAL
ID_A
Ce qu'il me faut c'est trouver pour chacune des combinaisons ID_1,ID_2 la valeur minimum de VAL et le LIB de du ID_A associé.
la requete suivante fait le resultat escompté sauf que je n'ai pas le Lib_A
select B.ID_1, B.ID_2, min(B.VAL)
from B
GROUP BY B.ID_1,B.ID_2
;
Le problème c'est que je n'ai pas le libellé meme si le resultat est parfait
select B.ID_1, B.ID_2, min(B.VAL),A.LIB_A
from B,A
Where B.ID_A=A.ID_A
GROUP BY B.ID_1,B.ID_2,A.LIB_A
;
le problème c'est que je n'est pas besoin de A.LIB_A dans le groupe by comment faire sans.
il me faut les enregistrement de la première requete avec les champs B.ID_1,B.ID_2 et A.LIB_A
A l'aide
je sais ce n'est pas tres compréhensible mais ca ne doit pas être dur!!