2015-05-12 15 views
1

我一直在使用Mysql一段時間,但這是我第一次遇到這個問題。數據庫組錯誤

的事情是,我有一個選擇查詢...

SELECT 
    transactions.inventoryid, 
    inventoryName, 
    inventoryBarcode, 
    inventoryControlNumber, 
    users.nombre, 
    users.apellido, 
    transactionid, 
    transactionNumber, 
    originalQTY, 
    updateQTY, 
    finalQTY, 
    transactionDate, 
    transactionState, 
    transactions.observaciones 
FROM 
    transactions 
LEFT JOIN 
    inventory ON inventory.inventoryid = transactions.inventoryid 
LEFT JOIN 
    users ON transactions.userid = users.userid 
GROUP BY 
    transactions.transactionNumber 
ORDER BY 
    transactions.inventoryid 

但GROUP BY是消除從查詢2倍的值。

在這種情況下,當我輸出:

foreach($inventory->inventory as $values){ 
    $transactionid[] = $values['inventoryid']; 
} 

它返回:

2,3,5 

如果我消除GROUP BY語句返回

2,3,4,5,6 

哪個是輸出I需要這種特殊情況。

現在的問題是:

是否有這種情況發生的原因? 如果我是通過事務進行分組的,並且應該會影響查詢,那麼它不會只返回1個值嗎?

也許我在想這個問題,或者在代碼上工作太久,我沒有看到我邏輯中的明顯缺陷。但如果有人可以借我一手,我會很感激。

+0

如果'4' /'6'沒有以GROUP BY子句返回,那麼它們與返回的早期行之一具有相同的'transactionNumber'。這也意味着你的表中有3個不同的'transactionNumber'。 – Sean

+0

就是這樣,他們都有相同的交易編號,甚至2,3,5 – user3701157

+0

沒有。他們沒有。他們不能。如果你按照某種東西分組,你會得到一行。 –

回答

1

在標準的SQL,你只能SELECT colums這是

  • 包含在GROUP BY條款
  • (或)彙總 「colums」,像MAX()COUNT()

您需要諮詢其不被GROUP BY包含(且沒有集合列)MySQL Handling of GROUP BY找出這裏發生了什麼,他們使用的解釋爲列的MySQL的描述。

你需要更多信息嗎?

+0

如果這個信息解決了問題,你可以檢查這是正確的答案。 :) –