{MySQL} Demande d'aide pour updater une table
LeGhe
-
moderno31 Messages postés 872 Date d'inscription Statut Membre Dernière intervention -
moderno31 Messages postés 872 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je crée une base de données de librairie.
Mon logiciel de saisie de livres génère une base SQL, avec une table BookxAuthor notamment qui croise l'ID d'un livre avec les ID des auteurs, sous forme :
BookID AuthorID
3107 1159
3135 1163
3135 1175
Le livre 3107 a un auteur, le 1159
Le livre 3135 a 2 auteurs, les 1163 et 1175
De là, il faut que j'exporte vers une autre table "Book" ces éléments, entre autres.
J'utilise donc la requête suivante :
ALTER TABLE book ADD auteurID INT;
UPDATE book, bookxauthor
SET book.`auteurID`=bookxauthor.AuthorID
WHERE book.ID=bookxauthor.BookID;
Qui me donne dans la table Book :
ID auteurID Titre Description etc...
3107 1159 Blabla Blablabla etc...
3135 1163 Blabla Blablabla etc...
Qui fonctionne parfaitement lorsqu'il n'y a qu'un seul auteur. Quand il y en a plus, la requête zappe simplement les auteurs suivants.
Comment créer un champ conditionnel auteurID2 lorsque cela est nécessaire ?
ID auteurID auteurID2 Titre Description etc...
3107 1159 NULL Blabla Blablabla etc...
3135 1163 1175 Blabla Blablabla etc...
Merci de vore aide !!
Je crée une base de données de librairie.
Mon logiciel de saisie de livres génère une base SQL, avec une table BookxAuthor notamment qui croise l'ID d'un livre avec les ID des auteurs, sous forme :
BookID AuthorID
3107 1159
3135 1163
3135 1175
Le livre 3107 a un auteur, le 1159
Le livre 3135 a 2 auteurs, les 1163 et 1175
De là, il faut que j'exporte vers une autre table "Book" ces éléments, entre autres.
J'utilise donc la requête suivante :
ALTER TABLE book ADD auteurID INT;
UPDATE book, bookxauthor
SET book.`auteurID`=bookxauthor.AuthorID
WHERE book.ID=bookxauthor.BookID;
Qui me donne dans la table Book :
ID auteurID Titre Description etc...
3107 1159 Blabla Blablabla etc...
3135 1163 Blabla Blablabla etc...
Qui fonctionne parfaitement lorsqu'il n'y a qu'un seul auteur. Quand il y en a plus, la requête zappe simplement les auteurs suivants.
Comment créer un champ conditionnel auteurID2 lorsque cela est nécessaire ?
ID auteurID auteurID2 Titre Description etc...
3107 1159 NULL Blabla Blablabla etc...
3135 1163 1175 Blabla Blablabla etc...
Merci de vore aide !!
A voir également:
- {MySQL} Demande d'aide pour updater une table
- Table ascii - Guide
- Table des matières word - Guide
- Updater - Télécharger - Édition & Programmation
- Software updater - Télécharger - Optimisation
- Iobit software updater - Télécharger - Pilotes & Matériel
1 réponse
Si tu veux créer des conditions dans tes requetes tu peux faire appel à un CASE WHEN...
ex :
Client_Auth : Authentification Client
CASE WHEN `Client_Auth` = 0 THEN 'Non' ELSE 'Oui' END AS ins_auth
Tu peux mettre CASE WHEN champTruc IS NULL ou champTruc = 0 ou champTruc In(4,5)...comme tu veux
https://www.php.net/manual/fr/function.is-null.php
Essaye plutot de faire
UPDATE book,
LEFT JOIN bookxauthor ON bookxauthor.BookID = book.ID
SET book.`auteurID`=bookxauthor.AuthorID
A la fin de ta ligne LEFT tu peux ajouter une clause AND pour filrer les lignes remontées via la jointure
ex :
Client_Auth : Authentification Client
CASE WHEN `Client_Auth` = 0 THEN 'Non' ELSE 'Oui' END AS ins_auth
Tu peux mettre CASE WHEN champTruc IS NULL ou champTruc = 0 ou champTruc In(4,5)...comme tu veux
https://www.php.net/manual/fr/function.is-null.php
Essaye plutot de faire
UPDATE book,
LEFT JOIN bookxauthor ON bookxauthor.BookID = book.ID
SET book.`auteurID`=bookxauthor.AuthorID
A la fin de ta ligne LEFT tu peux ajouter une clause AND pour filrer les lignes remontées via la jointure