SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.11.2013 20:32:02

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Выборка один ко многим (с лимитом)

Здравствуйте, помогите пожалуйста с реализацией.
Есть таблицы со стандартной структурой:

post
id, title
1   Заголовок


post_item
id, post, sort, image
1   1       2    img1.jpg
2   1       1    img2.jpg
3   1       0    img3.jpg

Можно ли, эффективно для каждой итерации получить по две картинки из таблицы post_item? Или лучше всего выбрать 2-ым запросом?

В идеале бы так:
post, title,               image,     image2
1     Заголовок       img3.jpg   img2.jpg

Неактивен

 

#2 16.11.2013 20:37:27

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: Выборка один ко многим (с лимитом)

Прочтите до конца этот топик.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 16.11.2013 21:33:31

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Выборка один ко многим (с лимитом)

В данном случае можно проще:

select post, max(image) image, min(image) image2 from post_item group by post;

или через подзапросы, если нужны другие эл-ты из группы

select post, (select image from post_item t1 where t1.post=t.post order by sort limit 1,1) image, ..  from post_item t group by post;

Неактивен

 

#4 17.11.2013 12:32:40

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Re: Выборка один ко многим (с лимитом)

Спасибо, еще так можно:

select
  p.*,
  max(if(i.sort=0,i.image,null))image,
  max(if(i.sort=1,i.image,null))image2
from post p
left join post_item i on i.post=p.id
group by p.id

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson