总的来说,我对 SQL 还很陌生。我正在 phpMyAdmin 中尝试以下查询。
SELECT i.`ITEM_NO` as SKU,
i.`DESCR` as Description,
(SELECT SUM(`QTY_SOLD`)
FROM `ps_tkt_hist_lin`
WHERE `ITEM_NO` = i.`ITEM_NO`
AND `BUS_DAT` >= MAKEDATE(YEAR(CURDATE()),1)
) as 'QTY Sold YTD',
(SELECT SUM(`QTY_SOLD`)
FROM `ps_tkt_hist_lin`
WHERE `ITEM_NO` = i.`ITEM_NO`
AND `BUS_DAT` >= DATE_SUB(DATE_SUB(CURDATE(),INTERVAL (DAY(CURDATE())-1) DAY), INTERVAL 1 MONTH)
) as 'QTY Sold Last Month',
(SELECT SUM(`QTY_ON_HND`)
FROM `IM_INV`
WHERE `ITEM_NO` = i.`ITEM_NO`
AND `LOC_ID` IN ('SL','S','LO','AF')
) as 'QTY on Hand'
FROM `ps_tkt_hist_lin` as i
WHERE i.`ITEM_VEND_NO` = 'MD'
GROUP BY i.`ITEM_NO`, i.`DESCR`
ORDER BY i.`ITEM_NO`
运行时出现以下错误。
Error in processing request
Error code: 504
Error text: Gateway Time-out (rejected)
It seems that the connection to server has been lost. Please check your network connectivity and server status.
如果有帮助,这是服务器信息:
Server: Localhost via UNIX socket
Server type: MariaDB
Server version: 10.1.31-MariaDB - MariaDB Server
cpsrvd 11.68.0.29
Database client version: libmysql - 5.1.73
PHP version: 5.6.30
预先感谢您耐心地帮助一个刚刚开始使用 SQL 和 MySQL 的人。
最佳答案
您看到的错误消息可能是由多种不同的原因引起的。一种可能性可能是所涉及的表非常大,并且查询花费的时间太长。大型表可能成为性能 killer 的原因是您的 select 子句中有几个相关的子查询。
一种解决方法是将相关子查询替换为与非相关子查询的适当联接:
SELECT
i.ITEM_NO AS SKU,
i.DESCR AS Description,
COALESCE(t1.qty_sold_ytd, 0) AS qty_sold_ytd,
COALESCE(t1.qty_sold_last_month, 0) AS qty_sold_last_month,
COALESCE(t2.qty_on_hand, 0) AS qty_on_hand
FROM ps_tkt_hist_lin i
LEFT JOIN
(
SELECT
ITEM_NO,
SUM(CASE WHEN BUS_DAT >= MAKEDATE(YEAR(CURDATE()), 1)
THEN QTY_SOLD ELSE 0 END) AS qty_sold_ytd,
SUM(CASE WHEN BUS_DAT >=
DATE_SUB(DATE_SUB(CURDATE(), INTERVAL (DAY(CURDATE())-1) DAY),
INTERVAL 1 MONTH)
THEN QTY_SOLD ELSE 0 END) AS qty_sold_last_month
FROM ps_tkt_hist_lin
GROUP BY ITEM_NO
) t1
ON i.ITEM_NO = t1.ITEM_NO
LEFT JOIN
(
SELECT ITEM_NO, SUM(QTY_ON_HND) AS qty_on_hand
FROM IM_INV
WHERE LOC_ID IN ('SL','S','LO','AF')
GROUP BY ITEM_NO
) t2
ON i.ITEM_NO = t2.ITEM_NO
WHERE
i.ITEM_VEND_NO = 'MD'
ORDER BY
i.ITEM_NO;
我试图忠实于您原始查询的逻辑,但这并不完全有意义。例如,不清楚为什么要在子查询和外部查询中进行聚合。我的建议是为您提供 ps_tkt_hist_lin
表中的每一行。
关于mysql - phpMyAdmin 错误代码 : 504 with MySQL Query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49063398/