Я хотел бы сделать запрос, где я могу получить интервал 10 строк с 5 тегами на каждый.MySQL: Ограничьте запрос до 10 строк, где каждый индекс имеет 5 тегов
Я houses
и tags
стол, я знаю, как сделать это только для простых запросов с использованием SELECT
LIMIT
, но как я могу это сделать в этом случае?
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
Если сделать запрос, как это, чтобы получить первые 10 домов:
SELECT *
FROM houses
LEFT JOIN (
SELECT *
FROM tags
INNER JOIN houses_tags
ON id_house = houses.id
LIMIT 5
) house_tag
LIMIT 0, 10
я получаю что-то вроде этого:
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
Моя проблема в том, я получаю только первые 10 ряды вырезают последние houses
из запроса, потому что tags
первых занимают все строки
Могу ли я написать запрос, где я могу получить первые 10 домов и 5 тегов на каждый?
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
В конце концов, я должен нужен мне результат отображения как в этом примере:
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
я могу сделать это?
Спасибо за помощь, можете ли вы также помочь мне понять синтаксис CASE и @vars с некоторой ссылкой на объяснение, это было бы очень полезно для меня. – vitto
@ Vittorio Vittori: MySQL [документация CASE] (http://dev.mysql.com/doc/refman/5.0/en/case-statement.html); @variable_name - это переменная. Я использую декартово произведение - 'JOIN (SELECT @rownum: = 0, @id: = -1, @house_count: = 0) r' - для определения переменных без необходимости отдельной инструкции' SET'. –
извините за задержку – vitto