所以,我有一个名为customers的数据库表。他们购买的最后6个产品存储在" p1,p2,p3,p4,p5和p6"下的客户表中。然后将产品存储为产品编号,例如
Last Purchased:
p1: 12355
p2: 55142
p3: 51251
等。这些产品都拥有他们在"产品"表。在该列表中,其中包括"价格"。现在,我想做的是在过去的6次购买中提取最大购买量的一种简单方法。使用max()
可以轻松获得最大的优势
命令,我可以做一些像整个
$p1 = $array[0]["p1"];
$array = $db->queryA("SELECT * FROM products WHERE product = $p1");
然后将它们与max($ p1,$ p2,$ p3)等进行比较。我的问题是需要花费大量的时间和代码。有没有更好的方法来做到这一点,例如使用foreach循环?我真的很抱歉,但我完全被踩了。再次..所有帮助表示赞赏。 :)
编辑:不确定如何显示表格结构,但这是我的尝试,对不起,如果它是坏的:(
customers products
id prod_nr
name name
mail price
member_since quantity
p1
p2
p3
p4
p5
p6
这样就够了吗?这是一些更多的领域,但它是它的要点。此外," id"和" prod_nr"是初选
编辑nr2:还想解释一下,我想要运行这些6 *查询中的大约11个,以免让你觉得我只是浪费你的时间而不是我的一点点...... 。:)
再次编辑,这是数据库提供商的一部分,给我带来了问题......
public function query($query)
{
try{
$query = trim($query);
$sth = $this->pdo->query($query,PDO::FETCH_ASSOC);
$result = null;
foreach($sth as $row) {
$result[] = $row;
}
return $result != null ? json_encode($result) : null;
}
catch(exception $e)
{
echo('Exception ' . $e);
}
}
答案 0 :(得分:0)
你可以做的是对数组的所有项目,然后内爆它使它使用单引号然后执行这样的查询:
$array = $db->queryA("SELECT * FROM products WHERE product IN($your_array)");
答案 1 :(得分:0)
首先,您需要重新设计数据库,您需要一个像这样的购买表
purchase
---------
id_purchase
id_customer
id_product
customers
-----------
id
name
mail
member_since
products
------------
prod_nr
name
price
quantity
然后你的SQL将是:
SELECT * from customers JOIN purchase ON id = id_customer JOIN products ON prod_nr = id_product
ORDER BY DESC price
LIMIT 1