我有3个表格。客户,产品和统计。当用户选择用户和产品时,我将Stats->计数增加1。 统计表具有id,cid,pid和count值。 我的目的是按计数排序产品,它们应该是字母的。这是我的sql请求;
SELECT * FROM product AS p
LEFT JOIN stat AS s
ON p._id = s.stats_product_id
WHERE s.stats_customer_id = 'customerId'
ORDER BY s.stats_count desc , p.product_name COLLATE NOCASE;
问题是;因为我在创建一些订单后创建了统计数据值,所以在开始时我无法看到所有产品。因为我从未使用过的某些产品不在我的统计表中。我知道LEFT JOIN应该给我所有的产品价值,但它没有...请帮助我。谢谢你的建议。
Ex:我有a,b,c,d,e,f产品。让我们认为a,b买3次(他们的数量是3),e,f买了2次(他们的数量是2)和c,d从未买过(他们不在统计表中因为他们从未买过任何人,这就是问题所在!)。输出顺序应为: 一个 b Ë F C d 处理:答案#1的解决方案。
答案 0 :(得分:0)
好的,我得到了答案。查询应该是这样的;
"SELECT * FROM " +
"(product LEFT JOIN stat " +
"ON product._id = stat.stats_product_id " +
"AND stat.stats_customer_id = '" + customerId + "' ) " +
" ORDER BY " +
"stat.stats_count desc , product.product_name COLLATE UNICODE";
我希望这对任何人都有帮助。