requete SQL parse timestamp => 2 champs string

requete SQL parse timestamp => 2 champs string - SQL/NoSQL - Programmation

Marsh Posté le 21-12-2007 à 14:54:16    

Bon jusqu'à présent j'étais resté dans des requêtes simple donc pas taper [:azitwaz]  
 
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 :
  1. CREATE TABLE `acollecte` (
  2.   `numero` int(11) NOT NULL auto_increment,
  3.   `type` varchar(35) NOT NULL default '',
  4.   `date` timestamp(14) NOT NULL,
  5. [...]
  6.   PRIMARY KEY  (`numero`),
  7.   KEY `deja` (`deja`),
  8.   KEY `type` (`type`)
  9. ) TYPE=MyISAM AUTO_INCREMENT=12412 ;


ma table de destination :

Code :
  1. CREATE TABLE `ariane_contact_test` (
  2.   `ID` int(10) NOT NULL auto_increment,
  3.   `mois` char(2) NOT NULL default '00',
  4.   `annee` varchar(4) NOT NULL default '0000',
  5.   `ariane` varchar(100) NOT NULL default '',
  6.   `compteur` int(4) NOT NULL default '1',
  7.   PRIMARY KEY  (`ID`),
  8.   KEY `mois` (`mois`,`annee`)
  9. ) TYPE=MyISAM AUTO_INCREMENT=158 ;


 
et ma requête qui marche pas:

Code :
  1. -- insérer dans la table de stats
  2. INSERT INTO `ariane_contact_test` (`mois`, `annee`, `ariane`, `compteur`)
  3. SELECT (SUBSTRING(`date`,4,2), SUBSTRING(`date`,0,4), CONCAT('bckup:',`type`), count( * ))
  4. FROM `acollecte`
  5. -- pour les enregistrement superieur au 05/03/2007 a 17:25:10 (avant ca merdait)
  6. WHERE `date` >= 20070305172510
  7. -- je groupe mes enregistements pour que le count fonctionne
  8. 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...

Reply

Marsh Posté le 21-12-2007 à 14:54:16   

Reply

Marsh Posté le 21-12-2007 à 16:38:48    

jutse pour etre sur, un timestamp , chez moi , c'est le nombre de secondes depuis le 1 janvier 1970
 
donc ca ne resemble pas du tout à 20070305172510


---------------

Reply

Marsh Posté le 21-12-2007 à 17:20:55    

c'est pas faux...
 
en même temps je me contente de donner l'export php myadmin ;-)
 
toute façon pouvez laisser tomber, je me suis débrouillé en php en 30 lignes de codes, ce qui m'embet c'est que je suis sur que c'est faisable uniquement en sql depuis phpmyadmin mais bon  [:airforceone]  
 
l'important c'est que ce soit fait  :hello:  
 
je ne met pas [résolu] en titre car si qq'un me pond la requête correct en SQL j'aurais appris qq chose...

Reply

Marsh Posté le 02-01-2008 à 14:06:28    

c'est quoi ces () qui s'ouvrent juste après le mot "select" ?
 
parceque ça, sûr et certain, ça va merder.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed