Requête avec condition

Le
Major Tom
Bonjour,

Je cherche à créer une vue avec des conditions.

La table est tblUsers
4 champs :
- Id
- Firstname
- Lastname
- Login

Mon souhait est de créer une requête qui permettra d'alimenter une liste
avec les conditions suivantes :
Si Lastname est vide, choisir ID, Login Sinon choisir Id, Lastname +
Firstname

Je tourne en rond. Merci de me lire et de vos réponses

Cdlt

Thierry
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Major Tom
Le #20371491
Bonjour,

J'ai trouvé comme solution ceci :
SELECT TOP (100) PERCENT Id,
CASE LastName WHEN ISNULL(LastName, - 1) THEN
RTRIM(LTRIM(LastName)) + SPACE(1) + RTRIM(LTRIM(FirstName))
ELSE
RTRIM(LTRIM(Login))
END
AS CompletName
FROM dbo.tblUsers
ORDER BY LastName, Login

Par contre, deux questions (environnement SQL Server 2005) :
1- Pourquoi dans un champs de type nchar(50) les espaces sont pris en
compte dans une vue ?
2- Pourquoi lorsque je supprime les espaces avec RTRIM(LTRIM(...)) se
rajoute TOP (100) PERCENT automatiquement et sans pouvoir l'enlever ?



"Major Tom" %
Bonjour,

Je cherche à créer une vue avec des conditions.

La table est tblUsers
4 champs :
- Id
- Firstname
- Lastname
- Login

Mon souhait est de créer une requête qui permettra d'alimenter une liste
avec les conditions suivantes :
Si Lastname est vide, choisir ID, Login Sinon choisir Id, Lastname +
Firstname

Je tourne en rond. Merci de me lire et de vos réponses

Cdlt

Thierry



Major Tom
Le #20371481
Bonjour,

Cela devient du monologue.
Pour la question 2, c'est à cause de ORDER BY.
Comment trier dans une vue sans avoir TOP ?

Merci


"Major Tom"
Bonjour,

J'ai trouvé comme solution ceci :
SELECT TOP (100) PERCENT Id,
CASE LastName WHEN ISNULL(LastName, - 1) THEN
RTRIM(LTRIM(LastName)) + SPACE(1) + RTRIM(LTRIM(FirstName))
ELSE
RTRIM(LTRIM(Login))
END
AS CompletName
FROM dbo.tblUsers
ORDER BY LastName, Login

Par contre, deux questions (environnement SQL Server 2005) :
1- Pourquoi dans un champs de type nchar(50) les espaces sont pris en
compte dans une vue ?
2- Pourquoi lorsque je supprime les espaces avec RTRIM(LTRIM(...)) se
rajoute TOP (100) PERCENT automatiquement et sans pouvoir l'enlever ?



"Major Tom" %
Bonjour,

Je cherche à créer une vue avec des conditions.

La table est tblUsers
4 champs :
- Id
- Firstname
- Lastname
- Login

Mon souhait est de créer une requête qui permettra d'alimenter une liste
avec les conditions suivantes :
Si Lastname est vide, choisir ID, Login Sinon choisir Id, Lastname +
Firstname

Je tourne en rond. Merci de me lire et de vos réponses

Cdlt

Thierry







Med Bouchenafa
Le #20371611
Utilise plutot COALESCE,
Elle renvoie la premiere valeur non nulle de la liste

SELECT TOP (100) PERCENT Id,
CompletName = COALESCE (LastName, Login, id+ SPACE(1)+ LastName)
FROM dbo.tblUsers

Le ORDER BY dans une vue necessite le TOP (100) PERCENT

Bien Cordialement
Med Bouchenafa

"Major Tom" news:#
Bonjour,

Je cherche à créer une vue avec des conditions.

La table est tblUsers
4 champs :
- Id
- Firstname
- Lastname
- Login

Mon souhait est de créer une requête qui permettra d'alimenter une liste
avec les conditions suivantes :
Si Lastname est vide, choisir ID, Login Sinon choisir Id, Lastname +
Firstname

Je tourne en rond. Merci de me lire et de vos réponses

Cdlt

Thierry



Patrice
Le #20377521
> Comment trier dans une vue sans avoir TOP ?



Une vue sert à sélectionner et non pas à trier. Le mieux est de trier
explicitement le résultat final.

De mémoire, l'astuce consistant à utiliser un TOP 100 PERCENT pour trier
dans une vue ne fonctionne effectivement plus à partir de SQL Server 2005.
Eventuellement il doit être possible de faire une fonction table plutôt
qu'une vue

Ne pas perdre de vue aussi que cela veut dire que le tri serait toujours
fait (même si dans un contexte donné, le tri n'est pas opportun).

---
Patrice
Major Tom
Le #20383831
Merci messieurs de vos réponses.
Patrice, en effet il n'est pas nécessaire de trier dans une vue puisque
lorsqu'on fait appel à cette vue, on a la possibilité de la trier.

Thierry

"Patrice" %
Comment trier dans une vue sans avoir TOP ?



Une vue sert à sélectionner et non pas à trier. Le mieux est de trier
explicitement le résultat final.

De mémoire, l'astuce consistant à utiliser un TOP 100 PERCENT pour trier
dans une vue ne fonctionne effectivement plus à partir de SQL Server 2005.
Eventuellement il doit être possible de faire une fonction table plutôt
qu'une vue

Ne pas perdre de vue aussi que cela veut dire que le tri serait toujours
fait (même si dans un contexte donné, le tri n'est pas opportun).

---
Patrice






Publicité
Poster une réponse
Anonyme