Précédent   Forum des professionnels en informatique > Bases de données > Sybase > SQL Anywhere
SQL Anywhere Forum d'entraide concernant Sybase SQL Anywhere, la base de données mobile de Sybase
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/03/2005, 16h08   #1
Membre régulier
 
Inscription : juillet 2004
Messages : 393
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 393
Points : 80
Points : 80
Par défaut [ASA] Problème sur requete

Bonjour,

J'ai une table assuré et une table emploi, sur la table emploi j'ai donc n lignes pour un assuré.
Sur une liste rapide des assurés je souhaite afficher quelques informations comme la date maximum entre les emplois et le descriptif du dernier emploi, je fais donc cela :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT   ASS.nom_assure,   
				ASS.pre_assure,
				CAN.profil_candidat,
				EMP.description_emploi,
				ASS.no_assure,
				CAN.experience_candidat,
				ASS.genre,
				MAX (EMP.fin_emploi) AS fin_emploi
 
		 FROM ASSURE ASS LEFT OUTER JOIN CANDIDAT CAN
         ON ASS.no_assure  = CAN.no_assure_fk,
 
				CANDIDAT CAN LEFT OUTER JOIN EMPLOI EMP
			ON CAN.no_assure_fk = EMP.no_assure_fk
 
      WHERE ASS.is_candidat = 1
 
		GROUP BY EMP.description_emploi,
            ASS.nom_assure,   
				ASS.pre_assure,
				CAN.profil_candidat,
				ASS.no_assure,
				CAN.experience_candidat,
				ASS.genre;

Le soucis c'est que cela me sort les n lignes de tous les emplois par assurés.

Merci pour votre aide
shadeoner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2005, 16h50   #2
Membre confirmé
 
Avatar de lper
 
Inscription : juin 2004
Messages : 301
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 301
Points : 293
Points : 293
Bonjour,
c'est normal qu'il te sort tous les emplois différents puisque tu fais un group by dessus, étant sous oracle, je ne peux tester la requête suivante, le principe étant d'utiliser une requête imbriqué permettant de soutirer l'emploi :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
SELECT   ASS.nom_assure,
            ASS.pre_assure,
            CAN.profil_candidat, 
            ASS.no_assure, 
            CAN.experience_candidat, 
            ASS.genre, 
            EMP2.max_emploi,
            EMP3.description_emploi
 
       FROM ASSURE ASS LEFT OUTER JOIN CANDIDAT CAN 
         ON ASS.no_assure  = CAN.no_assure_fk, 
 
            CANDIDAT CAN LEFT OUTER JOIN 
        (SELECT  MAX (EMP.fin_emploi) AS max_emploi
            FROM EMPLOI EMP
            GROUP BY EMP.no_assure_fk) EMP2
            ON CAN.no_assure_fk = EMP2.no_assure_fk,
            EMP2 LEFT OUTER JOIN EMPLOI EMP3
         ON EMP3.fin_emploi = EMP2.max_emploi
 
      WHERE ASS.is_candidat = 1 
 
      GROUP BY ASS.nom_assure,
            ASS.pre_assure,
            CAN.profil_candidat,
            ASS.no_assure,
            CAN.experience_candidat,
            ASS.genre,
            EMP2.max_emploi,
            EMP3.description_emploi
__________________
La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir
lper est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2005, 16h50   #3
Membre éclairé
 
Inscription : mars 2004
Messages : 425
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 425
Points : 300
Points : 300
Envoyer un message via MSN à annedjomo Envoyer un message via Yahoo à annedjomo
salut.

est ce que le problème ne viendrait pas du LEFT OUTER JOIN?

Et si tu utilisais INNER JOIN?

A tout de suite
__________________
OS:Win 2000 Pro, WIN XP
SGBD: MS Sql Server, Oracle
Environnement: VS.NET 2002, JBuilder
Web: www.ndestudents.com
annedjomo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2005, 17h41   #4
Membre régulier
 
Inscription : juillet 2004
Messages : 393
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 393
Points : 80
Points : 80
Merci pour votre aide :
lper je connais aussi Oracle, sur ASA c'est assez différent, il me dit dans la requete que tu m'as donné qu'il ne connait pas la Table EMP2.

annedjomo : pq utiliser un inner join ??
shadeoner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2005, 17h45   #5
Membre éclairé
 
Inscription : mars 2004
Messages : 425
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 425
Points : 300
Points : 300
Envoyer un message via MSN à annedjomo Envoyer un message via Yahoo à annedjomo
Citation:
Envoyé par shadeoner
annedjomo : pq utiliser un inner join ??
Je pense que dans ce cas il ne te ramènera pas toutes les lignes.
Je veux dire les enregistrements correspondant à la jointure.

A++
__________________
OS:Win 2000 Pro, WIN XP
SGBD: MS Sql Server, Oracle
Environnement: VS.NET 2002, JBuilder
Web: www.ndestudents.com
annedjomo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2005, 17h47   #6
Membre régulier
 
Inscription : juillet 2004
Messages : 393
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 393
Points : 80
Points : 80
Citation:
Envoyé par annedjomo
Citation:
Envoyé par shadeoner
annedjomo : pq utiliser un inner join ??
Je pense que dans ce cas il ne te ramènera pas toutes les lignes.
Je veux dire les enregistrements correspondant à la jointure.

A++
En fait j'ai oublié de préciser que la table emploi peut être null pour un candidat, et je veux quand même avoir le candidat de ramener.
shadeoner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2005, 17h57   #7
Membre régulier
 
Inscription : juillet 2004
Messages : 393
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 393
Points : 80
Points : 80
J'ai vu une section plus appropriée je poste là bas merci
shadeoner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2005, 18h12   #8
Membre confirmé
 
Avatar de lper
 
Inscription : juin 2004
Messages : 301
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 301
Points : 293
Points : 293
Il manque peut-être le 'AS' avant EMP2 ?
__________________
La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir
lper est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 15h37   #9
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
Citation:
Envoyé par lper
Il manque peut-être le 'AS' avant EMP2 ?
Non, les 2 syntaxes sont similaires sous ASA
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 15h59   #10
Membre régulier
 
Inscription : juillet 2004
Messages : 393
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 393
Points : 80
Points : 80
Citation:
Envoyé par fadace
Citation:
Envoyé par lper
Il manque peut-être le 'AS' avant EMP2 ?
Non, les 2 syntaxes sont similaires sous ASA
Fadas tu peux cloturer ici
J'ai posté sur la partie "autre SGBD", peux tu m'aider sur l'autre thread d'ailleurs ?

Merci
shadeoner est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web