Probleme de requete et concatenation

Petit nouveau ! | 1 Messages

27 oct. 2006, 11:48

j'ai une table dans laquelle les mois sont dans une colonne et les années dans une autre.

J'ai besoin de ressortir pour un client les 12 derniers mois ecoulés.
Donc je pensai concatener mes 2 colonnes pour obtenir un format comme 200610 (soit octobre 2006).

mais c'est la premiere fois que je fais de la concatenation et je ne trouve pas la bonne syntaxe

Code : Tout sélectionner

$resultat=mysql_query ("SELECT st_annee||st_mois AS vardate,* FROM donne_stat WHERE st_id_user=$num AND vardate>$mavariable");
ou

Code : Tout sélectionner

$resultat=mysql_query ("SELECT CONCAT(st_annee,st_mois) AS vardate,* FROM donne_stat WHERE st_id_user=$num AND vardate>$mavariable");
ou bien suis je completement a coté de la plaque auquel cas ... Aidez moi au secours :shock:

ViPHP
ViPHP | 1961 Messages

27 oct. 2006, 12:59

Bonjour,

La concaténation n'est pas en cause, c'est "*" qui pose problème.

Tu ne peux pas mélanger les deux types de sélection. Si tu as sélectionné un champ spécifique tu devras spécifier tous les autres un par un.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 oct. 2006, 13:10

C'est toujours mieux de nommer explicitement les champs pour savoir ce que l'on récupère, ceci dit, sous certaines bases (oracle nottament, j'ai pas essayé chez les autres, à vous de faire le test :)), si tu préfixes l'étoile (aussi bizare que ca puisse paraitre) avec le nom de la table, il les trouve normalement :

Code : Tout sélectionner

SELECT champ1, champ2, t.* FROM maTable t WHERE ...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...