par
Cyrano » 17 juin 2011, 07:22
Normal, comme il n'y a aucune condition de jointure, tu sors un produit cartésien, c'est à dire que pour chaque titre de revue trouvé, tu as toutes les collections et inversement.
Là, il faudrait faire une requête UNION qui pourrait ressembler à ceci :
SELECT
revues.id AS ouvrage_id,
revues.titre_". $lang ." AS ouvrage_titre,
'revue' AS ouvrage_type
FROM revues
WHERE revues.titre_". $lang ." LIKE '".$recherche."%'
UNION
SELECT
collections.id AS ouvrage_id,
collections.titre_". $lang ." AS ouvrage_titre,
'collection' AS ouvrage_type
FROM collections
WHERE collections.titre_". $lang ." LIKE '".$recherche."%'
ORDER BY ouvrage_titre ASC
En clair, no construit deux requêtes, une pour les revues, une autre pour les collections, et on regroupe en une seule requête avec UNION. Les requêtes qui composent UNION doivent collecter les mêmes colonnes d'où les alias similaires et le fait que dans ma proposition j'ai ajouté un alias ouvrage_type pour te permettre de savoir si le titre trouvé est une revue ou une collection.
Je te recommande une lecture de
la documentation sur le sujet.
Normal, comme il n'y a aucune condition de jointure, tu sors un produit cartésien, c'est à dire que pour chaque titre de revue trouvé, tu as toutes les collections et inversement.
Là, il faudrait faire une requête UNION qui pourrait ressembler à ceci :[sql]SELECT
revues.id AS ouvrage_id,
revues.titre_". $lang ." AS ouvrage_titre,
'revue' AS ouvrage_type
FROM revues
WHERE revues.titre_". $lang ." LIKE '".$recherche."%'
UNION
SELECT
collections.id AS ouvrage_id,
collections.titre_". $lang ." AS ouvrage_titre,
'collection' AS ouvrage_type
FROM collections
WHERE collections.titre_". $lang ." LIKE '".$recherche."%'
ORDER BY ouvrage_titre ASC[/sql]
En clair, no construit deux requêtes, une pour les revues, une autre pour les collections, et on regroupe en une seule requête avec UNION. Les requêtes qui composent UNION doivent collecter les mêmes colonnes d'où les alias similaires et le fait que dans ma proposition j'ai ajouté un alias ouvrage_type pour te permettre de savoir si le titre trouvé est une revue ou une collection.
Je te recommande une lecture de [url=http://dev.mysql.com/doc/refman/5.0/fr/union.html]la documentation sur le sujet[/url].