OVH Cloud OVH Cloud

Requête dans vue

9 réponses
Avatar
sebcou
Hello !

J'ai une table qui contient plusieurs colonnes différentes pour stocker des
dimensions. En fonctions des entrées de la table, certaines colonnes sont
parfois utilisées d'autres non.

Je veux maintenant créer une vue et grouper les dimensions en une seule
colonne, p.ex : "larg. 200mm, long. 1000mm, ep. 5mm" (j'ajoute en dur le
texte). Lorsque je construis ma chaîne, je ne veux pas prendre en compte les
colonnes à null, sinon je me retrouve avec qqch du style : "larg. mm, long.
mm, ep. 5mm", ce qui n'a pas de sens.

Bref, je voudrais construire mon texte uniquement avec les colonnes qui sont
renseignées, mais je ne vois pas trop comment je peux concaténer mes
colonnes conditionnellement.

Merci de votre aide !
@+
Seb

9 réponses

Avatar
jeorme
Salut
A mon avis essaye avec la fonction ISNULL , regarde dans l'aide en ligne
cette fonction

"sebcou" a écrit dans le message de news:

Hello !

J'ai une table qui contient plusieurs colonnes différentes pour stocker


des
dimensions. En fonctions des entrées de la table, certaines colonnes sont
parfois utilisées d'autres non.

Je veux maintenant créer une vue et grouper les dimensions en une seule
colonne, p.ex : "larg. 200mm, long. 1000mm, ep. 5mm" (j'ajoute en dur le
texte). Lorsque je construis ma chaîne, je ne veux pas prendre en compte


les
colonnes à null, sinon je me retrouve avec qqch du style : "larg. mm,


long.
mm, ep. 5mm", ce qui n'a pas de sens.

Bref, je voudrais construire mon texte uniquement avec les colonnes qui


sont
renseignées, mais je ne vois pas trop comment je peux concaténer mes
colonnes conditionnellement.

Merci de votre aide !
@+
Seb




Avatar
sebcou
Salut !

"jeorme" a écrit dans le message de
news:%
Salut
A mon avis essaye avec la fonction ISNULL , regarde dans l'aide en ligne
cette fonction



--> Merci j'y avais déjà pensé mais je n'arrive pas à faire ce que je veux
avec ça. En fait mon select ressemble à ça : select ..., 'larg. ' + xxx + '
mm'. Je veux pouvoir détecter si xxx est null, et dans ce cas ne pas ajouter
'larg.' et 'mm', une sorte de if quoi, mais je n'ai pas réussi à le faire
avec le IF du SQL.

@+ et merci.
Seb
Avatar
Boss Hog
Salut,

tu devrais peut-etre parcourrir ta table avec un curseur en remplissant une
table temp avec tes valeur
puis requetter la table temp

@+
Boss Hog
"sebcou" wrote in message
news:416ce847$
Salut !

"jeorme" a écrit dans le message de
news:%
> Salut
> A mon avis essaye avec la fonction ISNULL , regarde dans l'aide en ligne
> cette fonction

--> Merci j'y avais déjà pensé mais je n'arrive pas à faire ce que je veux
avec ça. En fait mon select ressemble à ça : select ..., 'larg. ' + xxx +


'
mm'. Je veux pouvoir détecter si xxx est null, et dans ce cas ne pas


ajouter
'larg.' et 'mm', une sorte de if quoi, mais je n'ai pas réussi à le faire
avec le IF du SQL.

@+ et merci.
Seb




Avatar
deconnected
Essaye peut etre le CASE ...

"sebcou" a écrit dans le message de
news:416ce847$
Salut !

"jeorme" a écrit dans le message de
news:%
> Salut
> A mon avis essaye avec la fonction ISNULL , regarde dans l'aide en ligne
> cette fonction

--> Merci j'y avais déjà pensé mais je n'arrive pas à faire ce que je veux
avec ça. En fait mon select ressemble à ça : select ..., 'larg. ' + xxx +


'
mm'. Je veux pouvoir détecter si xxx est null, et dans ce cas ne pas


