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