Показывать максимум - PullRequest
       3

Показывать максимум

0 голосов
/ 27 декабря 2018

Я хочу показать максимум гарантии, который есть у конкретного пользователя.Например, пользователь купил 3 товара с гарантией 1,2,5 года.Поэтому я хочу показать 5 лет гарантии и название этого продукта.Я сделал подзапрос на случай, если у немногих продуктов есть такая же гарантия.

SELECT t.`id-user`, name, guarantee FROM transactions t 
JOIN user u ON `t`.`id-user` = `u`.`id-user`
JOIN products p ON `p`.`id-product = `t`.`id-product`
WHERE guarantee = (SELECT MAX(p2.guarantee) 
                   FROM products p2
                   WHERE `p2`.`id-product` = `p`.`id-product`)

Этот запрос показывает все продукты и их гарантии.

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Я думаю, что это работает.

select [User].Name as [UserName],
     Product.MaxGuarantee,
     Product.Name as Product_Name
from [Users] [User]
     left join Transactions [Transaction]
          on [Transaction].[User] = [User].ID
     cross apply(
          select max(guarantee) MaxGuarantee, Name
     from Products
     where ID = [Transaction].Product
     ) Product
where [User].ID = ''
0 голосов
/ 27 декабря 2018

Я думаю, что самый простой метод - это метод substring_index() / group_concat() для получения значений, связанных с максимумом / минимумом:

SELECT t.iduser, u.name,
       MAX(p.guarantee) as guarantee,
       SUBSTRING_INDEX(GROUP_CONCAT(p.name ORDER BY p.guarantee DESC), ',', 1)
FROM transactions t JOIN 
     user u 
     ON t.iduser = u.iduser JOIN
     products p
     ON p.idproduct = t.idproduct
GROUP BY t.iduser, u.name;

Вы также можете использовать свой метод, но коррелированный подзапрос сложен:

SELECT t.iduser, u.name, p.guarantee, p.name
FROM transactions t JOIN 
     user u 
     ON t.iduser = u.iduser JOIN
     products p
     ON p.idproduct = t.idproduct
WHERE p.guarantee = (SELECT MAX(p2.guarantee)
                     FROM transactions t2 JOIN
                          products p2
                          ON p2.idproduct = t2.idproduct
                     WHERE t2.iduser = u.iduser
                    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...