catalogue: sous-collection

Bonjour,

Je repose une question restée sans réponse sur la liste et dans la rubrique catalogue du forum.
Je cherche à modifier un lot de notices dont la sous-collection est incorrecte. Je me suis basé sur la requête permettant un changement de collection mais voilà ça coince quelque part...et comme je n'ai pas les identifiants hébergeurs pour accéder à PhpMyAdmin, je n'ai pas accès aux tables...

Voici la requête en question:
UPDATE sub_collections, notices SET sub_coll_id=!!sub_coll_name!!, ed1_id = sub_coll_parent WHERE notice_id in (CADDIE(NOTI))

et ses paramètres:
SELECT sub_coll_id, sub_coll_name FROM sub_collections ORDER BY sub_coll_name

et l'erreur retournée: L'exécution de la requête sur les éléments pointés a échoué, le serveur a répondu : Duplicate entry '7' for key 'PRIMARY'

Merci,
Virginie Dupont
CDI Collège Notre-Dame
74470 Bellevaux


Réponses

  • juin 2018 modifié
    Bonsoir,

    Je commence par un rappel
    Comme signalé dans le guide en ligne de PMB, une collection est forcément liée à un éditeur (on peut avoir des collections homonymes chez des éditeurs différents).
    Une sous-collection est forcément liée à une collection, et par conséquent, à l'éditeur de cette collection.
    Donc si on change la sous-collection, il faut changer en même temps la collection et l'éditeur de celle-ci.
    C'est pourquoi, dans les sous-requêtes, j'ai affiché la chaîne complète afin de pouvoir choisir judicieusement la (sous-)collection.


    Important : ré-indexer ensuite le panier  !!


    Voici la requête qui permet de changer un lot de notices de collection

    UPDATE collections, notices SET coll_id=!!nom_collection!!, ed1_id = collection_parent WHERE notice_id in (CADDIE(NOTI))
    Paramètres : liste de choix à partir d'une requête
    SELECT collection_id, CONCAT(collection_name, " - Editeur : ", ed_name) FROM collections, publishers WHERE ed_id = collection_parent ORDER BY collection_name
    N.B. NE PAS cocher "liste multiple"

    Voici la requête qui permet de changer un lot de notices de sous-collection

    UPDATE collections, notices SET subcoll_id=!!nom_sous_collection!!, coll_id = collection_id, ed1_id = collection_parent WHERE notice_id in (CADDIE(NOTI))
    Paramètres : liste de choix à partir d'une requête
    SELECT sub_coll_id, CONCAT(sub_coll_name, " - Sous-coll. de ", collection_name, " - Editeur : ", ed_name) FROM sub_collections, collections, publishers WHERE sub_coll_parent = collection_id  AND ed_id = collection_parent ORDER BY sub_coll_name
    N.B. NE PAS cocher "liste multiple"

    Ces procédures sont disponibles en téléchargement (en ISO ou en UTF-8)  dans le zip ci-dessous ou sur mon site, à l'adresse habituelle (dans le zip Catalogue)


    Astuce complémentaire
    Même si vous n'avez pas accès à PhpMyAdmin, vous pouvez quand même voir les liens entre les tables
    L'adresse doit ressembler à ceci


    Cordialement,
    Anne-Marie Cubat







Connectez-vous ou Inscrivez-vous pour répondre.