我正在尝试编写一个MySQL查询,在其中提取卖方的信息和她最受欢迎的产品。这取决于浏览量最多的产品,即MAX(page_views)。
MAX(page_views)
不过,以下查询只是拉出一种随机产品,而不是浏览量最多的产品。
"SELECT seller.id, seller.language, seller.shop_name,seller.story, seller.eng_story, product.id, product.image_thumb, product.title, product.eng_title, product.price, MAX(product.page_views) FROM seller INNER JOIN product ON seller.id=product.seller_id WHERE seller.handpicked='y' AND seller.shop_active='y' GROUP BY seller.id ORDER BY product.page_views LIMIT 0,5"
或更准确地说,page_views实际上是正确的数字,但是如何获得其他 产品字段 (id,图像,标题等)相对于具有最多页面浏览量的产品。
page_views
表数据:
卖方:
id | language | shop_Name | story | eng_story | handpicked | active 1 | 1 | mitienda | hola mundo| Hello world | Y | Y 2 | 1 | sisenor | bonita | beautiful | N | Y 3 | 2 | new_world | mi vida | my life | Y | Y
产品:
id | seller_id | image_thumb | title | eng_title | price | page Views 1 | 1 | /images/.. | sombrero | hat | $5 | 10 2 | 1 | /images/.. | bufanda | scarf | $25 | 30 3 | 2 | /images/.. | arte | art | $15 | 15 4 | 3 | /images/.. | joyeria | jewlery | $10 | 1 5 | 2 | /images/.. | canasta | basket | $21 | 13 6 | 3 | /images/.. | ropa | clothes | $13 | 6
预期结果(精简):
seller.id | shop_name | product.id | pageviews | title | price 1 | miteinda | 2 | 30 | bufanda | $25 3 | newworld | 6 | 6 | ropa | $13
结果应按浏览量列出经过精心挑选的卖家信息及其最受欢迎的产品。按浏览量对卖家进行排序,总共限制为5个卖家。
SELECT a.ID SellerID, a.Shop_Name, b.ID ProductID, b.pageViews, b.title, b.Price FROM seller a INNER JOIN Products b ON a.id = b.seller_ID INNER JOIN ( SELECT seller_ID, MAX(pageViews) max_view FROM products GROUP BY seller_ID ) c ON b.seller_ID = c.seller_ID AND b.pageViews = c.max_View WHERE a.handpicked = ‘Y’ AND a.active = ‘Y’
输出
╔══════════╦═══════════╦═══════════╦═══════════╦═════════╦═══════╗ ║ SELLERID ║ SHOP_NAME ║ PRODUCTID ║ PAGEVIEWS ║ TITLE ║ PRICE ║ ╠══════════╬═══════════╬═══════════╬═══════════╬═════════╬═══════╣ ║ 1 ║ mitienda ║ 2 ║ 30 ║ bufanda ║ $25 ║ ║ 3 ║ new_world ║ 6 ║ 6 ║ ropa ║ $13 ║ ╚══════════╩═══════════╩═══════════╩═══════════╩═════════╩═══════╝