J'ai deux tables que j'interroge. Dans une table, il y a des champs qui indiquent si un joueur figurant sur une photo est mort/vivant, dans le Hall of Fame, etc. Le champ que je viens d'ajouter s'appelle "new_flag". Cela indique si la photo est de nouveau à mon inventaireMySQL sélectionnez aide; Sous-requête?
Sans GROUP BY, les résultats ressemblerait à quelque chose comme ça (Notez que certains joueurs ont plus d'un produit/photo)
name firstname lastname hall_of_fame deceased new_flag
---- --------- -------- ------------ -------- --------
EARL AVERILL SR EARL AVERILL SR Y Y Y
BILL TERRY BILL TERRY Y Y N
BILL TERRY BILL TERRY Y Y Y
BILL TERRY BILL TERRY Y Y N
BOBBY DOERR BOBBY DOERR Y N N
BOBBY DOERR BOBBY DOERR Y N N
Avec un GROUP BY ma La requête ressemble à ceci, mais elle ne peut pas toujours trouver le nouveau drapeau puisque chaque joueur peut avoir plus d'un enregistrement.
SELECT CONCAT(a.firstname,' ',a.lastname) AS name,
a.firstname,
a.lastname,
b.hall_of_fame,
b.deceased,
b.new_flag
FROM vm_product_name AS a,
vm_product_new_attribute AS b
WHERE b.hall_of_fame ='Y'
AND a.product_id = b.product_id
GROUP BY CONCAT(a.firstname,' ',a.lastname)
ORDER BY a.lastname,
a.firstname;
Le problème est que je ne veux que chaque joueur apparaisse une fois sur ma page Web, mais ..... Je veux aussi ajouter une icône « nouveau » à côté du nom du joueur si elles ont au moins 1 nouvelle photo Des idées comment je peux faire ça? Je sais que ce n'est pas la meilleure façon de le faire, mais il est construit comme une extension Joomla/Virtumart et je ne peux pas changer la structure de la base de données pour le moment.
En aparté, vous pouvez regrouper plusieurs colonnes, alors ne pas utiliser le CONCAT dans le groupe par clause, utilisez juste " GROUP BY a.firstname, a.lastname ". La principale raison pour éviter d'utiliser des fonctions dans les clauses GROUP BY (ainsi que WHERE et ORDER BY) est que cela empêchera MySQL d'utiliser un index, et pourrait l'amener à construire une table temporaire qui ralentira considérablement votre requête. –