Я создал несколько файлов отчетов phpspreadsheet, и все они работают нормально.Я создал свой третий и теперь столкнулся с проблемой, когда скрипт не завершает работу, и теперь мне интересно, есть ли ограничение в отношении того, как электронная таблица PHP читает вложенные запросы.
Сначала я создал скрипт с нуля, как и все остальные, а затем оставил его на ночь, чтобы запустить, но время работы скрипта истекло по истечении длительного времени, как с настройками PHP / Mysql, которые у меня есть.
Затем я попытался запустить один из моих существующих сценариев, и он работал отлично, как и раньше.
Наконец, я скопировал сценарий из одного из других отчетов в текущий сценарий и протестировал его.Это не шаблонная ошибка, и она тоже работает, как и ожидалось.
Я также выполнил только запрос в рабочей среде MySQL, и запрос вернул результаты менее чем за 10 секунд.
SQLFiddle: http://sqlfiddle.com/#!9/3c754eb/1
Я добавил свой запрос и удалил вложенные таблицы только для просмотра самого запроса.
SELECT
CALLING.StoreCode AS 'STORE CODE'
, CALLING.RouteCode AS 'ROUTE CODE'
, CALLING.ScheduledActionDate AS 'SCHEDULED ACTION DATE'
, CALLING.ActualVisitedDate AS 'ACTUAL VISIT DATE'
, CALLING.CycleEndDate AS 'CYCLE END DATE'
, CALLING.CallingDay AS 'CALLING DAY'
, CASE
WHEN OUTEXCLUSIONS.ExcludedDate IS NOT NULL THEN 0
WHEN EXCLUSIONS.ExcludedDate IS NOT NULL THEN 0
ELSE 1
END AS 'OUTLET CALLING STATUS'
, CALLING.UserName AS 'USERNAME'
, CALLING.Week AS 'WEEK'
, CASE
WHEN OUTEXCLUSIONS.ExcludedDate IS NOT NULL THEN OUTEXCLUSIONS.ExcludedDate
WHEN EXCLUSIONS.ExcludedDate IS NOT NULL THEN EXCLUSIONS.ExcludedDate
ELSE NULL
END AS 'EXCLUSION DATE'
, CASE
WHEN OUTEXCLUSIONS.ExcludedDate IS NOT NULL THEN OUTEXCLUSIONS.LeaveDescription
WHEN EXCLUSIONS.ExcludedDate IS NOT NULL THEN EXCLUSIONS.LeaveDescription
ELSE NULL
END AS 'EXCLUSION DESCRIPTION'
FROM
(SELECT
CALLCYCLES.StoreCode
, CALLCYCLES.ScheduledActionDate
, VISTED.ActualVisitedDate
, CALLCYCLES.CycleEndDate
, CALLCYCLES.CallingDay
, VISTED.UserName
, CALLCYCLES.RouteCode
, CALLCYCLES.Week
, CALLCYCLES.Requestable
FROM
(
NESTED QUERY JOINIG TO ANOTHER NESTED QUERY TO REPLICATE AN FULL JOIN IN MYSQL
) AS CALLCYCLES
LEFT JOIN
(
NESTED QUERY JOINIG TO ANOTHER NESTED QUERY TO REPLICATE AN FULL JOIN IN MYSQL
) VISTED
ON
CALLCYCLES.StoreCode = VISTED.StoreCode
AND CALLCYCLES.CycleEndDate = VISTED.CycleEndDate
UNION ALL (UNIONING THE TWO NESTED QUERIES)
SELECT
CALLCYCLES.StoreCode
, CALLCYCLES.ScheduledActionDate
, VISTED.ActualVisitedDate
, CALLCYCLES.CycleEndDate
, CALLCYCLES.CallingDay
, VISTED.UserName
, CALLCYCLES.RouteCode
, CALLCYCLES.Week
, CALLCYCLES.Requestable
FROM
(
NESTED QUERY JOINIG TO ANOTHER NESTED QUERY TO REPLICATE AN FULL JOIN IN MYSQL
) AS CALLCYCLES
RIGHT JOIN
(
NESTED QUERY JOINIG TO ANOTHER NESTED QUERY TO REPLICATE AN FULL JOIN IN MYSQL
) AS VISTED
ON
CALLCYCLES.StoreCode = VISTED.StoreCode
AND CALLCYCLES.CycleEndDate = VISTED.CycleEndDate
WHERE CALLCYCLES.StoreCode IS NULL
) AS CALLING
LEFT JOIN
(JOINING TO REFERENCE TABLE 1) AS EXCLUSIONS
ON
CALLING.RouteCode = EXCLUSIONS.RouteCode
AND CALLING.ScheduledActionDate = EXCLUSIONS.ExcludedDate
LEFT JOIN
(JOINING TO REFERENCE TABLE 2) AS OUTEXCLUSIONS
ON
CALLING.RouteCode = OUTEXCLUSIONS.RouteCode
AND CALLING.ScheduledActionDate = OUTEXCLUSIONS.ExcludedDate
AND CALLING.StoreCode = OUTEXCLUSIONS.StoreCode
К сожалению, кода ошибки нет, за исключением времени ожидания и того, что сценарий продолжает работать до истечения времени ожидания.