mechkurt | Bon jusqu'à présent j'étais resté dans des requêtes simple donc pas taper JE saurais le faire en php MySQL mais bon ce serais vraiment con et faut jamais perdre une occasion d'apprendre Je veux traiter les données d'une table bordélique pour en faire des stats...
Le pb (outre le fait que je soit une quiche en SQL) c'est que dans la ma table source j'ai un timestamp et que dans ma table destinataire j'ai un varchar 2 pour le mois et un varchar 4 pour l'année...
ma table source (j'ai viré tout les champs useless) :
Code :
- CREATE TABLE `acollecte` (
- `numero` int(11) NOT NULL auto_increment,
- `type` varchar(35) NOT NULL default '',
- `date` timestamp(14) NOT NULL,
- [...]
- PRIMARY KEY (`numero`),
- KEY `deja` (`deja`),
- KEY `type` (`type`)
- ) TYPE=MyISAM AUTO_INCREMENT=12412 ;
|
ma table de destination :
Code :
- CREATE TABLE `ariane_contact_test` (
- `ID` int(10) NOT NULL auto_increment,
- `mois` char(2) NOT NULL default '00',
- `annee` varchar(4) NOT NULL default '0000',
- `ariane` varchar(100) NOT NULL default '',
- `compteur` int(4) NOT NULL default '1',
- PRIMARY KEY (`ID`),
- KEY `mois` (`mois`,`annee`)
- ) TYPE=MyISAM AUTO_INCREMENT=158 ;
|
et ma requête qui marche pas:
Code :
- -- insérer dans la table de stats
- INSERT INTO `ariane_contact_test` (`mois`, `annee`, `ariane`, `compteur`)
- SELECT (SUBSTRING(`date`,4,2), SUBSTRING(`date`,0,4), CONCAT('bckup:',`type`), count( * ))
- FROM `acollecte`
- -- pour les enregistrement superieur au 05/03/2007 a 17:25:10 (avant ca merdait)
- WHERE `date` >= 20070305172510
- -- je groupe mes enregistements pour que le count fonctionne
- GROUP BY `type`, SUBSTRING(`date`,4,2), SUBSTRING(`date`,0,4)
|
qui me renvoie:
Citation :
#1064 - You have an error in your SQL syntax near ' SUBSTRING(`date`,0,4), CONCAT('bckup:',`type`), count( * ))
FROM `acollecte`
' at line 3
|
J'ai essayé plusieurs variantes (avec/sans ( ) ` ' ", les élément placé a d'autres endroit, un DATE_FORMAT() au lieu d'un SUBSTRING()) mais rien n'y fait...
Merci d'éclairer ma lanterne... |