Bonjour à tous et à toutes,
J'ai essayé de résoudre mes questions sur des requêtes de mises à jour.
Pouvez-vous me dire si cela peut fonctionner.
Merci pour vos conseils.![]()
Bonjour à tous et à toutes,
J'ai essayé de résoudre mes questions sur des requêtes de mises à jour.
Pouvez-vous me dire si cela peut fonctionner.
Merci pour vos conseils.![]()
Peux-tu donner un exemple du résultat que tu veux obtenir ?
Voici le résultat que tu obtiens actuellement:
Je ne pense pas que ce soit ce que tu veux
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
18
19
20
21
22 MATERIAUX no_mat code_mat 1 A 2 B 3 C ENTREPOTS (avant MAJ) no_ent no_mat 1 1 1 2 2 1 2 2 2 3 ENTREPOTS (aprest MAJ) no_ent no_mat memo 1 1 5 1 2 5 2 1 5 2 2 5 2 3 5![]()
Bonjour,
je vois que vous avez avancé depuis cette discussion là mais pourquoi écrivez-vous dans votre document word et pas sur le forum ?
Je cherche à obtenir que la colonne memo de type varchar2(65), contienne le nombre d'entrepôts par matériaux .
Envoyé par plaineR
Donc vous voulez par exemple que le champ mémo de la 1ere ligne, qui concerne le matériau 1 dans l'entrepot 1 contienne le chiffre 2 puisqu'il y a 2 entrepots qui contiennent du matériau 1 ?Envoyé par dauphin34000
Et que la dernière ligne, qui concerne le matériau 3 dans l'entrepot 2 contienne le chiffre 1 puisque l'entrepot 2 est le seul à possèder du matériau 3 ?
Moi j'aurai mis cette information dans la table matériau plutôt... Car l'information va se répeter pour chaque ligne du même matériau pour des entrepots différents.
Cela devrait mettre dans la colonne memo le nombre de stages et la matière
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 Avec un autre exemple : J'ai une table stages elle contient : no_stage number(38) code_stage varchar2(6) memo varchar2(65) mat_no_matiere number(38) et une table matieres elle contient : no_matiere number(38) code_mat varchar2(3) libel_mat varchar2(240) Les questions : 1 - Je dois valoriser la colonne memo de la table "stages", avec le nombre de stages de la matière. 2 - Je dois améliorer la requête précédente : En rajoutant le code matière. Avec la fonction concat Pour la question 1 si on fait : update stages set memo=(select count(no_stage) from matieres m, stages st where m.no_matiere=st.mat_no_matiere); cela fonctionne mais la colonne memo contient le même chiffre pour tous, je pense que ce n'est pas normal ? Pour la question 2 si on fait : update stages set memo=(select concat(count(st.no_stage),m.code_mat) from matieres m, stages st where m.no_matiere=st.mat_no_matiere); Oracle m'indique : ORA-00937: la fonction de groupe ne porte pas sur un groupe simple
1. Tu ne fais l'update d'une seule colonne tu en mets 2 dans ton select
2. Quand tu utilises une fonction d'aggrégation, tu es obligé de faire un group by sur les colonnes qui ne sont pas "aggréguées"
ex :
3. Comme tu as un = ton select doit ne ramener qu'une seule ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select col1, count(*) from matable group by col1;
Bref, il y a encore du travail pour que ta requête fonctionne.![]()
=> Commence par écrire le select tel que tu veux le résultat.
Enfin es-tu sûr que ta colonne memo est dans la table stages, il m'aurait paru plus logique qu'elle soit dans la table matières.![]()
Partager