我正在创建一个脚本,用于在数据库中搜索废弃的购物车,并将这些内容通过电子邮件发送给客户(产品名称,图像,数量等)。数据分布在多个表格中,并且尽可能地获取信息并通过电子邮件发送 - 迄今为止非常好。但是,它会发送一个电子邮件,每个产品,客户已放入购物车。所以如果他们的购物车中有5件商品,它会发送5封电子邮件。我知道这是因为我的加入和声明,但我的PHP/SQL知识不是很好。我应该使用哪个联合,联合或选择来处理多个表中的数据?
所以我的问题是我应该使用哪种联合或联合声明,以便电子邮件只发送给一位客户,其中包含他们所有的产品。
我读过关于联接的教程总是有一个id或者所有表之间通用的键,但是这个存储的数据库结构中的一个表与另一个基于off的键相关,然后该表使用不同的键与另一个依赖表相关。
数据库结构看起来像这样。
ORDERS:
| orderid | ordstatus | ordqty | ordcustid |
|--------------|---------------|------------|--------------|
| 12637 | 0 | 1 | 0 |
| 12636 | 11 | 1 | 3531 |
| 12635 | 11 | 2 | 4192 |
ORDERPRODUCTS:
| ordprodname | ordprodqty | orderorderid | orderprodid |
|---------------|--------------|----------------|----------------|
| product1 | 1 | 12637 | 1206 |
| product2 | 1 | 12636 | 193 |
| product3 | 1 | 12635 | 1712 |
| product4 | 1 | 12635 | 1576 |
CUSTOMERS:
| customerid | customeremail | firstname |
|--------------|-------------------|-------------|
| 3531 | [email protected] | Customer1 |
| 4192 | [email protected] | Customer2 |
PRODUCTIMAGE:
| imageid | imageprodid | imagethumb |
|-----------|---------------|------------------|
| Product1 | 1206 | file/path/1.jpg |
| Product2 | 193 | file/path/2.jpg |
| Product3 | 1712 | file/path/3.jpg |
| Product4 | 1576 | file/path/4.jpg |
到目前为止,我的剧本是这样的:
mysql_select_db("cartmail", $con);
$result = mysql_query("SELECT *
FROM orders
, orderproducts
, productimage
, customers
WHERE orders.orderid = orderproducts.orderorderid
AND orderproducts.orderprodid = productimage.imageprodid
AND orders.ordcustid = customers.customerid
AND ordstatus = '11'
LIMIT 0 , 30");
while($row = mysql_fetch_array($result))
{
<My PHP mail script...>
}
mysql_close($con);
为什么你需要的产品,在结果集?它是建立电子邮件吗? –
我不认为你对查询有任何问题,以至于你如何使用它。如果您通过customerid订购查询,那么当您准备电子邮件时,您会遍历整套电子表格,并在每次客户更改时创建一封新电子邮件,并随时将相关数据放入电子邮件中。 – Quaternion
是的,我想在电子邮件中显示产品名称和产品图片,以提醒客户他们放弃了什么。 – James