[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[pmb.user] Re: Requête d'inventaire
Bonjour Anne-Marie,
Merci beaucoup pour votre rapidité et pour les résultats obtenus avec la
requête d'inventaire.
Toutefois, je me permets de relater mes déboires :'( qui d'après votre
autre message sur la ml semblent provenir de la version d'easyphp. Je
suis en version 1.7 avec php 4.3.3 et mysql 4.0.15
J'ai eu un premier blocage avec
GROUP_CONCAT(REPEAT(CONCAT(a.author_name, ', ', a.author_rejete)
Je l'ai remplacé par
concat(author_name,' ',author_rejete)
J'ai eu un deuxième blocage avec
1/(r.responsability_type=0)) SEPARATOR ', ')
Je l'ai supprimé. Mais ça devait servir à quelque chose ?
Ce qui donne :
select section_libelle as Section, expl_cote as Cote,
concat(author_name, ' ',author_rejete) as Auteur, tit1 as Titre, expl_cb as 'Code barres'
from authors a, exemplaires e, notices n, lenders l, docs_section,
responsability r where expl_owner =!!proprietaire!! and expl_notice=notice_id
and expl_owner=idlender and expl_section=idsection and responsability_notice = notice_id
and responsability_author = author_id group by expl_cb order by expl_cote, expl_section, expl_cb
Et ça marche :-)
Je suggère humblement deux petites modif :
1°) expl_cb as 'Code barres' au lieu de expl_cb as Codes_barres
pour éviter le underscore dans l'état de sortie
2°) Dans les options du paramètre Propriétaire,
dans le champ "Choix vide/Libellé" saisir "Choisir un propriétaire"
de sorte qu'à l'exécution de la requête, ce libellé apparaisse
en premier dans la liste des propriétaires
Hervé BATARDIERE
Anne-Marie Cubat-Vandeputte a écrit :
>Bonjour,
>
>Voici la requête demandée - on sélectionne à chaque fois un seul
>propriétaire
>La procédure affiche le nom de l'auteur uniquement s'il s'agit d"un auteur
>principal.
>Le nom des auteurs secondaires n'est pas mentionné. (sinon, on pourrait
>avoir plusisurs fois le même exemplaire, avec à chaque fois le nom d'un des
>auteurs secondaires).
>
>
>Version sans n° de code-barres
>
>select section_libelle as Section, expl_cote as Cote,
>GROUP_CONCAT(REPEAT(CONCAT(a.author_name, ', ', a.author_rejete),
>1/(r.responsability_type=0)) SEPARATOR ', ') as Auteurs, tit1 as Titre from
>authors a, exemplaires e, notices n, lenders l, docs_section, responsability
>r where expl_owner = !!proprietaire!! and expl_notice=notice_id and
>expl_owner=idlender and expl_section=idsection and responsability_notice =
>notice_id AND responsability_author = author_id group by expl_cb order by
>expl_cote, expl_section, expl_cb
>
>Titre du paramètre : propriétaire / ou prêteur (comme vous voulez)
>Liste de choix à partir d'un requête
>Options : select idlender, lender_libelle from lenders order by
>lender_libelle (NE PAS cocher case multiple)
> voir explications ci-dessous
>
>
>Version avec n° de code-barres
>
>select section_libelle as Section, expl_cote as Cote,
>GROUP_CONCAT(REPEAT(CONCAT(a.author_name, ', ', a.author_rejete),
>1/(r.responsability_type=0)) SEPARATOR ', ') as Auteurs, tit1 as Titre,
>expl_cb as Code_barres from authors a, exemplaires e, notices n, lenders l,
>docs_section, responsability r where expl_owner =!!proprietaire!! and
>expl_notice=notice_id and expl_owner=idlender and expl_section=idsection and
>responsability_notice = notice_id AND responsability_author = author_id
>group by expl_cb order by expl_cote, expl_section, expl_cb
>
>
>
>**IMPORTANT : Remarque de syntaxe**
>
>Il y a une différence cruciale entre
> d'une part where expl_owner = !!proprietaire!! ou
>where idsection = !!section!! ou where expl_statut = !!statut!!
> et d'autre part where expl_owner in (!!proprietaire!!) ou where
>idsection in (!!section!!) ou where expl_statut in (!!statut!!)
>
>
>Si j'écris where expl_owner in (!!proprietaire!!) - j'emploie le mot "in"
>et les parenthèses
> c'est que je veux laisser la possibilité de choisir un ou plusieurs
>propriétaires
> vous devez cocher la case "liste multiple" pour disposer vraiment de ce
>choix (au moment de l'exécution de la requête)
>
>Mais si j'écris where expl_owner = !!proprietaire!! - j'emploie le signe
>égal
> dans ce cas, je dis de NE PAS cocher "liste multiple"
> car je veux restreindre le choix à une seule possibilité (un seul
>statut, dans ce cas-ci)
> même si vous cochez la case "liste multiple", cela va déclencher un
>message d'erreur au moment de l'exécution
>
>N.B. Le fait d'employer la syntaxe avec in ( ) et de cocher la case "liste
>multiple" n'oblige pas l'utilisateur à choisir - au moment de l'exécution de
>la requête -plusieurs éléments dans la liste, il peut très bien ne
>sélectionner par exemple qu'un seul propriétaire.
>Mais le fait d'avoir employé cette syntaxe avec "in" et d'avoir coché cette
>case rend votre procédure plus polyvalente, puisqu'on peut demander la liste
>pour 1 ou 2 propriétaires, au choix.
>Idem pour les ections ou statuts.
>
>A vous de voir ce que vous préférez employer dans votre requête.
>
>
>**La syntaxe est donc fort importante**
>
>En résumé
> - pour avoir la possibilité de choisir plusieurs éléments dans la liste
> il faut employer la syntaxe avec in( ) ET cocher la case "liste
>multiple"
> (les 2 conditions doivent être remplies)
>
> - pour être sûr de restreindre le choix à une possibilité et éviter tout
>risque de message d'erreur
> soit il faut employer la syntaxe avec in( ) ET NE PAS cocher la case
>"liste multiple"
> soit il faut employer la syntaxe avec le signe = ET NE PAS cocher la case
>"liste multiple"
>
> - attention si vous avez employé la syntaxe avec le signe = (c'est le
>grand "piège")
> ne cochez surtout pas la case "liste multiple" - sinon l'utilisateur sera
>confronté à un message d'erreur s'il essaye de choisir plusieurs éléments
>
>
>**Rappel : Comment sélectionner plusieurs éléments dans la liste
>déroulante?**
>
>Avec le système habituel de Windows
> - pour sélectionner des éléments consécutifs dans une liste : on
>maintient la touche MAJ (SHIFT) enfoncée, et on clique sur le premier et le
>dernier élément à sélectionner.
> - pour sélectionner des éléments non consécutifs dans une liste : on
>maintient la touche CTRL enfoncée, et on clique sur les éléments à
>sélectionner.
>
>
>
>Sinon, si vous voulez d'autres requêtes d'inventaire, allez voir sur le
>Wiki, j'ai mis en ligne quelques variantes.
>Voir requêtes sql - inventaire (3e partie)
>
>
>Bonne journée,
>
>Anne-Marie Cubat
>
>Ecole N.-D. de la Sagesse
>Avenue Van Overbeke, 10
>B-1083 Bruxelles
>Belgique
>
>----- Original Message -----
>From: "Hervé BATARDIERE" <herve.batardiere@free.fr>
>To: <pmb.user@pizz.net>
>Sent: Thursday, April 06, 2006 2:24 AM
>Subject: [pmb.user] Requête d'inventaire
>
>
>Bonjour à tous,
>
>Je voudrais faire une requête pour éditer un inventaire des documents de
>la bibliothèque avec les éléments suivants :
>
>Section Cote Titre Auteur nom + prénom pour un Prêteur dans une
>liste de choix
>
>Voici le début de la requête, mais je coince sur le nom de l'auteur
>
>select expl_section as Section, expl_cote as Cote, tit1 as Titre from
>exemplaires, notices, docs_statut, lenders where
>expl_owner=!!proprietaire!! and expl_notice=notice_id and
>expl_statut=idstatut and expl_owner=idlender and expl_section=idsection
>order by expl_cote, expl_section
>
>Que faut-il rajouter ?
>
>Merci de votre aide
>
>Hervé batardiere
>
>
>Liste de diffusion pmb.user
>Pour se désinscrire : mailto:pmb.user_request@sigb.net?subject=unsubscribe
>
>
>
>
>Liste de diffusion pmb.user
>Pour se désinscrire : mailto:pmb.user_request@sigb.net?subject=unsubscribe
>
>
>
>
>
>
>
Liste de diffusion pmb.user
Pour se désinscrire : mailto:pmb.user_request@sigb.net?subject=unsubscribe