我正在創建一個腳本,用於在數據庫中搜索廢棄的購物車,並將這些內容通過電子郵件發送給客戶(產品名稱,圖像,數量等)。數據分佈在多個表格中,並且儘可能地獲取信息並通過電子郵件發送 - 迄今爲止非常好。但是,它會發送一個電子郵件,每個產品,客戶已放入購物車。所以如果他們的購物車中有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