Bonjour,
Il est nécessaire en premier lieu de consulter le schéma (simple) de la bdd concernée ; en pièce jointe. ( displayed_timestamp n'est plus un timestamp mais un datetime )
La requête doit :
- Récupérer tous les sites actif ( site_active = 1 )
- La catégorie du site
- La concaténation des formats de pub disponibles pour le site
- Le nombre de ligne ajoutées hier dans displayed pour chaque site
La requête fonctionne sans le dernier critère :
Mais si à la clause WHERE je rajoute :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT site.*, category.category_name, COUNT(displayed.displayed_ip) AS display_count, GROUP_CONCAT( pub_format.pub_format_name SEPARATOR ', ') AS pub_format_list FROM site LEFT JOIN category USING(category_id) LEFT JOIN available_format USING(site_id) LEFT JOIN pub_format USING(pub_format_id) LEFT JOIN displayed USING(site_id) WHERE site_active = 1 GROUP BY site.site_id ORDER BY site_name
Alors la requête ne me renvoie aucune ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part displayed.displayed_timestamp BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND CURDATE()
La table site ne comporte qu'une seule ligne, category, pub_format et available_format quelques unes, tandis que displayed est vide.
Je ne comprends pas le comportement de la requête complète.
Je voudrais dans la mesure du possible éviter SUM+IF , qui niveau performance laisse VRAIMENT à désirer, alors que la requête est déjà très lourde.
Où est le bins ? ^^
Partager