2010-10-18 7 views
0

Lorsque je tire la requête suivante, je reçois les résultats je rechercherai regroupés par event.id:mysql récupérer plusieurs à plusieurs rangées

SELECT events.id AS id,events.name AS event,categories.name AS categories 
       FROM events,categories,event_dates,event_categories 
       WHERE events.preview = 0 AND event_dates.start_date > DATE(NOW()) 
        AND events.id = event_dates.event_id AND events.id = event_categories.event_id AND event_categories.category_id = categories.id 
       GROUP BY events.id LIMIT 0,5 

Avec le résultat suivant (event_categories étant la table qui lie les événements à des catégories) :

Array ([id] => 144 [event] => Twickenham Stadium Tours and World Rugby Museum [name] => Sport) 

Cependant, il s'agit d'une relation plusieurs à plusieurs et cette requête renvoie uniquement une catégorie. Comment se réorganiser cette/formuler une requête qui saisirait toutes les catégories

Répondre

0

essayer d'utiliser group_concat dans votre requête

GROUP_CONCAT(DISTINCT categories.name ORDER BY categories.name SEPARATOR ",") 
AS categories 

si la requête finale comme:

SELECT events.id AS id,events.name AS event, 
GROUP_CONCAT(DISTINCT categories.name ORDER BY categories.name SEPARATOR ",") 
    AS categories 
       FROM events,categories,event_dates,event_categories 
       WHERE events.preview = 0 AND event_dates.start_date > DATE(NOW()) 
        AND events.id = event_dates.event_id AND events.id = event_categories.event_id AND event_categories.category_id = categories.id 
       GROUP BY events.id LIMIT 0,5