2011-08-19 129 views
0

我是PHP & MySQL的新用戶。我已經通過幾個論壇Google搜索,但不知道如何讓這個QUERY工作。希望你們能指導我。
將當前記錄與前一記錄進行比較

ITEMINFO

-------------------------------------- 
| ItemNo | Description  | Price | 
| AAAAA | AAAAA description | $1.11 | 
| BBBBB | BBBBB description | $2.22 | 
| CCCCC | CCCCC description | $3.33 | 

STOREINFO

----------------------------------------------------------- 
| StoreNo | Add1  | Add2 | City  | State | Zip | 
| 11111 | 111 Main St | # 1 | New York | NY | 10001 | 
| 22222 | 222 Main St | # 2 | New York | NY | 10001 | 
| 33333 | 333 Main St | # 3 | New York | NY | 10001 | 
| 44444 | 444 Main St | # 4 | New York | NY | 10001 | 

STOREORDER

------------------------------- 
| StoreNo | Quantity | ItemNo | 
| 11111 | 10  | AAAAA | 
| 11111 | 5  | BBBBB | 
| 33333 | 50  | BBBBB | 
| 22222 | 20  | AAAAA | 

QUERY:列出已訂購的所有商店;以及哪個項目&已訂購數量?

$query = "SELECT * FROM STOREINFO ". 
    "LEFT JOIN STOREORDER ON STOREINFO.StoreNo = STOREORDER.StoreNo ". 
    "LEFT JOIN ITEMINFO ON STOREORDER.ItemNo = ITEMINFO.ItemNo ". 
    "ORDER BY STOREINFO.StoreNo ASC"; 

$result = mysql_query($query) or die(mysql_error()); 

// Print out the contents of each row into a table 
while($row = mysql_fetch_array($result)){ 
$CheckStoreNo = trim($row['StoreNo']); 
if($CheckStoreNo != "") 
     { 
     echo " *print store info* "; 
---->>>> echo " *list ALL item ordered & qty* "; 
     } 
} 
    echo "<hr>"; 
?> 

OUTPUT:(格式化)

Company: Store # 11111 
111 Main St, # 1, New York, NY 10001 
Tel: 111-111-1111 
This store ordered - Item: AAAAA - 10 pc(s) 

Company: Store # 11111 
111 Main St, # 1, New York, NY 10001 
Tel: 111-111-1111 
This store ordered - Item: BBBBB - 5 pc(s) 

Company: Store # 22222 
222 Main St, # 2, New York, NY 10001 
Tel: 222-222-2222 
This store ordered - Item: AAAAA - 20 pc(s) 

Company: Store # 33333 
333 Main St, # 3, New York, NY 10001 
Tel: 333-333-3333 
This store ordered - Item: BBBBB - 50 pc(s) 

我設法遠遠得到這個。現在如果您注意到商店#11111實際上有兩(2)個不同項目的訂單。而不是ECHO所有重複的公司信息,我只需要同一個公司信息ECHO一次,並列出所有訂購的商品#11111的項目。

示例:這是我需要的!

Company: Store # 11111 
111 Main St, # 1, New York, NY 10001 
Tel: 111-111-1111 
1) Item: AAAAA - 10 pc(s) 
2) Item: BBBBB - 5 pc(s) 

Company: Store # 22222 
... And so on ... 

我得到了所有訂單依據每個門店的順序列出。 (感謝@cularis)。

現在,如何在每個商店的訂單後關閉/結束它?

示例:關閉每個商店的訂單印刷目的!

Company: Store # 11111 
111 Main St, # 1, New York, NY 10001 
Tel: 111-111-1111 
1) Item: AAAAA - 10 pc(s) 
2) Item: BBBBB - 5 pc(s) 
------- End of order for Store # 11111 ----- 

Company: Store # 22222 
... List order ... 
------- End of order for Store # 22222 ----- 

回答

1

這不是MySQL,而是一個PHP問題。

你必須這樣做在你的前端是這樣的:

// Print out the contents of each row into a table 
$OldStoreNo = "" 
while($row = mysql_fetch_array($result)){ 
$CheckStoreNo = trim($row['StoreNo']); 
if($CheckStoreNo != "") { 
    if($OldStoreNo != $CheckStoreNo) { 
     echo " *print store info* "; 
     $OldStoreNo = $CheckStoreNo; 
    } 
    echo " *list item ordered & qty* "; 
    } 
} 

隨着OldStoreNo,你可以跟蹤當前項目的每家商店數輸出數每個項目旁邊。

+0

一切工作的偉大!謝謝。 = D Next問題:如何在列出每個商店的所有商品(用於向每個商店打印目的)後關閉它? – NTMonster

+0

在爲下一家商店打印店鋪信息之前,打印您想在最後一家店鋪後出現的所有商品。你必須檢查它是否是第一個布爾商店,因爲那時你不想打印店鋪結束信息。 – Jacob

+0

if($ CurrentStoneNo!= $ CheckStoreNo和$ numcount> 0){PRINT-END-ORDER} – NTMonster

0

跟蹤while循環 門店數量,如果它是同前,打印的順序,否則打印storeinfo和訂單

//track store_no 
$current_store_no = false; 

while($row = mysql_fetch_array($result)){ 
    if (trim($row['StoreNo']) != $current_store_no) { 
     //print store info 
     $current_store_no = trim($row['StoreNo']) 
    } 
    //print order info 
} 
相關問題