Представьте У меня есть таблица, как это с многими одного отношенияСоединение слева с пагинацией (LIMIT)
Table1
id | name
1 | as
2 | df
3 | gh
и
id | othercontents | table1relationship
1 | qw | 1
2 | er | 2
3 | ty | 3
4 | ui | 3
если я запускаю запрос на выборку по Таблица 1 с левым соединением для таблицы 2, но ограничьте его до 3 результатов. Я получу 3 строки, возвращенные
1 - as - QW
2 - DF - эр
3 - GH - ти
однако я хочу
1 - а - QW
2 - DF - эр
3 - GH - [ти, щ]
Теперь, сейчас я выбираю его как обычно, а затем помещаю elsecontents в массив самостоятельно, чтобы превратить свои строки в то, как я их хочу, но проблема остается в том, что я не могу вернуть все строки, которые я хочу.
Логично, я предполагаю, что хочу ограничить X уникальным table1.id, а не ограничиваться только X строками, но я не знаю, как реализовать эту логику, если это возможно.
Конечно, это легко, если я выбираю все в базе данных, а затем сортирую его на PHP, но это слишком интенсивно, и я не хочу выбирать 20 000 строк, чтобы получить ~ 10 строк. Я предполагаю, что хакерский подход вокруг этого будет состоять в том, чтобы выбрать 30 строк, а затем выполнить мою собственную сортировку и вернуть 10, как я их хочу, но мне кажется глупо выбирать больше, чем мне нужно.
Возможно, стоит упомянуть, но я использую Symfony3 w/Doctrine и используя построитель запросов. Но я не прошу о том, чтобы копировать/вставлять ответы на мою проблему, а просто толчок в направлении, чтобы я мог работать над моей реализацией.
Благодаря
Привет дружище Вы, кажется, чтобы получить суть того, где я собирался, все, что мне нужно было на самом деле GROUP_CONCAT и затем добавить группу по t2.relationship Поскольку я использую DQL, мне пришлось регистрировать GROUP_CONCAT самостоятельно, но это все золотисто. –