Hola,
cuando eliges el "programa" en la lista de opciones, veo que es un formulario de elección múltiple.
Es posible, entonces que un ejemplar tenga distintos valores para un mismo campo personalizado?
Si es así, entonces debes concatenar los valores para que queden en una sola fila.
Por tanto, he supuesto que:
Tienes 2 campos personalizados para los ejemplares.
El campo "origen" tiene el id 2.
El campo "programa" tiene el id 8.
Los valores asignados se guardan en el campo "expl_custom_small_text" de la tabla "expl_custom_values" (al crear los campos, elegiste el tipo de datos "texto")
Los campos pueden tener ninguno, uno o más valores asignados.
SELECT DISTINCT (SELECT GROUP_CONCAT(CONCAT(author_name,', ',author_rejete) ORDER BY author_name SEPARATOR ' | ') FROM authors,responsability WHERE authors.author_id = responsability.responsability_author AND responsability.responsability_notice = notice_id) AS autores, tit1 AS titulo, expl_cb AS cb, expl_cote AS signatura, tdoc_libelle AS soporte, (SELECT GROUP_CONCAT(expl_custom_small_text SEPARATOR ' | ') FROM expl_custom_values WHERE expl_custom_champ=2 AND expl_custom_origine=expl_id) AS origen, (SELECT GROUP_CONCAT(expl_custom_small_text SEPARATOR ' | ') FROM expl_custom_values WHERE expl_custom_champ=8 AND expl_custom_origine=expl_id) AS programa,expl_id FROM notices,exemplaires,expl_custom_values,docs_type WHERE notice_id=expl_notice AND expl_id = expl_custom_origine AND idtyp_doc=expl_typdoc ORDER BY expl_id ASC
Atención a las subqueries, que pueden llegar a provocar una caída del servidor de bbdd si no son eficientes. Esta consulta funcionará bien si la base de datos no es muy voluminosa (la probé con una bbdd de 5000 registros y funcionó muy bien). En bases de datos muy grandes mejor utilizar sentencias de tipo JOIN, o en este caso probablemente INNER JOIN. No domino mucho el lenguaje sql, me llevaría un tiempo encontrar una sentencia más eficiente, pero tal como está funciona.
Saludos,
Ramon