SQL – Astuces

Comment interroger les libellés des valeurs autorisés plutôt que les codes dans une requête ?

SELECT
champ_de recherche

FROM table

WHERE champ_de_recherche=<<libelle_champ|valeur_autorisee>>

Exemple : RECHERCHE GUIDEE PAR TYPE DE DOCUMENT

SELECT
biblio.title AS Titre,
biblio.author AS Auteur,
biblioitems.publicationyear AS Date,
items.barcode AS Code_barres,
items.itemcallnumber AS Cote

FROM items,biblio,biblioitems

WHERE items.itype=<<TYPE : |ITYPE>> AND items.biblionumber = biblioitems.biblionumber AND biblio.biblionumber = biblioitems.biblionumber

Comment extraire les attributs lecteurs?

SELECT
borrowers.borrowernumber,
borrowers.surname,
borrowers.firstname,
borrowers.cardnumber,
borrower_attributes.code,
borrower_attributes.attribute

FROM borrowers

LEFT JOIN borrower_attributes ON (borrowers.borrowernumber=borrower_attributes.borrowernumber)
LEFT JOIN borrower_attribute_types ON (borrower_attribute_types.code=borrower_attributes.code)

GROUP BY borrower_attributes.attribute

ORDER BY borrowers.surname, borrowers.firstname ASC

Résultat :

Comment faire un DUMP MySQL en ligne de commande?

mysqldump -u $db_user -p$db_pass $db_name | gzip > $publicdumpdir/$dumpName

Comment afficher les libellés des valeurs autorisés plutôt que les codes dans le résultat d’une requête

SELECT
authorised_values.authorised_value,
authorised_values.lib,
champ_de recherche

FROM table

WHERE (authorised_values.category= »code_liste »
AND champ_de recherche= authorised_values.authorised_value)

Exemple : RECHERCHE GUIDEE SUR LE STATUT DU DOCUMENT

SELECT
biblio.title AS Titre,
items.barcode AS Code_barres,
items.itemcallnumber AS Cote,
authorised_values.lib AS statut

FROM items,biblio,biblioitems, authorised_values

WHERE items.notforloan=<<STATUT |statut>>
AND items.biblionumber = biblioitems.biblionumber
AND biblio.biblionumber = biblioitems.biblionumber
AND authorised_values.category= ‘statut’
AND items.notforloan = authorised_values.authorised_value

Résultat :

Comment afficher plusieurs valeurs autorisées dans une même requête (sous-requêtes SELECT)

Exemple pour le module adhérent :

SELECT
borrowers.cardnumber AS numero_carte,
borrowers.surname AS Nom,
borrowers.firstname AS Prenom,
borrowers.email AS email_principal,
borrowers.emailpro AS email_alternatif,
borrowers.dateenrolled AS date_inscription,
borrowers.dateexpiry AS date_expiration,
borrowers.categorycode AS categorie_pret,
(SELECT description FROM categories WHERE categorycode=borrowers.categorycode) AS categorie,
borrowers.sort1,
(SELECT lib FROM authorised_values WHERE category=’Bsort1′ AND authorised_value=sort1) AS sort1_description,
borrowers.sort2,
(SELECT lib FROM authorised_values WHERE category=’Bsort2′ AND authorised_value=sort2) AS sort1_description2
FROM borrowers
LEFT JOIN categories USING(categorycode)
ORDER BY borrowers.surname, borrowers.firstname

Exemple sur les exemplaires :

SELECT
items.homebranch AS SITE,
items.location AS LOCALISATION,
(SELECT description FROM itemtypes WHERE itemtype=items.itype) AS ‘TYPE DOC’,
items.itemcallnumber AS COTE,
items.barcode AS CB,
items.itemnotes AS NOTES,
(SELECT lib FROM authorised_values WHERE category=’statut’ AND authorised_value=notforloan) AS statut_description,
(SELECT lib FROM authorised_values WHERE category=’LOST’ AND authorised_value=itemlost) AS statut_perdu
FROM items
ORDER by items.itemcallnumber, items.location ASC

