Le 25/03/08, Alain<[EMAIL PROTECTED]> a écrit :
> Bonjour la liste,
Bonjour,
> Je dois à partir d'une macro lancée de calc interroger une base MySQL.
> Il s'agit de compter le nombre de jour de présence par identifiant
> (id_user).
> Pour cela je dispose d'une table (presence p) comportant 2 champs (date
> et concaténation des id_user pour cette date).
> La macro interroge sur un choix entre une date_debut et une date_fin.
>
> 1ere question: vaut-il mieux pour des questions de performance effectuer
> la concaténation et le décompte du nombre d'occurence par id_user dans
> calc ?
>
> 2eme question: je ne sais pas assembler la requête SQL qui me permettrai
> de vérifier la présence de l'id_user dans le champ concaténé, quelqu'un
> peut-il m'aider ?
tu ne donnes pas de détails sur le type de id_user et de la
concaténation des id_user, ni si la concaténation colle les id les un
derrière les autres ou rajoute un séparateur ...
mais voici un exemple grossier :

si current_id est l'id de l'user que tu cherches

SELECT COUNT( * )
FROM presence_p
WHERE
champ_concat LIKE '%current_id%'
AND (date BETWEEN date_debut AND date_fin)

mais c'est une ébauche car il peut y avoir des effets inattendus :
soit deux id 2733 et 4210, la concaténation donne 27334210 et la
recherche avec current_id = 3342 donnera un résultat erronné.
Si par hasard tu disposes d'une table (table_presence) comportant
simplement un champ date (date_presence) et un champ id_user non
concaténé (id_user), tu peux obtenir le nombre de jours de présence
simplement :
SELECT COUNT(*) FROM table_presence
WHERE id_user = current_id
AND (date BETWEEN date_debut AND date_fin)
>
> Par avance je vous remercie.
>
> Alain
>
Bonne journée,
Manuel

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à