J'ai une base de données de livres et d'auteurs, mais la base de données qui m'a été fournie a des doublons avec les auteurs apparaissant plus d'une fois. Je voudrais remplacer le fk_id_author dans la table écrite par le min (id_author) quand il y a des doublons.Comment remplacer les doublons dans PHP/MySQL?
Voici les trois tableaux (simplifiés pour l'exemple):
Auteur
id_author
author_name
Livre
id_book
book_name
écrit (auteur peut écrire n livres et un livre peut être écrit par n auteurs)
fk_id_book
fk_id_author
J'ai fait une demande de trouver des auteurs qui apparaît plus d'une fois dans la table des auteurs avec leurs papiers d'identité et ids des livres qu'ils ont écrits:
SELECT MIN w.fk_id_book, w.fk_id_author, d.author_name, d.nb_written
FROM Written_by w
JOIN (SELECT c.id_author, c.author_name, b.nb_written
FROM Author c
JOIN (SELECT MIN(a.id_author), a.author_name, COUNT(a.author_name)
nb_written
FROM Author a
GROUP BY a.author_name
HAVING nb_written >1) b
ON (c.author_name = b.author_name)
ORDER BY c.author_name ASC) d
ON w.fk_id_author = d.id_author)
GROUP BY w.fk_id_author
ORDER BY d.author_name ASC, w.fk_id_author ASC
Le résultat est:
fk_id_book ; fk_id_author ; author_name ; nb_written
80 ; 18 ; Rousseau ; 3
175 ; 127 ; Rousseau ; 3
1307 ; 150 ; Rousseau ; 3
127 ; 302 ; Voltaire ; 2
1503 ; 927 ; Voltaire ; 2
Le problème:
Je voudrais obtenir la liste des fk_id_book écrit par un auteur avec le même nom, mais pas le même identifiant sur la même ligne:
list of fk_id_book ; min(fk_id_author) ; author_name ; nb_written
80,175,1307 ; 18 ; Rousseau ; 3
127,1503 ; Voltaire ; 2
Est-il possible dans MySQL?
ensuite avec PHP, je mettrai à jour écrit pour la liste des fk_id_book 80,175,1307 avec fk_id_author 18.