你好,我有一個表:GROUP BY都不盡如人意
id_order | id_order_history | date_add
與此查詢我能有id_order_history = 3
(籌備中)所有訂單
SELECT
`oh`.`id_order`
FROM (
SELECT MAX(`date_add`) AS date_add
FROM `'._DB_PREFIX_.'order_history`
GROUP BY `id_order`
) AS h
INNER JOIN
'._DB_PREFIX_.'order_history AS oh
ON
`h`.`date_add` = `oh`.`date_add`
INNER JOIN
'._DB_PREFIX_.'orders AS o
ON
`oh`.`id_order` = `o`.`id_order`';
$sql .= 'WHERE
oh.`id_order_state` = '.$status.'';
$sql .= ' AND
oh.date_add >= "'.$start.'"';
$sql .= ' AND
oh.date_add <= "'.$end.'"
ORDER BY
`oh`.`id_order` ASC
的問題是,對於一些責令SELECT MAX
沒有得到的date_add
id_order | id_order_history | date_add
1 | 5 | 25-09-2014 18:07:59 ---> this is the correct value
1 | 4 | 25-09-2014 18:07:51
1 | 3 | 25-09-2014 18:06:42 ---> but query return this
正確的值如果我添加日期1秒(18:06:43)查詢返回正確的值25-09-2014 18:07:59
我只是無法弄清楚如何解決問題。
我身邊,有時GROUP BY
閱讀需要引起亂七八糟,piggledy ...
如何解決呢?
創建SQL小提琴將是巨大的... – 2014-09-28 09:23:38
你有什麼打算爲「外鍵」?你可以給我一個例子嗎? – user1499315 2014-09-28 09:42:55
如果您願意,請考慮遵循以下簡單的兩步操作步驟:1.如果您尚未這樣做,請提供適當的DDL(和/或sqlfiddle),以便我們可以更輕鬆地複製問題。 2.如果您尚未這樣做,請提供與步驟1中提供的信息相對應的所需結果集。最後,如果您暫時完全刪除PHP,我們將更容易遵循。 – Strawberry 2014-09-28 10:04:11