Je voulais savoir comment par Commande SQL avoir le résultat de somme de combinaison de 3 nombre issu d'une table avec une seule colonne ex 3,5,8 ---< 8,11,13
Merci d'avance.
Je voulais savoir comment par Commande SQL avoir le résultat de somme de combinaison de 3 nombre issu d'une table avec une seule colonne ex 3,5,8 ---< 8,11,13
Merci d'avance.
Avec un produit cartésien
Exemple :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 with t1(c1, c2) as (select 1, 3 union all select 2, 5 union all select 3, 8 ) select t1.c2 as val1 , t2.c2 as val2 , t1.c2+t2.c2 as tot from t1 as t1 cross join t1 as t2 on t2.c1 > t1.c1
Résultat :
val1 val2 tot 3 5 8 5 8 13 3 8 11
Par contre, vous êtes vraiment en MySQL V4.0, il est grand temps de passer à la V8, la V4 est obsolète et les apports de la V8 par rapport aux versions antérieures sont considérables (CTE, requêtes récursives, fonctions OLAP...)
Salut HAFSISCLUB.
Ce ne sont pas des commandes mais des requêtes.Envoyé par HAFSISCLUB
Si je comprends bien, vous désirez la somme des couples issues de cette liste (3,5,8) :
--> 3 + 5 = 8
--> 3 + 8 = 11
--> 5 + 8 = 13
Code mysql : 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 -------------- START TRANSACTION -------------- -------------- set session collation_connection = "latin1_general_ci" -------------- -------------- DROP DATABASE IF EXISTS `base` -------------- -------------- CREATE DATABASE IF NOT EXISTS `base` DEFAULT CHARACTER SET `latin1` DEFAULT COLLATE `latin1_general_ci` -------------- -------------- DROP TABLE IF EXISTS `test` -------------- -------------- CREATE TABLE `test` ( `id` integer unsigned NOT NULL auto_increment primary key, `val` integer unsigned NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci` ROW_FORMAT=COMPRESSED -------------- -------------- insert into `test` (`val`) values (3),(5),(8) -------------- -------------- select * from `test` -------------- +----+-----+ | id | val | +----+-----+ | 1 | 3 | | 2 | 5 | | 3 | 8 | +----+-----+ -------------- select t1.val + t2.val as res from `test` as t1 cross join `test` as t2 where t1.id < t2.id -------------- +-----+ | res | +-----+ | 8 | | 11 | | 13 | +-----+ -------------- COMMIT -------------- Appuyez sur une touche pour continuer...
Cordialement.
Artemus24.
@+
Partager