Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requête avec condition

5 réponses
Avatar
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

5 réponses

Avatar
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" a écrit dans le message de 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



Avatar
Major Tom
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" a écrit dans le message de news:

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" a écrit dans le message de 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







Avatar
Med Bouchenafa
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" wrote in message
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



Avatar
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
Avatar
Major Tom
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" <http://scribe-fr.blogspot.com/> a écrit dans le message de news:
%
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