Je voudrais faire une requête où je peux récupérer un intervalle de 10 lignes avec 5 balises par chacune.MySQL: Limite une requête à 10 lignes où chaque index a 5 balises
J'ai houses
et tags
table, je sais comment le faire que pour des requêtes simples avec un SELECT
en utilisant LIMIT
mais comment puis-je faire dans ce cas?
table houses
id house country
1 Grunt Mansion us
2 Hororo Suneku jp
3 Casa Cattani it
4 Sweet Home uk
5 Heinzvaiter de
6 F56X-5 us
7 Swan Jong cn
8 Drupnowevo ru
9 Bambagiador br
10 El Stanco es
table houses_tags
id id_house id_tag
1 1 1
2 1 2
3 1 3
4 1 4
5 2 1
6 2 2
7 2 3
8 2 4
table tags
id tag
1 minimal
2 baroque
3 cosy
4 simple
Si une marque une requête comme celui-ci pour obtenir les 10 premières maisons:
SELECT *
FROM houses
LEFT JOIN (
SELECT *
FROM tags
INNER JOIN houses_tags
ON id_house = houses.id
LIMIT 5
) house_tag
LIMIT 0, 10
je reçois quelque chose comme ceci:
query result
row house country tag id_house id_tag
1 Grunt Mansion us minimal 1 1
2 Grunt Mansion us baroque 1 2
3 Grunt Mansion us cosy 1 3
4 Grunt Mansion us simple 1 4
5 Hororo Suneku jp minimal 2 1
6 Hororo Suneku jp baroque 2 2
7 Hororo Suneku jp cosy 2 3
8 Hororo Suneku jp simple 2 4
9 Casa Cattani it NULL NULL NULL
10 Sweet Home uk NULL NULL NULL
Mon problème est que je ne reçois que les 10 premiers lignes découpant le dernier houses
de la requête parce que les tags
des premiers occupent toutes les rangées
Puis-je écrire une requête où je peux récupérer les 10 premières maisons et 5 étiquettes par personne?
query result
row house country tag id_house id_tag
1 Grunt Mansion us minimal 1 1
2 Grunt Mansion us baroque 1 2
3 Grunt Mansion us cosy 1 3
4 Grunt Mansion us simple 1 4
5 Hororo Suneku jp minimal 2 1
6 Hororo Suneku jp baroque 2 2
7 Hororo Suneku jp cosy 2 3
8 Hororo Suneku jp simple 2 4
9 Casa Cattani it NULL NULL NULL
10 Sweet Home uk NULL NULL NULL
11 Heinzvaiter de NULL NULL NULL
12 F56X-5 us NULL NULL NULL
13 Swan Jong cn NULL NULL NULL
14 Drupnowevo ru NULL NULL NULL
15 Bambagiador br NULL NULL NULL
16 El Stanco es NULL NULL NULL
A la fin je besoin d'un résultat que j'affichage comme dans cet exemple:
Mansions Tags
Grunt Mansion minimal, baroque, cosy, simple
Hororo Suneku minimal, baroque, cosy, simple
Casa Cattani -
Sweet Home -
Heinzvaiter -
F56X-5 -
Swan Jong -
Drupnowevo -
Bambagiador -
El Stanco -
pages 1 | 2 | 3
puis-je faire?
Merci pour l'aide, pouvez-vous m'aider à comprendre la syntaxe CASE et @vars avec un lien d'explication, ce serait très utile pour moi. – vitto
@Vittorio Vittori: La documentation MySQL [CASE] (http://dev.mysql.com/doc/refman/5.0/fr/case-statement.html); @variable_name est une variable. J'utilise le produit cartésien - 'JOIN (SELECT @rownum: = 0, @id: = -1, @house_count: = 0) r' - pour définir les variables sans avoir besoin d'une instruction' SET' séparée. –
désolé pour le retard – vitto