Mysql - выбрать четыре строки на идентификатор в одном запросе - PullRequest
1 голос
/ 30 марта 2012

Если у меня есть таблица категорий с рекомендуемой строкой, которая по умолчанию равна 0, то в 1/2/3/4/5/6 будет отображаться шесть категорий в порядке их отображения.

МожетЯ использую идентификатор категории из каждой из шести представленных, чтобы выбрать 4 видео из таблицы видео с соответствующими идентификаторами категорий в одном запросе, а затем отделить результат с помощью foreach?

Затем вернуть их и сделать результат foreach как категориюзатем передайте в качестве категории videoList

SELECT id, title
FROM videos 
WHERE category = (SELECT id FROM category WHERE featured > 0) 
LIMIT 4

, чтобы получить что-то вроде этого:

foreach($result as $categoryVideos):
    echo $categoryVideos[categoryName];
    foreach($categoryVideos as $video):
        echo $video[title];
    endforeach;
endforeach;

Я знаю, что нужны объединения и т. д., но я делаю этот путь слишком сложным?Я обвиняю свой пустой ум в недостатке сна, так как я обычно отвечаю на вопрос, подобный этому.

Это сложнее, потому что я пытаюсь передать все эти данные из модели вконтроллер за один раз как $ result?

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

Ваш базовый подход будет работать, но у вас есть несколько проблем с вашим SQL:

  • LIMIT 4 не обязательно будет возвращать записи в том порядке, который вы ожидаете. Используйте ORDERBY, чтобы указать SQL, в каком порядке вы хотите записи. Если я правильно понимаю, рейтинг категории находится в таблице category. Если это так, вам нужно ORDERBY и ограничение в подзапросе, например, SELECT id FROM category WHERE featured > 0 ORDERBY featured LIMIT 4.
  • Ваш подзапрос WHERE category = (SELECT... синтаксис неверен. Заменить = на IN.
1 голос
/ 30 марта 2012

Вы пытаетесь выбрать 4 строки из каждой из 6 категорий, верно? Всего 24 строки?

Первый ответ на этот вопрос , вероятно, применим к вашему делу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...