3 messages in org.openoffice.fr.progRe: [prog] macro mysql
FromSent OnAttachments
AlainMar 24, 2008 8:23 pm 
Manuel NAUDINMar 24, 2008 11:15 pm 
AlainMar 25, 2008 7:31 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [prog] macro mysqlActions...
From:Manuel NAUDIN (audi@gmail.com)
Date:Mar 24, 2008 11:15:06 pm
List:org.openoffice.fr.prog

Le 25/03/08, Alain<alai@wanadoo.fr> 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.

Bonne journée, Manuel