У меня есть приложение, которое я написал в JavaScript/HTML, который использует базу данных локального компьютера. Это довольно сложная проблема, но мне просто нужна помощь в SQL-запросе прямо сейчас. Более подробную информацию о локальном классе базы данных JavaScript можно найти здесь: JavaScript Access database classПреобразование SQL-запросов из Access в MySQL
Данные состоят из трехмерных значений и компонента времени, поэтому база данных довольно большая, хотя я упростил данные с 200 временных шагов до 3 для тестирования. Существует несколько значений, описывающих трехмерную модель, поэтому я получаю доступ к различным значениям с помощью выпадающих списков. К сожалению, у меня нет рабочей версии, которую я могу показать всем, потому что она работает только на локальной машине. Я пытаюсь преобразовать эту версию в демонстрацию базы данных, основанной на веб-стиле, которая запускает MySQL. Я размещаю в FatCow, и если вы знаете их, вы знаете, что у них есть PHP-интерфейс MySQL.
Настройка данных
Способ данные настройки, у меня есть несколько столбцов, которые описывают таблицы данных 3D описана ниже. Это для одной таблицы под названием «Даты»:
- Cell (уникальный номер для этой ячейки в матрице)
- XVal (это X место СИНКА матрицы)
- YVal (это Y расположение в матрице)
- подъема (Это местоположение Z в матрице)
- окт-97 (это один из трех компонентов времени со значениями)
- окт-07 (это один из трех раз компоненты со значениями)
- октября-17 (это один из трех временных компонент со значениями)
Есть несколько таблиц, которые называются, чтобы сделать сетку, но давайте просто сосредоточиться на «Даты» таблиц сейчас
Некоторые таблицы данных настраиваются аналогично ссылкам XVal и YVal, но некоторые относятся только к уникальному значению Cell. В текущем приложении я беру большие столбцы данных и делаю таблицу сводных преобразований для создания сетки модели. Трехмерная матричная сетка 36x41x15. Эти сетки отображаются в виде:
- XY вид сверху
- поперечное XZ сечение
- крест YZ раздел
У меня есть три запроса SQL для каждой из сетей, которые работают в моем местном применении, но они не работают в MySQL. Имейте в виду, я учу себя, как делать это, поэтому я немного неопытен. Не убивайте меня, если это очевидная ошибка.
SQL-запросы, которые работают на местном применении
Для этих трех запросов, вот что работает:
XY сетка:
TRANSFORM ROUND(max(dat.[Oct-07]) *100,2) SELECT dat.Yval FROM dat WHERE (((dat.Lift)=7)) GROUP BY dat.Yval ORDER BY dat.Yval DESC , dat.Xval PIVOT dat.Xval;
XZ сетка:
TRANSFORM ROUND(max(dat.[Oct-07]) *100,2) SELECT dat.Lift FROM dat WHERE (((dat.Yval)=20)) GROUP BY dat.Lift, dat.Yval ORDER BY dat.Lift DESC PIVOT dat.Xval;
YZgrid:
TRANSFORM ROUND(max(dat.[Oct-07]) *100,2) SELECT dat.Lift FROM dat WHERE (((dat.Xval)=20)) GROUP BY dat.Lift ORDER BY dat.Lift DESC , dat.Yval DESC PIVOT dat.Yval;
Приложение обращается к XVal, YVal или Lift, которое необходимо для отображения. Таким образом, в сетке XY [Oct-07] является переменной в запросе, как и dat.Lift (число от 1 до 15).
Аналогично в двух других сетках, [Oct-07] - это переменная в запросе, как и dat.YVal или dat.XVal соответственно.
После того как я импортировал данные в MySQL Я попытался запустить эти запросы, но они дают ошибку:
MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRANSFORM ROUND(max(dat . [ Oct - 07 ]) * 100 , 2) SELECT dat . Yval FROM da' at line 1
Я использую ROUND (MAX (... чтобы вернуть все значения столбца и исправить десятичное .
Я думаю, что проблема в ТРАНСФОРМ заявлении, но я не знаю, как перевести это и получить тот же результат.
вопрос заключается в том, как я могу перевести эти три запроса из MS Access основанный на MySQL запрос?
Спасибо за помощь и понимание
Нет конвертации. У mysql нет поддержки для сводных запросов, кроме отвратительных хаков для определенных наборов колонок. и эти хаки становятся чрезвычайно уродливыми, очень быстро –
Любые предложения о том, что я могу сделать для достижения того, что мне нужно? – Crimpy
выполните стандартный запрос в mysql, затем выполните преобразование сводных данных в клиентском коде. –