Этот запрос не совместим с php?Это явно очевидная синтаксическая ошибка, потому что я не могу заставить его работать - PullRequest
0 голосов
/ 20 мая 2019

Итак, в настоящее время я делаю панель управления для моего босса, отображая данные с точки зрения логистики, он прислал мне свой собственный запрос MS Access, но я не могу его запустить, пытаясь создать таблицу. наш работник может просматривать данные, которые он должен извлекать. Что-то явно не так с этим?

Я всего лишь ученик, но мои старшие считают, что все, что связано с ORDER, требует, чтобы [] вокруг него работало через PHP и codeigniter, я пытался изменить синтаксис через валидатор, но я, кажется, попал в кирпичную стену , Ниже оригинал.

function order_table()
    {   
        $date = date("Y-m-d");
        $macsdb = $this->load->database('macs', TRUE);

$query = $macsdb->query("SELECT temp123.Hour, temp123.User, Count(temp123.[ORDER]) AS CountOfORDER, Sum(temp123.SumOfCountOfPRODUCT) AS SumOfSumOfCountOfPRODUCT, Sum(temp123.SumOfSumOfQUANTITY) AS SumOfSumOfSumOfQUANTITY
FROM (SELECT temp456.Hour, temp456.User, temp456.[ORDER], Sum(temp456.CountOfPRODUCT) AS SumOfCountOfPRODUCT, Sum(temp456.SumOfQUANTITY) AS SumOfSumOfQUANTITY
FROM (SELECT WHAUDIT.Date, Format([Time],'hh') AS [Hour], WHAUDIT.User, WHAUDIT.[ORDER], Count(WHAUDIT.PRODUCT) AS CountOfPRODUCT, Sum(WHAUDIT.QUANTITY) AS SumOfQUANTITY
FROM WHAUDIT
WHERE (((WHAUDIT.type)='I11' Or (WHAUDIT.type)=' 11'))
GROUP BY WHAUDIT.Date, Format([Time],'hh'), WHAUDIT.User, WHAUDIT.[ORDER]
HAVING (((WHAUDIT.Date)='$date')) as temp456
GROUP BY temp456.Hour, temp456.User, temp456.[ORDER]) as temp123
GROUP BY temp123.Hour, temp123.User
ORDER BY temp123.Hour DESC;");

     return $query->result();
        $macsdb->close();        
    }

Запрос сам по себе выглядит следующим образом:

SELECT
  temp123.Hour,
  temp123.User,
  Count(temp123.[ORDER]) AS CountOfORDER,
  Sum(temp123.SumOfCountOfPRODUCT) AS SumOfSumOfCountOfPRODUCT,
  Sum(temp123.SumOfSumOfQUANTITY) AS SumOfSumOfSumOfQUANTITY
FROM
  (
    SELECT
      temp456.Hour,
      temp456.User,
      temp456.[ORDER],
      Sum(temp456.CountOfPRODUCT) AS SumOfCountOfPRODUCT,
      Sum(temp456.SumOfQUANTITY) AS SumOfSumOfQUANTITY
    FROM
      (
        SELECT
          WHAUDIT.Date,
          Format([Time], 'hh') AS [Hour],
          WHAUDIT.User,
          WHAUDIT.[ORDER],
          Count(WHAUDIT.PRODUCT) AS CountOfPRODUCT,
          Sum(WHAUDIT.QUANTITY) AS SumOfQUANTITY
        FROM
          WHAUDIT
        WHERE
          (
            (
              (WHAUDIT.type) = 'I11'
              Or (WHAUDIT.type) = ' 11'
            )
          )
        GROUP BY
          WHAUDIT.Date,
          Format([Time], 'hh'),
          WHAUDIT.User,
          WHAUDIT.[ORDER]
        HAVING
          (((WHAUDIT.Date) = '$date')) as temp456
        GROUP BY
          temp456.Hour,
          temp456.User,
          temp456.[ORDER]
      ) as temp123
    GROUP BY
      temp123.Hour,
      temp123.User
    ORDER BY
      temp123.Hour DESC;

Я пытался получить результаты, используя функцию echo для заполнения таблицы, я пока не добился того, чтобы заставить ее работать. Похоже, что это запрос, внутри запроса, внутри запроса. Любой совет будет высоко ценится.

Я пытался заключить в квадратные скобки все экземпляры ORDER, так как это, по-видимому, важная часть, которая без него не будет читаться должным образом. Я попытался запустить его через валидатор, но это также вызывает различные проблемы из-за скобок. Я также знаю, что, похоже, по какой-то причине он действительно не нравится в формате Time.

Цель этого запроса - заполнить таблицу по результатам на странице просмотра Codeigniter. Любой совет будет очень признателен.

1 Ответ

0 голосов
/ 20 мая 2019

Выражения значения даты в Access заключены в окто-типы, поэтому либо:

HAVING (((WHAUDIT.Date)=#$date#)) as temp456

или, если это сегодняшняя дата:

HAVING (((WHAUDIT.Date)=Date())) as temp456

Кроме того, пробел здесь выглядит странно:

Or (WHAUDIT.type) = ' 11'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...