Unfortunately, that's just the way that ExtractValue works. From the manual: If multiple matches are found, the content of the first child text node of each matching element is returned (in the order matched) as a single, space-delimited string. Since MARC doesn't give us any means of differentiating between the multiple fields aside from their order, there isn't much that can be done here. And if the desired 610 field isn't the first in the series of them, the LIKE clause won't match; you'd need % in front, as well. MARC for the fail.. :( -Ian 2011/7/1 Chris Nighswonger <cnighswonger@foundations.edu>
Hi Nicole,
On Fri, Jul 1, 2011 at 9:33 AM, Nicole Engard <nengard@gmail.com> wrote:
Hi all,
I wrote this report to get all subject headings in a Koha system that start with key phrases:
SELECT lcsh FROM (SELECT biblionumber, ExtractValue(marcxml,'//datafield[@tag="610"]/subfield[@code>="a"]') AS lcsh FROM biblioitems) AS subjects WHERE lcsh LIKE "College%" OR lcsh LIKE "Seminary%" GROUP BY lcsh
What's happening is if there is more than one 610 on a bib record it's showing them both on one line. I tried using DISTINCT, but that's didn't do the trick, so I'm up for ideas.
I did some work with ExtractValue and marcxml a while back and IIRC this has to do with the way ExtractValue returns the data from the xml. I was unable to find a workaround at the time, but perhaps someone else has found one.
Kind Regards, Chris
_______________________________________________ Koha mailing list http://koha-community.org Koha@lists.katipo.co.nz http://lists.katipo.co.nz/mailman/listinfo/koha
-- Ian Walls Lead Development Specialist ByWater Solutions ALA Booth 732 Phone # (888) 900-8944 http://bywatersolutions.com ian.walls@bywatersolutions.com Twitter: @sekjal