JOIN вернул три строки: три заказа или три платежа
Клиент пишет, что видит списание не за тот заказ. Вы выполняете:
SELECT o.id, o.total, p.amount, p.status
FROM orders o
JOIN payments p ON p.order_id = o.id
WHERE o.id = 501;
Запрос вернул три строки: значения o.id и o.total во всех одинаковые, а p.amount и p.status разные.
Что вы напишете клиенту?
- Заказ действительно продублирован в базе три раза, нужна эскалация на очистку дублей в таблице orders
- JOIN всегда возвращает ровно одну строку на заказ, значит база повреждена и данные надо восстанавливать
- Заказ один, а строк три, потому что к нему привязаны три попытки оплаты: повторяются поля заказа
- Нужно добавить DISTINCT — тогда лишние платежи исчезнут из базы и картина по заказу станет корректной
