You could use auditor.actor_usr_history. This code will probably need some
tweaking.
/*users where they had the required profile between the required dates */
WHERE usr.id IN (SELECT DISTINCT usr.id
FROM auditor.actor_usr_history AS aauh
WHERE aauh.profile = <id>
AND aauh.audit_time BETWEEN <date1> AND <date2>)
/*users who have only ever had the required profile*/
OR usr.id IN (SELECT DISTINCT au.id
FROM actor.usr AS au
WHERE au.id NOT IN (SELECT DISTINCT aauh.id
FROM
auditor.actor_usr_history AS aauh)
AND au.profile = <id>)
Liam
Natural Resources Canada Library / Bibliothèque de Ressources naturelles Canada
615 rue Booth Street, 121, Ottawa, ON
Canada K1A 0E9
Telephone / Téléphone : 613-995-4180
[email protected]
Web: http://www.nrcan.gc.ca/library/
________________________________
From: [email protected]
[mailto:[email protected]] On Behalf Of
Melissa Belvadi
Sent: November 18, 2011 14:21
To: Evergreen Discussion Group
Subject: [OPEN-ILS-GENERAL] Connecting circ transactions to changing
patronprofile
Hi, all.
We are an academic library who also offers "public" memberships to
members of the community, with somewhat more restricted borrowing privileges
than students have. When students graduate, they are automatically converted
to the "public" profile (literally changing their "profile" code in actor.usr)
via batch update. They keep the same barcode/id#, not assigned new cards, and
thus the same id# in Evergreen. We currently have no expiration on public
memberships and no procedure for doing so yet.
We are now faced with wanting to know how many "active" members of the
public we have, defining "active" as "users who have had some circ transaction
activity within the last three years".
The problem is that so far as I can tell, there is no record in the
Evergreen tables as to when a user's profile code is changed. So if I just look
in actor.usr at everyone who is a member of the "public" profile as of this
moment, and find all of the transactions within the last 3 years in
action.circulation that are connected to those users (a very simple sql query),
I'll get mostly students who graduated within the last three years, whose circ
activity took place when they were students, not as members of the "public".
Am I missing something? Is there a table/field somewhere that can help
me "join" so that I only retrieve those circ transactions that were done by
users who were in the "public" profile" *at the time of the transaction*
regardless of what that same user's profile assignment is at the time I'm
running the query?
Thanks for any help!
--
Melissa Belvadi
User Experience & Collections Librarian
University of Prince Edward Island
[email protected] 902-566-0581