Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 16/02/2011, 10h44   #1
Invité régulier
 
Inscription : mars 2003
Messages : 43
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2003
Messages : 43
Points : 9
Points : 9
Envoyer un message via MSN à besco
Par défaut Problème requête sql

Bonjour,

Je cherche à ramener un seul tuple pour chaque identifiant (l'identifiant correspond à deux colonnes).
Ce que j'arrive à obtenir
1PTC 5008 VU
1ptz test VU
0000 test VU

Ici la clé correspond à test VU.. donc je voudrais ne ramener qu'une seule ligne pour chaque couple.
j'espere être clair.

Merci de votre aide
besco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 10h54   #2
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 081
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 081
Points : 1 875
Points : 1 875
Bonjour,
J'avoue que je ne comprends pas trop ce que tu veux obtenir...
Est-ce que tu peux nous donner le schéma de la table, un jeu de test, la requête que tu as faite, ce que tu obtiens et ce que tu veux obtenir précisément ?

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 11h06   #3
Invité régulier
 
Inscription : mars 2003
Messages : 43
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2003
Messages : 43
Points : 9
Points : 9
Envoyer un message via MSN à besco
trois colonnes LITERAL (=SOUS_FAMILLE), VPVU, FAMILLE dans les deux tables SFA et FSF

Je cherche à trouver le couple sous_famille, vpvu dans la table SFA que je n'ai pas dans la table FSF. et je ramène donc les lignes que je trouve, mais il se peut que je ramène plusieurs famille de la table SFA, et je veux juste en ramener une (comme dans l'exemple précédent)

La requête :
Code :
1
2
3
4
5
6
SELECT famille ,LITERAL,VPVU  FROM RBVQTSFA WHERE qi_filial = 84 
  AND   (LITERAL,VPVU) IN  (
  SELECT  DISTINCT LITERAL,VPVU FROM RBVQTSFA  WHERE qi_filial = 84
  MINUS  
  SELECT  SOUS_FAMILLE,VPVU FROM RBVQTFSF 
   )
besco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 11h53   #4
Invité de passage
 
Inscription : décembre 2003
Messages : 6
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 6
Points : 2
Points : 2
bonjour,

Afin d'obtenir une réponse plus rapide, tu devrais fournir comme le demande tatayo :

Un petit tableau par table représentant quelques données existante avec le nom des champs en entête

Et un exemple de ce que tu souhaites obtenir en prenant pour exemple des données dans tes tables

afin que tout le monde comprenne bien ce que tu souhaites.

courage
ogre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 12h14   #5
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Tu cherche à récupérer qu'une seule ligne ?
Je ne comprend pas vraiment, si ta requête te retourne plusieurs enregistrement tu n'as aucun intérêt logique à ne vouloir en récupérer qu'un seul avec un LIMIT par exemple.

A moins que tu souhaite dire qu'il ne devrait ne t'en retourner qu'un seul, dans ce cas :

Code :
1
2
3
4
5
6
7
8
SELECT A.famille,A.literal,A.vpvu
FROM RBVQTSFA AS A
WHERE qi_filial = 84 
AND   NOT EXISTS  (SELECT 1 
                   FROM RBVQTSFS AS S
                   WHERE qi_filial = 84
                   AND A.literal = S.literal
                   AND A.vpvu = S.vpvu)
Ca doit être une base comme ça mais pas trop sur.

Attend confirmation de personnes plus qualifiés que moi en SQL.
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 12h15   #6
Invité régulier
 
Inscription : mars 2003
Messages : 43
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2003
Messages : 43
Points : 9
Points : 9
Envoyer un message via MSN à besco
Resultat de ma requête

FAMILLE SOUSFAMILLE VPVU
1PTC 5008 VU
1ptz test VU
0000 test VU

Resultat attendu
FAMILLE SOUSFAMILLE VPVU
1PTC 5008 VU
1ptz test VU
besco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 15h11   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 993
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 993
Points : 18 246
Points : 18 246
Envoyer un message via MSN à CinePhil
Et qu'est-ce qui détermine que c'est la ligne avec 0000 qui doit être éliminée ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 16h31   #8
Invité régulier
 
Inscription : mars 2003
Messages : 43
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2003
Messages : 43
Points : 9
Points : 9
Envoyer un message via MSN à besco
en fait peu importe la ligne qu'il ramène, mais ce qui est important est de ramener une seule ligne aléatoirement. En gros c'est une limite genre rownum=1 pour chaque sous_famille,vp_vu
besco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 07h44   #9
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 081
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 081
Points : 1 875
Points : 1 875
Allez, un petit essai:
Code SQL :
1
2
3
4
5
6
 
SELECT min(RBVQTSFA.famille),RBVQTSFA.literal,RBVQTSFA.vpvu
FROM RBVQTSFA
LEFT OUTER JOIN RBVQTSFS ON RBVQTSFS.literal = RBVQTSFA.literal AND RBVQTSFS .vpvu = RBVQTSFA.vpvu AND RBVQTSFS.qi_filial = RBVQTSFA.qi_filial
WHERE RBVQTSFS.qi_filial IS NULL AND RBVQTSFA.qi_filial = 84
GROUP BY RBVQTSFA.literal,RBVQTSFA.vpvu
Je cherche les couples literal/vpvu (avec n'importe quelle famille, donc ici "la plus petite") que j'ai dans sfa et non dans fsf.

Tatayo.
tatayo 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 13h45.


 
 
 
 
Partenaires

Hébergement Web