2013-04-18 28 views
0

我有一個表的交易,列是名稱,金額,部門,類別。 對於每個分類組合,我想查找最多3個條目。 最終結果應採用格式:名稱,部門,類別。在groupon-by中選擇頂部3的單個MySQL查詢?

+0

的[爲每個組分組結果的獲取前n記錄(可能重複http://stackoverflow.com/問題/ 12113699 /獲得最多n個記錄 - 針對每組分組結果) –

回答

0
$db = new PDO($hostname,$username,$password); 
    $query = 'Select name, division, category 
    From deals Where division = :division And category = :category 
    ORDER BY amount DESC Limit 3'; 

然後創建你的所有部門和類別和循環他們的陣列:

$top3s = array(); 
foreach($divisionArray as $division) 
{ 
    foreach($categoryArray as $category) 
    { 
    $statement = $db->prepare($query); 
    $statement->bindValue(':division', $division); 
    $statement->bindValue(':category', $category); 
    $statement->execute(); 
    $top3 = $statement->fetch(PDO::FETCH_ASSOC); 
    $statement->closeCursor(); 

    array_push($top3s, $top3); 
    } 
} 
print_r $top3s; 
+0

沒有一個查詢,但可能比針對此特定問題的單個查詢更簡單和更易讀。 – thelr

+0

是這個存儲過程嗎? – user1991452

+0

我不明白你的問題?即時通訊使用PDO的mysql對象,它清理輸入到mysql以防止注入攻擊。這是行業標準之一。 – Dan