Listados de ejemplares

192 views
Skip to first unread message

Ángel Córdoba lozada

unread,
Jan 29, 2015, 12:05:05 PM1/29/15
to pmb...@googlegroups.com


Cordial saludo a todos

Me he visto en dificultades para generar listados de ejemplares que contengan datos personalizables, es decir los datos que se están en las tabla expl_custom_values. No sé muy bien como relacionarlos en el script SQL, he intentado de todo, pero aun tiene fallas.

Agradecería que me dieran una mano.

Ramon Garcia Sarrion

unread,
Jan 29, 2015, 12:16:45 PM1/29/15
to pmb...@googlegroups.com
Hola,

depende de los campos personalizados que tengas definidos y del tipo de datos que contengan. Algo así:

Relación entre las tablas ejemplares y campos personalizados de los ejemplares:

select .... from exemplaires, exemplaires_custom_values 
where exemplaires.expl_id = exp_custom_values.expl_custom_origine

Relación entre las tablas ejemplares y campos personalizados de los ejemplares en el caso que el campo personalizado contenga una lista de opciones predefinidas:

select .... from 
exemplaires,expl_custom,expl_custom_values 
where exemplaires.expl_id = exp_custom_values.expl_custom_origine
and expl_custom.idchamp=expl_custom_values.expl_custom_champ

Si nos explicas con más detalle qué informes necesitas y qué campos personalizados tienes, igual podemos precisar más. 

Saludos,
Ramon

--
Has recibido este mensaje porque estás suscrito al grupo "PMB En Español" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a pmb-es+un...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a pmb...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/pmb-es/3f4815ae-047f-42de-b004-d7412b604e14%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Ángel Córdoba lozada

unread,
Jan 29, 2015, 12:36:26 PM1/29/15
to pmb...@googlegroups.com



Gracias Ramón por su pronta respuesta

Necesito generar listados de ejemplares que contengan los datos presonalizables especificamente de la tabla expl_custom_values, columna expl_custom-small_text. pero más especificamente los datos de programa y origen que son de una lista de opciones.

Voy adjuntar imagenes de las tablas, para sea más ilustrativo. De antemano gracias.

Ramon Garcia Sarrion

unread,
Jan 29, 2015, 12:47:22 PM1/29/15
to pmb...@googlegroups.com
Hola,

el campo programa también lo guardas en un campo "expl_custom_small_text"? Puedes mandar captura de pantalla de esta tabla con algunos de los valores correspondientes a "programa"?

De la tabla registros, qué campos necesitas? (autor, título...)
De la tabla ejemplares, qué campos necesitas? (número de ejemplar, signatura...)

Saludos,
Ramon

Ángel Córdoba lozada

unread,
Jan 29, 2015, 12:59:53 PM1/29/15
to pmb...@googlegroups.com


Gracias Ramón.

Efectivamente el campo programa lo guardo en el campo expl_custom_small_text.

Los campos de los registros que necesito son titulo, autor, de la tabla de ejemplares, codigo de barras, signatura, codigo estadistico, soporte

Le adjunto las imagenes

De nuevo muchas gracias.

Ramon Garcia Sarrion

unread,
Jan 29, 2015, 1:33:01 PM1/29/15
to pmb...@googlegroups.com
Hola,

puedes probar esto y me dices si funciona? es un poco complicado sin tener las tablas....

SELECT (SELECT expl_custom_small_text FROM exemplaires, expl_custom_values WHERE expl_custom_champ=8 AND exemplaires.expl_id=expl_custom_values.expl_custom_origine) AS origen, (SELECT expl_custom_small_text FROM exemplaires, expl_custom_values WHERE expl_custom_champ=8 AND exemplaires.expl_id=expl_custom_values.expl_custom_origine) AS programa, expl_cb AS cb, expl_cote AS signatura FROM exemplaires,expl_custom_values WHERE exemplaires.expl_id = expl_custom_values.expl_custom_origine ORDER BY expl_cote ASC

Saludos,
Ramon

Ramon Garcia Sarrion

unread,
Jan 29, 2015, 1:34:04 PM1/29/15
to pmb...@googlegroups.com
Ops, perdón

