salut
J'ai installé MySQL8 mais il ne supporte pas CTE
J'ai ce message.
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'cte1 AS
Version imprimable
salut
J'ai installé MySQL8 mais il ne supporte pas CTE
J'ai ce message.
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'cte1 AS
Nous donner le message d'erreur, c'est bien.
Nous donner la requête qui provoque l'erreur, ce serait mieux !
Salut S.H.
N'auriez-vous pas confondu MySql avec MariaDB ?
Les CTE sont dans la version MySql 8.0 et non dans la version MariaDB 10.2.
@+Citation:
Envoyé par S.H.
salut Artemus24
Où puis-je trouver le lien de MYSQL8?
parce que je l'ai téléchargé de:
https://dev.mysql.com/downloads/mysql/
Salut M.H.
Vous ne vous êtes pas trompé, il s'agit bien de la version MySql 8.0.11.
Par contre, je ne comprends pas votre question : "Où puis-je trouver le lien de MYSQL8?"
@+
salut Artemus24
quel est le lien just de mysql sans MariaDB
mon broblem
avec Navicat
et 127.0.0.1
Salut S.H.
Voici un script batch où l'on déclenche un script sql.
La variable d'environnement accède au répertoire bin, contenant l'exécutable "mysql".
Il suffit de remplacer la variable PATH par votre chemin à vous.
Par exemple : "set PATH=.;C:\Wamp\bin\mysql\mysql8.0.11\bin\;%PATH%".
L'astuce est que le nom du script batch (test.bat) porte le même nom que le script sql (test.sql).Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 @echo off setlocal enableDelayedExpansion chcp 1252 > nul set PATH=.;%WAMPSERVER%\bin\mysql\%MYSQL%\bin\;%PATH% SET FIC=%~nx0 SET FIC=%FIC:bat=sql% mysql < %FIC% --verbose --force endlocal pause exit
Voici un exemple de script SQL où j'utilise un CTE :
Et voici son exécution :Code:
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
66
67
68
69
70
71
72
73 SET AUTOCOMMIT = 0; START TRANSACTION; -- ======= -- Version -- ======= SELECT version(); -- ====================== -- Base de Données `base` -- ====================== DROP DATABASE IF EXISTS `base`; CREATE DATABASE `base` DEFAULT CHARACTER SET `latin1` DEFAULT COLLATE `latin1_general_ci`; use `base`; -- ============ -- Table `test` -- ============ CREATE TABLE `test` ( `id` INTEGER UNSIGNED NOT NULL auto_increment PRIMARY KEY, `pseudo` VARCHAR(255) NOT NULL, `point` INTEGER UNSIGNED NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci` ROW_FORMAT=COMPRESSED; -- ===================== -- Insertion dans `test` -- ===================== INSERT INTO `test` (`pseudo`,`point`) VALUES ('un',15),('deux',35),('trois',12),('un',8),('trois',25),('deux',35),('trois',2); -- ================ -- Vidage de `test` -- ================ select * from `test`; -- =========== -- Requête N°1 -- =========== with cte1 as (select pseudo, sum(point) as point from test group by pseudo ), cte2 as (select t1.pseudo, t1.point, count(t2.pseudo)+1 as rang from cte1 as t1 left outer join cte1 as t2 on t2.point > t1.point group by pseudo order by point desc ) select * from cte2; -- === -- Fin -- === COMMIT; SET AUTOCOMMIT = 1; exit
Vous constatez que j'utilise bien la version mysql 8.0.11. Et le CTE est bien pris en compte.Code:
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91 -------------- SET AUTOCOMMIT = 0 -------------- -------------- START TRANSACTION -------------- -------------- SELECT version() -------------- +-----------+ | version() | +-----------+ | 8.0.11 | +-----------+ -------------- DROP DATABASE IF EXISTS `base` -------------- -------------- CREATE DATABASE `base` DEFAULT CHARACTER SET `latin1` DEFAULT COLLATE `latin1_general_ci` -------------- -------------- CREATE TABLE `test` ( `id` INTEGER UNSIGNED NOT NULL auto_increment PRIMARY KEY, `pseudo` VARCHAR(255) NOT NULL, `point` INTEGER UNSIGNED NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci` ROW_FORMAT=COMPRESSED -------------- -------------- INSERT INTO `test` (`pseudo`,`point`) VALUES ('un',15),('deux',35),('trois',12),('un',8),('trois',25),('deux',35),('trois',2) -------------- -------------- select * from `test` -------------- +----+--------+-------+ | id | pseudo | point | +----+--------+-------+ | 1 | un | 15 | | 2 | deux | 35 | | 3 | trois | 12 | | 4 | un | 8 | | 5 | trois | 25 | | 6 | deux | 35 | | 7 | trois | 2 | +----+--------+-------+ -------------- with cte1 as (select pseudo, sum(point) as point from test group by pseudo ), cte2 as (select t1.pseudo, t1.point, count(t2.pseudo)+1 as rang from cte1 as t1 left outer join cte1 as t2 on t2.point > t1.point group by pseudo order by point desc ) select * from cte2 -------------- +--------+-------+------+ | pseudo | point | rang | +--------+-------+------+ | deux | 70 | 1 | | trois | 39 | 2 | | un | 23 | 3 | +--------+-------+------+ -------------- COMMIT -------------- -------------- SET AUTOCOMMIT = 1 -------------- Appuyez sur une touche pour continuer...
A titre indicatif, je vous communique l'en-tête produite à l'ouverture de la console.
Et comme vous, j'ai bien la version mysql 8.0.11 !Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1007 Server version: 8.0.11 MySQL Community Server - GPL Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Avez-vous une autre version MySql ou MariaDB sur votre ordinateur ?
Si oui, soit vous la désinstaller, soit vous faites en sorte d'avoir un autre port que le port 3306.
En principe, vous devez avoir le fichier "my.ini" dans le répertoire "C:\Wamp\bin\mysql\mysql8.0.11\".
Et dans ce fichier, le port doit être à 3306.
@+