Afficher le nom de toute les catégories pour un livre

cs_nwh Messages postés 2 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 22 mai 2012 - 7 mai 2012 à 23:19
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 - 9 mai 2012 à 19:14
Bonjour.

C'est surement ultra basique mais je n'y arrive pas.

J'ai deux tables.

Table1
id_categorie ( 1 , 2 , 3 ... )
nom_categorie ( avec des trucs genres Science Fiction, Historique, Policier )

Table2
Id_livre
nom_livre
categorie_1 ( 1 )
categorie_2 ( 4 )
categorie_3 ( 8 )


Je souhaite afficher les livres et leurs catégories .. ( plusieurs cat par livre )

Nom_Livre - Nom_categorie_1 - Nom_categorie_2

Mais je sais pas comment faire puisque dans Table2 j'ai un chiffre qui est lié a Table1 ..

Merci

2 réponses

deutch36 Messages postés 73 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 11 décembre 2012 3
9 mai 2012 à 10:08
Bonjour à vous,

Avez vous essayer ceci?

<?php
$requete = "SELECT nom_livre, 
           (SELECT nom_categorie  FROM livre ,categorie  WHERE livre.categorie_1 = categorie.id_categorie) AS categorie_1,
           (SELECT nom_categorie  FROM livre ,categorie  WHERE livre.categorie_2 = categorie.id_categorie) AS categorie_2,
           (SELECT nom_categorie  FROM livre ,categorie  WHERE livre.categorie_3 = categorie.id_categorie) AS categorie_3 
           FROM livre";
?>

Dans mon cas table1 renommée livre et table2 renommée categorie
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
9 mai 2012 à 19:14
Salut,

Déjà ta abse de données est mal structurée, ce n'est pas une bonne idée d'avoir mis des champs categorie_X dans ta table de livres. Je te montre vite fait comment tu devrais faire :

Et une petite requête pour obtenir ce que tu cherches:
SELECT livre.nom AS livre, categorie.nom AS categorie
     FROM livre
     INNER JOIN livre_has_categorie
     ON livre.id = livre_has_categorie.livre_id
          INNER JOIN categorie
          ON livre_has_categorie.categorie_id = categorie.id


On remarqueras que pour les livres disposant de catégories multiples on a le livre qui viens une fois pour chaque catégorie. En fonction de ce que tu cherches à faire ce n'est pas un problème. Pour un peu plus d'infos sur el fonctionnement basique des jointures, regarde ceci : Des bases de données relationnelles et multivaluées.
0
Rejoignez-nous