ajouter
'larg.' et 'mm', une sorte de if quoi, mais je n'ai pas réussi à le faire
avec le IF du SQL.

@+ et merci.
Seb




Avatar
sebcou
Hello !

"Boss Hog @tiscali.fr>" <bosshog<replace> a écrit dans le message de
news:
Salut,

tu devrais peut-etre parcourrir ta table avec un curseur en remplissant


une
table temp avec tes valeur
puis requetter la table temp



--> Je voudrais faire moins usine à gaz si possible, mais dans le pire des
cas...

Merci @+
Seb
Avatar
sebcou
Hello !

"deconnected" a écrit dans le message de
news:
Essaye peut etre le CASE ...



--> Ben ça fait en partie ce que je veux faire. Je peux mettre en forme
chaque colonne comme je le souhaite, mais en suite je n'arrive pas à
concaténer le tout, je ne peux pas utiliser les noms de colonnes que j'ai
définis (larg et longmm)...


select
case when largeurmm is not null then 'larg. ' + cast(largeurmm as varchar) +
' mm' end as 'larg',
case when longueurmm is not null then 'long. ' + cast(longueurmm as varchar)
+ ' mm' end as 'longmm'
from articles


Merci @+
Seb
Avatar
Boss Hog
Re-salut,

et un truc du genre.....

select
'larg. ' + convert(largeurmm, varchar(255)) + ' mm' as larg,
'long. ' + convert(longueurmm, varchar(255)) + ' mm' as longmm
from mavue
where largeurmm is not null and longueurmm is not null

@+
Boss Hog

"sebcou" wrote in message
news:416cfbad$
Hello !

"deconnected" a écrit dans le message de
news:
> Essaye peut etre le CASE ...

--> Ben ça fait en partie ce que je veux faire. Je peux mettre en forme
chaque colonne comme je le souhaite, mais en suite je n'arrive pas à
concaténer le tout, je ne peux pas utiliser les noms de colonnes que j'ai
définis (larg et longmm)...


select
case when largeurmm is not null then 'larg. ' + cast(largeurmm as varchar)


+
' mm' end as 'larg',
case when longueurmm is not null then 'long. ' + cast(longueurmm as


varchar)
+ ' mm' end as 'longmm'
from articles


Merci @+
Seb




Avatar
sebcou
"Boss Hog @tiscali.fr>" <bosshog<replace> a écrit dans le message de
news:%

select
'larg. ' + convert(largeurmm, varchar(255)) + ' mm' as larg,
'long. ' + convert(longueurmm, varchar(255)) + ' mm' as longmm
from mavue
where largeurmm is not null and longueurmm is not null



--> Merci mais le résultat est toujours le même, j'ai toujours mes 2
colonnes, alors que j'en voudrais qu'une concaténée. Mais c'est pas grave
j'ai décidé de faire autrement, je gère ça directement dans mon code...

@+
Seb
Avatar
Boss Hog
Salut seb
à priori on c'est mal compris(je croyait que tu voulais 2 colonnes)

select
'larg. ' + convert(largeurmm, varchar(255)) + ' mm long. ' +
convert(longueurmm, varchar(255)) + ' mm' as COLNAME
from mavue
where largeurmm is not null and longueurmm is not null

et la tu n'a qu'une colonne...(si j'ai bien tout compris)

@+
Boss Hog


"sebcou" wrote in message
news:416d2ce0$

"Boss Hog @tiscali.fr>" <bosshog<replace> a écrit dans le message de
news:%

> select
> 'larg. ' + convert(largeurmm, varchar(255)) + ' mm' as larg,
> 'long. ' + convert(longueurmm, varchar(255)) + ' mm' as longmm
> from mavue
> where largeurmm is not null and longueurmm is not null

--> Merci mais le résultat est toujours le même, j'ai toujours mes 2
colonnes, alors que j'en voudrais qu'une concaténée. Mais c'est pas grave
j'ai décidé de faire autrement, je gère ça directement dans mon code...

@+
Seb