Bonjour,
J'avais par le passé réglé ce problème avec un bonmais bon c'est pas super.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Aujourd'hui j'aimerais trouver une solution propre à mon problème, mais rien à faire.
J'ai une table place avec un id et des données quelconques.
Une table tag :
Une table places_tags qui fait un many to many entre les 2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 +----+--------+ | id | code | +----+--------+ | 1 | actor | | 2 | cinema | | 3 | music | | 4 | death | +----+--------+
Et enfin tag_string qui propose des titres traduits aux tags :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 +----------+--------+ | place_id | tag_id | +----------+--------+ | 1 | 1 | | 1 | 2 | | 2 | 3 | | 2 | 4 | | 3 | 1 | | 3 | 4 | | 4 | 3 | +----------+--------+
Avant, dans le meilleur des mondes sales, je faisais ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 +----+--------+---------+----------+ | id | tag_id | title | language | +----+--------+---------+----------+ | 1 | 1 | Acteur | fr | | 2 | 1 | Actor | en | | 3 | 2 | Cinéma | fr | | 4 | 2 | Cinema | en | | 5 | 2 | Cine | es | | 6 | 3 | Musique | fr | | 7 | 3 | Music | en | | 8 | 4 | Mort | fr | | 9 | 4 | Death | en | +----+--------+---------+----------+
Ce qui me donnait tous les tags avec de préférence un titre en français, sinon en anglais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT t.id, ts.title AS title, COUNT(pt.tag_id) AS total FROM tag AS t INNER JOIN places_tags AS pt ON pt.tag_id = t.id INNER JOIN ( SELECT ts2.tag_id, ts2.title AS title FROM tag_string AS ts2 ORDER BY FIELD (ts2.language, 'en', 'fr') DESC ) ts ON ts.tag_id = t.id GROUP BY t.id ORDER BY total DESC
Mais aujourd'hui, cela ne fonctionne plus (le group by me jette je vois bien pourquoi).
Cependant, je ne trouve pas de solution.
Quelqu'un aurait-il une solution pour me sortir de ce pétrin ?
J'ai mis ce que ça donnait en ligne ici : http://sqlfiddle.com/#!9/0d9c3b/1
Merci
Partager