Трудно получить то, что вы хотите, без дополнительной информации.Все записи в таблице статуса заказа имеют одинаковую метку времени.Кажется, вы просто хотите получить статусы с другим статусом, но нет никакого способа дифференцировать различные статусы.
Чтобы сделать это, мы должны сказать MySQL, как выбрать лучшую строку.Посмотрите внимательно ... Как бы вы узнали, если бы вы были машиной, какую строку возвращать?
Лучшее, что я могу догадаться, это то, что вам нужна последняя запись статуса заказа (максимальный статус).Если это так, то вот сценарий, который будет работать:
SELECT
od.orderid,
od.orderitems,
os.status,
os.assigneduser
FROM orders AS od
INNER JOIN orderstatus AS os ON od.orderid = os.orderid
INNER JOIN (
SELECT
MAX(StatusID) AS StatusID,
OrderId
FROM orderstatus
GROUP BY OrderId
) as maxos ON maxos.StatusID = os.StatusID
GROUP BY os.orderid
ORDER BY os.orderid ASC
Я предполагаю, что ваш пример не точен, и что отметка времени на самом деле будет другой в реальной жизни.
В этом случае вы можете использовать тот же сценарий, описанный выше, но получить максимум (временную метку) вместо максимального (статусный).
Другое, что вы можете сделать, это нормализовать столбец состояния(создайте таблицу для кодов состояния и добавьте столбец, обозначающий порядок. Затем вы можете получить максимум (этот новый столбец порядка), используя приведенный выше скрипт.