|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2009 Messages : 107 ![]() |
Salut,
je vous donne une idée sur ce que je veux faire : exemple : select VAL from TABLE resultat : 1 2 ... 5 je dois récupérer une chaine de caractères de cette manière : chaine résultat : 2, 3 et 4 Y'a t-il un moyen pour qu'une requête SELECT sur une colonne retourne touts les lignes sauf la première et la dernière ? Merci d'avance |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Bonjour,
Quel est vote but ? ++ |
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2009 Messages : 107 ![]() |
|
|
|
00
|
|
|
#4 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Bonjour,
Il n'y a pas d'ordre en SQL. Donc vous êtes obligé de le générer, ce qui peut être coûteux : Code :
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
00
|
|
|
#5 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2009 Messages : 107 ![]() |
Citation:
Peux tu m'expliquer ce bout de code STP |
|||
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 954 ![]() |
C'est une requête SQL... Il vous suffit d'apprendre le SQL. Mon site web, comme mon livre peuvent vous y aider !
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#7 | ||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Même si SQLPro a totalement raison, (je vous invite d'ailleurs fortement à parcourir son site !), voici les détails :
Code :
Ici on lui fait ordonner les valeurs de la colonne val, en affectant un numéro de ligne (ROW_NUMBER()) suivant cet ordre (clause OVER()). Code :
Donc on recherche le MAX(n), et on l'applique (APPLY) à l'ensemble des lignes retournées par la CTE. En fait d'utilisation de APPLY, on force SQL Server à n'effectuer qu'une seule fois ce calcul, plutôt que de l'effectuer pour chaque ligne. Ici on prend les indices de lignes numéro 2 et MAX(n) - 1 : l'avant dernier. Cela nous filtrera donc les valeurs de la colonne val comme vous le souhaitiez. @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||||
|
10
|
|
|
#8 | |||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
si vous voulez le résultat sous forme de chaine de caractères, vous pouvez aussi faire comme ça : Code SQL :
Avec un petite bidouille supplémentaire, vous pouvez aussi remplacer la dernière virgule par un "et"... par contre, quant à la question de mikedavem : Citation:
Que voulez vous faire de cette chaine par la suite ? Ce type d'opération aurait plus sa place dans le code client... |
|||
|
|
10
|
|
|
#9 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Ho j'avais pas vu
Une autre possibilité : Code :
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
00
|
|
|
#10 | |||||
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2009 Messages : 107 ![]() |
Citation:
j'ai voulu avoir des explications parce que j'aime pas faire du copier coller, il faut comprendre les choses quand meme... |
|||||
|
|
00
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2009 Messages : 107 ![]() |
|
|
|
00
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2009 Messages : 107 ![]() |
Merci tout le monde, je vais consulter le site c'est promis ^^
Merci encore. |
|
|
00
|
|
|
#13 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2009 Messages : 107 ![]() |
Citation:
l'objectif principal c'est d'avoir à partir d'un ID l'ensemble des villes qu'un autocar doit visiter sans mettre les villes de depart et d'arrivé... ( vu la conception de la BD les villes de depart et d'arrivé sont stockés dans d'autres tables a part la table contenant les villes à visiter... et le resultat c pour l'imprimer avec Crystal reaport j'ai simplifier dans le but de faciliter la comprehesion |
|||
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Vous avez surtout compliqué le problème
![]() Si vos villes de départ et d'arrivée sont clairement identifiées... alors il suffit de les retirer du résultat avec un filtre, ce qui a plus de sens pour SQL que de retirer "la première et la dernière ligne". |
|
|
00
|
|
|
#15 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
En fait c'est votre modèle qui est faux : il suffit pour cela d'ajouter une colonne avec la liste des points / arrêts du parcours, et leur indice dans le parcours.
Comme ce genre de table change peu, vous pouvez ensuite créer une vue indexée qui vous donne pour chaque parcours le MIN() et le MAX() de l'indice. La requête est alors enfantine ... @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#16 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 954 ![]() |
Si vous cherchez à parcourir des chemins à partir d'une table de distance, il vous faut une requête récursive.
D'autant plus si vous voulez retrouver le plus court chemin ! Lisez l'article que j'ai écrit à ce sujet : http://sqlpro.developpez.com/cours/s...ursives/#LIV-B A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#17 | |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2009 Messages : 107 ![]() |
Citation:
|
|
|
|
00
|
|
|
#18 | |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2009 Messages : 107 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com