Résultat :

Valeurs autorisées par défaut : comment s’y retrouver pour une version communautaire?

Il existe quelques catégories de valeurs autorisées qui sont créées automatiquement lors de l’installation de Koha. (Remerciements : http://koha.zone.ccsr.qc.ca/valeurs-autorisees/)

Asort1 et Asort2 : Valeurs utilisées à des fins statistiques pour les champs Critère 1 et Critère 2 dans le module Acquisitions. Le A de Asort1 représente Acquisition.

Bsort1 et Bsort 2 : Valeurs utilisées à des fins statistiques pour les champs Critère 1 et Critère 2 lors de la saisie d’un usager dans le module Usagers. Le B de Bsort1 signifie Borrower, terme anglais qui est l’équivalent d’un usager.

BOR_NOTES : Liste les valeurs autorisées pour les messages pré-définis inscrit dans le dossier de l’usager

CCODE : Valeur autorisée pour des codes de collections (filtre en recherche avancée dans les exemplaires)

DAMAGED : Liste les valeurs autorisées pour définir un exemplaire endommagé.

DEPARTMENT : Liste les départements pour la réserve de cours. Un département est au moins obligatoire pour créer les cours dans la réserve de cours.

ITEMTYPECAT : Liste les groupes de type de document

LOC : Permet de définir les localisations de l’exemplaire (952$c Marc _ 995$e Unimarc) -> important pour un bon fonctionnement de l’outil Inventaire

LOST : Permet de définir le statut Perdu d’un exemplaire (952$1 Marc – 995$1 Unimarc). Les valeurs autorisées pour cette catégorie doivent être numérique.

MANUAL_INV : Permet de définir des valeurs pour les factures manuelles. La valeur autorisée sera inscrite dans le champ description de l’amende et la description de la valeur autorisée sera inscrite pour le montant de l’amende.

NOT_LOAN : Permet de définir les raisons pour lesquels un exemplaire précis est exclu du prêt. (952$7 Marc )

ORDER_CANCELLATION_REASON : Liste les raisons d’annulation d’une commande

REPORT_GROUP : Permet de catégoriser les rapports SQL.

REPORT_SUBGROUP : Permet de créer des sous-groupes pour les catégories des rapports SQL

RESTRICTED : Permet de définir des statuts restrictifs pour les documents (952$5 Marc)

SUGGEST : Permet de prédéfinir des réponses à l’acceptation ou au refus des suggestions d’achat des usagers.

SUGGEST_STATUS : Liste les statuts supplémentaires qui peuvent être ajouté pour définir un statut aux suggestions

TERM : Liste des sessions pour la réserve de cours

WITHDRAWN : Permet de définir un statut d’élagage d’un exemplaire (952$0 Marc _ 995$0 Unimarc)

YES_NO : C’est une valeur autorisée générique pour avoir un choix Oui/Non

Mais où sont les listes de valeurs « branches » et « itemtypes »?

! les listes branches et itemtypes qui sont visibles lors du mapping des grilles ne sont pas gérées dans les Valeurs autorisées MAIS dans l’Administration dans Sites et Groupes (branches) et Types de document (itemtypes)

→ Propriétaire : Champ Koha: items.homebranch, Non répétable, Facultatif, | Valeur aut:branches (995$b)
→ Dépositaire : Champ Koha: items.holdingbranch, Non répétable, Facultatif, | Valeur aut:branches (995$c)

→ Type de document : Champ Koha: items.itype, Non répétable, Facultatif, | Valeur aut:itemtypes

Comment proposer dans un rapport une saisie libre dans un champ

SELECT
champ_de recherche

FROM table

WHERE champ_de recherche LIKE <<nom_du_libelle>>

Exemple : RECHERCHE GUIDEE PAR COTE

SELECT
biblio.datecreated AS Date_creation,
biblio.title AS Titre,
biblio.author AS Auteur,
items.itemcallnumber AS Cote

FROM `items` , `biblio`,`biblioitems`

WHERE itemcallnumber LIKE <<cote>>
AND biblio.biblionumber = items.biblionumber
AND biblioitems.biblionumber = items.biblionumber

Astuce de recherche : Utiliser la troncature gauche et droite % pour rechercher sur une série de cote : %A% ou _A% pour rechercher à gauche sur 1 caractère

Comment rechercher sur un intervalle de dates?

Un exemple vaut parfois mieux que de longues explications :

SELECT
biblio.datecreated AS Date_creation,
biblio.title AS Titre,
biblio.author AS Auteur,
items.itemcallnumber AS Cote

FROM `items` , `biblio`,`biblioitems`

WHERE
biblio.datecreated BETWEEN <<date de creation BETWEEN (yyyy-mm-dd)|date>> AND <<and (yyyy-mm-dd)|date>>
AND biblio.biblionumber = items.biblionumber
AND biblioitems.biblionumber = items.biblionumber

Résultat :

Comment afficher la structure d’une table quand on n’a pas accès à la base Koha

SELECT *
FROM nom_de_la_table
LIMIT 5

Exemple : TABLE branches

SELECT *
FROM branches
LIMIT 20

Comment, dans le rapport, faire un lien direct vers la notice bibliographique ou exemplaire ?

! malgré le soin apporté à la rédaction de cette faq, l’éditeur HTML de WordPress modifie parfois les ‘quote’… veillez bien si vous copier-coller les requêtes qui suivent à vérifier celles-ci lors du coller dans Koha. Pour cette raison, une image de la requête vous est proposée en regard du texte de celle-ci

Le lien pourra se faire vers la notice en interface pro :

CONCAT('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',biblioitems.biblionumber,'\">',biblioitems.biblionumber,'</a>')

Mais aussi vers l’OPAC : Exemple de RECHERCHE GUIDEE PAR TYPE DE DOCUMENT – LIEN VERS L’OPAC

SELECT
biblio.title AS Titre,
biblio.author AS Auteur,
CONCAT('<a href=\"http://catalogue.enc-sorbonne.fr/cgi-bin/koha/opac-detail.pl?biblionumber=',biblio.biblionumber,'\">',biblio.biblionumber,'</a>') AS Lien,
items.barcode AS Code_barres

FROM items,biblio,biblioitems

WHERE items.itype=<<TYPE : |itemtypes>>
AND items.biblionumber = biblioitems.biblionumber
AND biblio.biblionumber = biblioitems.biblionumber

ou vers l'exemplaire en mode modification sur le code-barres par exemple:

CONCAT( '<a href=\"/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=',biblio.biblionumber,'&itemnumber=',items.itemnumber,'\">', barcode, '</a>' ) AS CodeBarres,

 

Comment trouver les notices bibliographiques sans exemplaires – (USING)

SELECT
biblio.biblionumber,
title,
isbn,
issn,

FROM
biblio
LEFT JOIN biblioitems USING(biblionumber)
LEFT JOIN items USING(biblionumber)
WHERE
itemnumber is NULL

Comment savoir si un champ de la notice d’exemplaire est vide ?

! malgré le soin apporté à la rédaction de cette faq, l’éditeur HTML de WordPress modifie parfois les ‘quote’… veillez bien si vous copier-coller les requêtes qui suivent à vérifier celles-ci lors du coller dans Koha. Pour cette raison, une image de la requête vous est proposée en regard du texte de celle-ci
Exemple sur le 995$l (et oui… curieusement on interroge le 999)

SELECT
CONCAT( '<a href=\&quot;/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=',items.biblionumber,'&itemnumber=',items.itemnumber,'\">', barcode, '</a>' ) AS CodeBarres,

itemcallnumber AS Cote,
items.itemnotes as noteU,
ExtractValue(more_subfields_xml,"//datafield[@tag="999"]/subfield[@code="l"]")as l
FROM
items
WHERE
ExtractValue(more_subfields_xml,"//datafield[@tag="999"]/subfield[@code="l"]") <> " "