Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2011, 11h28   #1
Invité de passage
 
Inscription : décembre 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 14
Points : 0
Points : 0
Par défaut Requête sur nouvelle colonne

Bonjour,

J'ai deux tables: station et chiffre.

Dans ma requête je créé une colonne "date" qui est la concaténation de 2 colonnes de la table chiffre: "mois" et "année"

Le problème est que je n'arrive pas à sélectionner sur cette nouvelle colonne. j'ai un message d'erreur: colonne inconnue.

Peut-être qu'il n'est pas possible de créer une colonne et de l'interroger dans la même requête ?

Voici ma requête:

Code :
1
2
3
SELECT *, CONCAT(chiffre.mois,'-',chiffre.annee) AS date 
FROM chiffre, station 
WHERE station.code_station_cg = chiffre.nom_point AND date='1999'
Catalyst est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 11h52   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
Bonjour,

Les allias sont construits dans les dernières étapes d'une requête SQL.
De ce fait vous ne pouvez pas faire ça.

Il va falloir passer par une sous-requête.

Au passage, les jointures sont normalisées depuis quelques années déjà, donc utilisez la bonne syntaxe

Et n'utilisez pas des mots réservés pour faire vos alias (date en l'occurence)

Code :
1
2
3
4
5
6
7
 
SELECT * 
FROM (
 SELECT *, CONCAT(chiffre.mois,'-',chiffre.annee) AS ma_date
 FROM chiffre a
 INNER JOIN station b ON a.code_station_cg = b.nom_point ) AS tmp
WHERE ma_date='1999'
Sinon je pense que votre requête ne va pas ramener grand chose au vue de votre clause where.


edit: pas reveillé ...

une autre solution sans sous-requête c'est de faire votre test en remplaçant votre alias par le concat (c'est d'ailleur cette solution qu'il faudrai implémenter et pas la 1ere qui n'est pas terrible ...) :

Code :
1
2
3
4
5
 
SELECT *, CONCAT(chiffre.mois,'-',chiffre.annee) AS ma_date
FROM chiffre a
INNER JOIN station b ON a.code_station_cg = b.nom_point 
WHERE CONCAT(chiffre.mois,'-',chiffre.annee) = '1999'
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 14h05   #3
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 724
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 724
Points : 6 848
Points : 6 848
Il faudrait même voir avec supprimer le concat et voir si on ne peut pas bénéficier de certains indexes

Code :
1
2
...
WHERE chiffre.mois = ... AND chiffre.annee = 1999
++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2011, 17h26   #4
Invité de passage
 
Inscription : décembre 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 14
Points : 0
Points : 0
merci pour vos réponses.

Dans le WHERE j'ai remplacé "date" par le CONCAT et effectivement ça marche !
Catalyst est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h43.


 
 
 
 
Partenaires

Hébergement Web