fusionner le résultat de deux requêtes MySQL [Résolu]

fusionner le résultat de deux requêtes MySQL [Résolu] - SQL/NoSQL - Programmation

Marsh Posté le 28-06-2011 à 09:43:19    

Bonjour,
j'ai un petit soucis avec un formulaire de recherche dans une base de données de livres :
 
j'ai une première table "livres" contenant tous mes livres (auteur, date, résumé, etc.) avec comme id l'ISBN
j'ai une seconde table "collections" ne contenant que les livres faisant partie d'une collection avec comme id l'ISBN de chaque livre aussi (trois colonnes : id, nom de la collection, numéro du livre dans cette collection).
 
Jusqu'à présent, on ne trouvait que "On a marché sur la Lune" qu'en recherchant un de ces mots, et non en cherchant le nom de la collection ("Tintin" en l'occurence). J'ai essayé de modifier mon script de recherche :
 
Quand je fais une recherche avec une requête "SELECT * FROM livres, collections WHERE id.livres = id.collections [...]", n'apparaissent que les livres présents dans la première ET la seconde table, les livres n'appartenant à aucune collection (absents de la seconde table) sont ignorés...
 
J'ai pensé fusionner deux requêtes : une pour les noms de collection (sur les deux tables), une pour les titres (uniquement sur la première table)...mais je ne sais pas trop comment faire, et je me pose la question des livres apparaissant en doublon dans les deux requêtes (ex. "Tintin au Tibet" )...
 
Je remercie d'avance celui ou celle qui prendra le temps de m'aider!
 
Sébastien


Message édité par sebyg le 28-06-2011 à 21:16:05
Reply

Marsh Posté le 28-06-2011 à 09:43:19   

Reply

Marsh Posté le 28-06-2011 à 10:05:45    

En utilisant une jointure à gauche, ça devrait faire ce que tu veux :
 
SELECT tes colonnes FROM livres LEFT JOIN collections ON collections.id = livres.id WHERE tes critères de recherche
 
Cette requête va retourner toutes les lignes de la table "livres", et les informations de la table "collections" correspondantes si elles existent (NULL sinon).

Reply

Marsh Posté le 28-06-2011 à 21:14:59    

PARFAIT!
C'est ça qu'il me fallait (et ça marche en plus ^^) !
Merci beaucoup!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed