OVH Cloud OVH Cloud

[SQL] recherche "multi-critere"

3 réponses
Avatar
Nicolas M.
Bonjour,

Je possède une table de la forme suivante (ibtenue en récupérant les valeurs
d'un tableau sous forme "ligne-colonne") :

n° ligne n° colonne valeur
1 1 azer
1 2 qsdf
1 3 wxcv
2 1 azerty
2 2 jklm
2 3 cvbn
3 1 azerty
3 2 dfgh
3 3 wxcv
.....

Je suis a la recherche d'une requête SQL me permettant d'obtenir le numéro
de ligne qui me permette d'avoir "azerty" et "wxcv" dans les valeurs. Dans
l'exemple ci-dessus : ce serait la ligne 3.
Je me demandais s'ily avait un requête SQL "directe" le permettane
(actuellment, les solutions que j'envisage passent par la création de tables
temporaires et la réalisation de multiples requêtes).

Merci d'avance de votre aide,
Nicolas

P.S. : si jamais cela a de l'importance, ma bae est une base Oracle

3 réponses

Avatar
Steve Kass
Nicolas,

Si les paires (n° ligne, n° colonne) sont unique,

select [n° ligne] from laTable
where valeur in ('azerty', 'wxcv')
group by [n° ligne]
having count(*) = 2

Steve Kass
Drew University

Nicolas M. wrote:

Bonjour,

Je possède une table de la forme suivante (ibtenue en récupérant les valeurs
d'un tableau sous forme "ligne-colonne") :

n° ligne n° colonne valeur
1 1 azer
1 2 qsdf
1 3 wxcv
2 1 azerty
2 2 jklm
2 3 cvbn
3 1 azerty
3 2 dfgh
3 3 wxcv
.....

Je suis a la recherche d'une requête SQL me permettant d'obtenir le numéro
de ligne qui me permette d'avoir "azerty" et "wxcv" dans les valeurs. Dans
l'exemple ci-dessus : ce serait la ligne 3.
Je me demandais s'ily avait un requête SQL "directe" le permettane
(actuellment, les solutions que j'envisage passent par la création de tables
temporaires et la réalisation de multiples requêtes).

Merci d'avance de votre aide,
Nicolas

P.S. : si jamais cela a de l'importance, ma bae est une base Oracle






Avatar
Nicolas M.
"Steve Kass" a écrit dans le message de
news:%
Nicolas,

Si les paires (n° ligne, n° colonne) sont unique,

select [n° ligne] from laTable
where valeur in ('azerty', 'wxcv')
group by [n° ligne]
having count(*) = 2

Steve Kass
Drew University




Merci beaucoup Steve!

Les paires (n° ligne, n° colonne) sont bien uniques.
Par contre, cette solution pose probleme si l'on a par exemple 2 fois la
valeur "azerty" pour une meme ligne, non? Enfin bon, je peux vivre avec.

Par contre, si je souhaite affiner, est-il possible de trouver le numero de
ligne qu ime permette d'avoir "azerty" en colonne 1 ET "wxcv" en colonne 3?

Merci encore,
Nicolas

Nicolas M. wrote:

> Bonjour,
>
>Je possède une table de la forme suivante (ibtenue en récupérant les


valeurs
>d'un tableau sous forme "ligne-colonne") :
>
>n° ligne n° colonne valeur
>1 1 azer
>1 2 qsdf
>1 3 wxcv
>2 1 azerty
>2 2 jklm
>2 3 cvbn
>3 1 azerty
>3 2 dfgh
>3 3 wxcv
>.....
>
>Je suis a la recherche d'une requête SQL me permettant d'obtenir le


numéro
>de ligne qui me permette d'avoir "azerty" et "wxcv" dans les valeurs.


Dans
>l'exemple ci-dessus : ce serait la ligne 3.
>Je me demandais s'ily avait un requête SQL "directe" le permettane
>(actuellment, les solutions que j'envisage passent par la création de


tables
>temporaires et la réalisation de multiples requêtes).
>
>Merci d'avance de votre aide,
>Nicolas
>
>P.S. : si jamais cela a de l'importance, ma bae est une base Oracle
>
>
>
>



Avatar
Steve Kass
Nicolas M. wrote:

"Steve Kass" a écrit dans le message de
news:%


Nicolas,

Si les paires (n° ligne, n° colonne) sont unique,

select [n° ligne] from laTable
where valeur in ('azerty', 'wxcv')
group by [n° ligne]
having count(*) = 2

Steve Kass
Drew University






Merci beaucoup Steve!

Les paires (n° ligne, n° colonne) sont bien uniques.
Par contre, cette solution pose probleme si l'on a par exemple 2 fois la
valeur "azerty" pour une meme ligne, non? Enfin bon, je peux vivre avec.





Dans ce cas:

select ...
having count(distinct valeur) = 2

or

select [n° ligne] from (
select [n° ligne], min([n° colonne]) as minLigne from laTable
where valeur in ('azerty', 'wxcv')
group by [n° ligne], valeur
) T
group by [n° ligne]
having count(minLigne) = 2

[pas vérifiés]

Par contre, si je souhaite affiner, est-il possible de trouver le numero de
ligne qu ime permette d'avoir "azerty" en colonne 1 ET "wxcv" en colonne 3?





select ...
where (
(valeur = 'azerty' and [n° ligne] = 1)
or (valeur = 'wxcv' and [n° ligne] = 3)
)
...

Steve

Merci encore,
Nicolas



Nicolas M. wrote:



Bonjour,

Je possède une table de la forme suivante (ibtenue en récupérant les






valeurs


d'un tableau sous forme "ligne-colonne") :

n° ligne n° colonne valeur
1 1 azer
1 2 qsdf
1 3 wxcv
2 1 azerty
2 2 jklm
2 3 cvbn
3 1 azerty
3 2 dfgh
3 3 wxcv
.....

Je suis a la recherche d'une requête SQL me permettant d'obtenir le






numéro


de ligne qui me permette d'avoir "azerty" et "wxcv" dans les valeurs.






Dans


l'exemple ci-dessus : ce serait la ligne 3.
Je me demandais s'ily avait un requête SQL "directe" le permettane
(actuellment, les solutions que j'envisage passent par la création de






tables


temporaires et la réalisation de multiples requêtes).

Merci d'avance de votre aide,
Nicolas

P.S. : si jamais cela a de l'importance, ma bae est une base Oracle