I have a database of items. Each item is categorized with a category ID from a category table. I am trying to create a page that lists every category, and underneath each
Depending on how constant your categories are, the following is the simplest route
SELECT C.CategoryName, R.Image, R.date_listed
FROM
(
SELECT CategoryId, Image, date_listed
FROM
(
SELECT CategoryId, Image, date_listed
FROM item
WHERE Category = 'Pet Supplies'
ORDER BY date_listed DESC LIMIT 4
) T
UNION ALL
SELECT CategoryId, Image, date_listed
FROM
(
SELECT CategoryId, Image, date_listed
FROM item
WHERE Category = 'Pet Food'
ORDER BY date_listed DESC LIMIT 4
) T
) RecentItemImages R
INNER JOIN Categories C ON C.CategoryId = R.CategoryId
ORDER BY C.CategoryName, R.Image, R.date_listed