Php 跨多个表使用foreach
因此,我有一个名为customers的数据库表。他们购买的最后6种产品存储在客户表中p1、p2、p3、p4、p5和p6下。然后将产品存储为产品编号,例如Php 跨多个表使用foreach,php,Php,因此,我有一个名为customers的数据库表。他们购买的最后6种产品存储在客户表中p1、p2、p3、p4、p5和p6下。然后将产品存储为产品编号,例如 Last Purchased: p1: 12355 p2: 55142 p3: 51251 等等。这些产品在products表中都有自己的表行。在那张单子上,除其他价格外,还有其他价格。现在,我想做的是一个简单的方法,从最近6次购买中提取最大的购买量。使用“最大值”可以轻松获得最大值 命令,我可以做一些像整个 $p1 = $
Last Purchased:
p1: 12355
p2: 55142
p3: 51251
等等。这些产品在products表中都有自己的表行。在那张单子上,除其他价格外,还有其他价格。现在,我想做的是一个简单的方法,从最近6次购买中提取最大的购买量。使用“最大值”可以轻松获得最大值
命令,我可以做一些像整个
$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);
}
}
您可以做的是将所有项放入一个数组,然后对其进行内爆,使其使用单引号,然后执行如下查询:
$array = $db->queryA("SELECT * FROM products WHERE product IN($your_array)");
首先,您需要重新设计数据库。您需要这样一个购买表
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
发布您的表结构尝试过:如果它不是您所想的,将做其他事情:不,不,您的数据库模式不好。你不应该像那样储存最新的6种产品。您需要一个表来存储所有购买信息,至少存储以下列:客户id、产品id、数量和时间戳,然后使用所需的约束编写一个联接order by和limit 6 are your friendsUhm。这只会导致数据库提供程序出错。我在foreach循环中添加了给我带来问题的部分。不知道是数据库提供商还是其他什么?@HaraldOve你制作了3个表吗?是的。创建了3个表,但不好:/Get这是来自数据库提供程序的foreach错误。。。