debes cambiar el primer 8 por un 2

Saludos,
Ramon

Ángel Córdoba lozada

unread,
Jan 29, 2015, 3:18:12 PM1/29/15
to pmb...@googlegroups.com

Ramón muchas gracias por su colaboración.

Algo sigue fallando pues cuando lo ejecuto, devuelve este mensaje Subquery returns more than 1 row


Ángel Córdoba lozada

unread,
Jan 29, 2015, 5:48:32 PM1/29/15
to pmb...@googlegroups.com

Ramón cree este Script con base a los datos que enviaste, pero continua el error. Le puedes echar una ojeada.

 SELECT expl_cd AS codigo, tit1 AS titulo, expl_cote AS signatura, expl_custom_small_text AS origen FROM exemplaires, expl_custom_values JOIN docs_type ON expl_typdoc=idtyp_doc JOIN docs_codestat ON idcode=expl_codestat JOIN exemplaires.expl_id=expl_custom_values.expl_custom_origine WHERE expl_typdoc IN (!!soporte!!) AND expl_condestat IN (!!estadistico!!) AND expl_custom_champ=2 IN (!!origen!!) ORDER BY soporte, estadistico, origen,1

Ramon Garcia Sarrion

unread,
Jan 29, 2015, 6:27:38 PM1/29/15
to pmb...@googlegroups.com
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

2015-01-29 21:18 GMT+01:00 Ángel Córdoba lozada <kaf...@gmail.com>:

Ramón muchas gracias por su colaboración.

Algo sigue fallando pues cuando lo ejecuto, devuelve este mensaje Subquery returns more than 1 row


--
Has recibido este mensaje porque estás suscrito al grupo "PMB En Español" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a pmb-es+un...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a pmb...@googlegroups.com.
campos_personalizados.png

Ángel Córdoba lozada

unread,
Feb 2, 2015, 11:22:33 AM2/2/15
to pmb...@googlegroups.com
Cordial saludo

Gracias Ramón es usted un mago para estos scripts; de casualidad no tendraá uno para sacar unicamente los usuarios que estan multados de acuerdo a una fecha.

Ramon Garcia Sarrion

unread,
Feb 2, 2015, 12:07:18 PM2/2/15
to pmb...@googlegroups.com
Hola,

cuando dices "multados" te refieres a los que están bloqueados?
En pmb puedes bloquear el préstamo a los lectores que se retrasan en la devolución.
http://doc.sigb.net/pmb/co/admin_param_theme_blocage_pret.html
Veo que la tabla "empr" tiene un campo fecha "date_fin_blocage". No he utilizado nunca los bloqueos, pero imagino que cuando pmb bloquea a un lector, debe añadir la fecha en este campo. Si es así, es sencillo crear el informe que comentas. Sería algo parecido a:

select empr_nom as apellidos, empr_prenom as nombre, empr_cb as cb, empr_adr1 as direccion, empr_cp as cp, empr_ville as ciudad, empr_mail as mail, empr_tel1 as telefono, date_fin_blocage as fecha_bloqueo where date_fin_blocage >= '!!fecha_bloqueo!!

En pmb, al crear el procedimiento deberías configurar el parámetro "fecha_bloqueo", eligiendo el tipo "selección de una fecha"

Con >= obtienes a todos los bloqueados después de esa fecha (o en esa fecha)
con <= obtienes a todos los que se bloquearon antes de esa fecha (o en esa fecha)

Si alguien utiliza los bloqueos, estaría bien que nos confirmara si cuando un lector está bloqueado, tiene una fecha en el campo "date_fin_blocage" en la tabla "empr".

Saludos,
Ramon 

Cristina De Juan

unread,
Mar 3, 2015, 10:36:53 AM3/3/15
to pmb...@googlegroups.com

Estoy intentando también obtener un listado de los ejemplares catalogados, con diferente información (número de registro, signatura, título, autor), pero no encuentro como debo hacerlo en el PMB. ¿Cómo debo hacerlo? Gracias!
Reply all
Reply to author
Forward
0 new messages