par quel bout prendre ma requête ?
Le
olivier
Bonjour,
Je ne sais pas par quel bout prendre ma requête ?
Soit deux tables :
SEANCES
seance_ID INT primary
seance_Date DATETIME
seance_patient_id INT
DETAILS_SEANCES
details_seances_id INT primary
seance_id INT
medecin_id INT
pour un enregistrement de la table SEANCES, il peut y avoir plusieurs
enregistrements dans la table DETAILS_SEANCES
Exemple :
--SEANCES
seance_ID seance_Date seance_patient_id
1 01/01/2010 1000
2 02/01/2010 1500
--DETAILS_SEANCES
details_seances_id seance_id medecin_id
1 1 2
2 2 6
3 2 8
4 2 9
ici la séance du 02/01/2010 pour le patient n° 1500 a été réalisé avec les
trois médecins (n° 6, 8, 9)
en résultat de requête , je souhaiterai avoir une seule ligne comme ceci :
seance_ID seance_Date seance_patient_id medecins
2 02/01/2010 1500
6, 8, 9
J'espère est assez clair dans mes explications
Merci
Je ne sais pas par quel bout prendre ma requête ?
Soit deux tables :
SEANCES
seance_ID INT primary
seance_Date DATETIME
seance_patient_id INT
DETAILS_SEANCES
details_seances_id INT primary
seance_id INT
medecin_id INT
pour un enregistrement de la table SEANCES, il peut y avoir plusieurs
enregistrements dans la table DETAILS_SEANCES
Exemple :
--SEANCES
seance_ID seance_Date seance_patient_id
1 01/01/2010 1000
2 02/01/2010 1500
--DETAILS_SEANCES
details_seances_id seance_id medecin_id
1 1 2
2 2 6
3 2 8
4 2 9
ici la séance du 02/01/2010 pour le patient n° 1500 a été réalisé avec les
trois médecins (n° 6, 8, 9)
en résultat de requête , je souhaiterai avoir une seule ligne comme ceci :
seance_ID seance_Date seance_patient_id medecins
2 02/01/2010 1500
6, 8, 9
J'espère est assez clair dans mes explications
Merci

Poser une question


--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.
"olivier" news:%
dans le code client. A lire sur le sujet :
http://sqlpro.developpez.com/cours/...rreurs/#L9
éanmoins si vous voulez faire cela à l'aide d'une seule requête, le plus
simple est de le faire via une CTE récursive comme je l'ai montré ici :
http://sqlpro.developpez.com/cours/...ves/#LIV-D
A +
olivier a écrit :
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************
dans le code client. A lire sur le sujet :
http://sqlpro.developpez.com/cours/...rreurs/#L9
Néanmoins si vous voulez faire cela à l'aide d'une seule requête, le
plus simple est de le faire via une CTE récursive comme je l'ai montré
ici :
http://sqlpro.developpez.com/cours/...ves/#LIV-D
A +
olivier a écrit :
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************
oui je suis d'accord. (comme tu l'as ecrit dans ton bouquin :-)
mais c'est quand meme vachement plus rapide par SQL que par le code client
:-(
merci
"Fred BROUARD"
http://johnnycoder.com/blog/2006/09...le-string/
Scalar UDF with variable concatenation in SELECT
CREATE FUNCTION udf_update_concat (@jobid INT) RETURNS VARCHAR(MAX) AS
BEGIN
DECLARE @t TABLE(p VARCHAR(40))
DECLARE @r VARCHAR(MAX)
SET @r = SPACE(0)
INSERT @t ( p )
SELECT Emp_name FROM Employee WHERE Job_ID = @jobid
IF @@ROWCOUNT > 0
UPDATE @t
SET @r = @r + p + ','
RETURN(@r)
END
--Here is how to use this function:
SELECT Job_ID, dbo.udf_update_concat(Job_ID)
FROM Employee
GROUP BY Job_ID
"olivier" %