Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/11/2010, 11h24   #1
Invité de passage
 
Inscription : février 2005
Messages : 1
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1
Points : 0
Points : 0
Par défaut [SQL] Aide sur une requête

Bonjour,

Je cherche à faire une requête qui me renvoie une ligne seulement si pour une valeur1 , chaque valeur 2 est égal à OK

ex :

valeur1 valeur2
val1 ok
val1 ok

renvoie
val1 ok

et si

valeur1 valeur2
val1 ok
val1 ko

renvoie
rien

merci
migbc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 13h48   #2
Membre éprouvé
 
Avatar de xdescamp
 
Homme Xavier Descamps
Inscription : octobre 2008
Messages : 297
Détails du profil
Informations personnelles :
Nom : Homme Xavier Descamps
Âge : 36
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2008
Messages : 297
Points : 422
Points : 422
Envoyer un message via Skype™ à xdescamp
Bonjour,

Il faudrait un peu plus de détails sur la structure et la volumétrie de la table, mais sur le principe, si la table n'est pas trop volumineuse, on peut faire quelque chose d'assez simple :
Code sql :
1
2
3
4
5
6
SELECT DISTINCT valeur1, valeur2
FROM ma_table t1
WHERE NOT EXISTS (SELECT NULL
                  FROM ma_table t2
                  WHERE t2.valeur1 = t1.valeur1
                    AND t2.valeur2 != 'ok')
xdescamp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 13h51   #3
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 925
Points : 1 925
Qu'est ce que ça donne ça ?
Code :
1
2
3
4
SELECT val1, val2, sum (case when val2='OK' then 1 end) AS cnt_ok, count(*) AS cnt_tot
FROM t
GROUP BY val1, val2
HAVING sum (case when val2='OK' then 1 end) = count(*)
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 14h52   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 683
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 683
Points : 10 460
Points : 10 460
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
On peut faire plus simple :
Code :
1
2
3
4
5
  SELECT valeur1, 'ok'
    FROM t
GROUP BY valeur1
  HAVING min(valeur2) = 'ok'
ORDER BY valeur1 ASC;
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h16.


 
 
 
 
Partenaires

Hébergement Web