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
#diablo4 ja #!$%@? jaka ta gra jest #!$%@? nudna xD 23 lvl wbity i już mam dość. Fabuła płytka jak sadzawka, skille #!$%@?, itemizacja #!$%@?, cała mapa nudna do porzygu w tym samym stylu graficznym. Najgorzej wydane 400 zl w życiu
ownersiitems. Połączone są relacją 1:nowners.ownerId-items.ownerIdProblem: 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:
selectitem.*
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:
selecti.*
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
SELECT i1.*, count(*) as cnt
FROM items AS i1
LEFT JOIN items AS i2
ON i1.ownerid = i2.ownerid
AND i1.id > i2.id) q
WHERE q.cnt >= 4