IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

problème de requette dans sqlserver 2005


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut problème de requette dans sqlserver 2005
    salut,

    voici mon problème:
    je veux récupérer les destinations les plus demandé sur ma table réservation.

    voici ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select * from reservation 
        where destination 
        in (
    --cette requette doit me retourner le nombre de fois     qu'une destination à été choisie
    --et classe le resultat par odre decroissant
            select top 10 destination, count (destination) as nombre
            from reservation
            group by destination
            having nombre is not null
            order by nombre desc
            )
    Le problème est que SQLserver me signale une erreur dans ma procédure stocké:
    Nom de colonne non valide*: 'nombre'.

  2. #2
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 792
    Points : 3 061
    Points
    3 061
    Par défaut
    La colonne nombre n'existe pas : tu dois simplement mentionner l'expression voir ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select * from reservation 
    	where destination 
    	in (
    --cette requette doit me retourner le nombre de fois     qu'une destination à été choisie
    --et classe le resultat par odre decroissant
    		select top 10 destination, count (destination) as nombre
    		from reservation
    		group by destination
    		having count (destination) is not null
    		order by count (destination) desc
    		)

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut syntaxe correcte mais message d'erreur :
    "Une seule expression peut être spécifiée dans la liste de sélection quand la sous-requête n'est pas introduite par EXISTS".

    voici mon objectif:
    j'ai une table reservation dont je veux toutes les colonnes correspondant
    aux 10 destinations les plus demandé!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select * 
    from reservation 
    where destination in
                      (select top 10 destination
                                   , count(destination)
                       from reservation 
                       group by destination
                       order by count(destination))

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Essayez ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    WITH
    	CTE_TOP10_DESTINATIONS AS
    	(
    		SELECT TOP 10 destination, COUNT(destination)
    		FROM reservation
    		GROUP BY destination
    		ORDER BY COUNT(DESTINATION) DESC
    	)
    SELECT *
    FROM reservation R
    INNER JOIN CTE_TOP10_DESTINATIONS D ON D.destination = R.destination
    @++

Discussions similaires

  1. récupérer une base supprimée dans SQLServer 2005
    Par luron dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/03/2009, 09h35
  2. erreur suite à un select MAX() dans sqlserver 2005
    Par thor76160 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/03/2009, 10h17
  3. Réponses: 0
    Dernier message: 08/09/2008, 13h46
  4. Réponses: 3
    Dernier message: 03/10/2007, 13h40
  5. Réponses: 4
    Dernier message: 08/09/2007, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo