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, 18h05   #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 ASA

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 30/03/2005, 08h06   #2
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
Faites-le en 2 passes :
1) select dans une table tempo pour obtenir la clé des max
2) jointure pour obtenir la desctiption
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 09h24   #3
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
Faites-le en 2 passes :
1) select dans une table tempo pour obtenir la clé des max
2) jointure pour obtenir la desctiption
Merci pour votre aide en effet j'avais trouvé de faire 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
25
26
27
SELECT   ASS.nom_assure,   
            ASS.pre_assure,
            CAN.profil_candidat,
            EMP.description_emploi,
            ASS.no_assure,
            CAN.experience_candidat,
            ASS.genre,
            EMP2.date_max
 
       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,
 
				EMPLOI EMP LEFT OUTER JOIN (SELECT max(fin_emploi) AS date_max,
															  no_assure_fk
													   FROM EMPLOI
												  GROUP BY no_assure_fk) EMP2
			ON EMP.no_assure_fk = EMP2.no_assure_fk,
 
				EMP2 LEFT OUTER JOIN (SELECT description_emploi,
													  fin_emploi
											   FROM EMPLOI) EMP3
         ON EMP2.fin_emploi = EMP3.fin_emploi
 
      WHERE ASS.is_candidat = 1;
Le problème est que sur la dernière jointure la table EMP2 n'est pas trouvée
shadeoner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2005, 09h38   #4
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 dû reclarer un alias de table et ça passe, n'y a t il pa de moyen pour que la porté de la table EMP2 soit effective sur la jointure du dessous ??

merci
shadeoner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2005, 08h09   #5
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
Petit conseil : ne mélangez pas les conditions et les clauses de jointure et tentez de garder les sous-requêtes au niveau des conditions.
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2005, 09h26   #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 fadace
Petit conseil : ne mélangez pas les conditions et les clauses de jointure et tentez de garder les sous-requêtes au niveau des conditions.
Je viens de passer sur Sybase, j'étais sous Oracle avant, le temps de m'adapter...
Pourriez vous m'expliquer comment crée une table dans un FROM et que celle ci soit exploitable dans le reste de la requête ?

Merci
shadeoner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2005, 14h35   #7
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
Code :
1
2
3
4
SELECT * 
INTO VotreNouvelleTable 
FROM ...
WHERE ...
fadace 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 00h54.


 
 
 
 
Partenaires

Hébergement Web