Wpis z mikrobloga

Mam problem w MySQL. Są dwie tabele - owners i items. Połączone są relacją 1:n owners.ownerId - items.ownerId
Problem: muszę wybrać nie więcej niż 4 przedmioty każdego użytkownika (i przestawić im pewne flagi, ale to już nie ważne)

Próbowałem na dwa sposoby: złączyć (JOIN) skorelowane zapytanie z LIMIT:

select
item.*
from owners o
join (select * from items i where i.ownerId = o.ownerId limit 4) as item on o.ownerId = item.ownerId;

Niestety, nie można w ten sposób skorelować zapytania

Próbowałem też umieścić skorelowane zapytanie w WHERE:

select
i.*
from owners o join items i on i.ownerId = o.ownerId
where i.itemId in (select itemId from item where item.ownerId = o.ownerId limit 4);

Ale w takim zapytaniu z kolei nie można używać LIMIT

Mam wrażenie, że problem jest banalny, a nie potrafię go ugryźć. Pomocy!
#mysql #bazydanych
  • 7