Проблема с вложенными арифметическими запросами MySQL на веб-сервере

Я сделал небольшое веб-приложение с поддержкой PHP + HTML5 + JS, приложение работает без ошибок на моем локальном веб-сервере (на моем ноутбуке), я использую XAMPP v3.2.2 с версией сервера: 10.1.9-MariaDB mariadb.org бинарный дистрибутив.

Я загрузил все файлы и импортировал базу данных на веб-сервер, и я получил странную ошибку в одном PHP-файле, который выполняет запрос MySQL к базе данных.

Я получил запрос и вручную выполнить на моем локальном phpMyAdmin и работает без ошибок, но в веб-сервере есть синтаксическая ошибка 🙁

Это пример запроса:

SELECT DISTINCT 100 AS cyear, DATE_FORMAT( personas.fecha, '%d/%m/%Y' ) AS fecha, 1 AS numb, personas
.id_persona, personas.distancia, (
personas.rating - (
SELECT valor.valor FROM valor WHERE valor.valor=1 AND valor.distancia=(
SELECT personas.distancia WHERE personas.id_persona=1))) AS calc, (personas.rating +
personas.rating - (
SELECT valor.valor FROM valor WHERE valor.valor=1 AND valor.distancia=(
SELECT personas.distancia WHERE personas.id_persona=1))) As clase, personas.rating
FROM personas, valor WHERE personas.id_persona=1 AND valor.valor=1

Ошибка: # 1064 — у вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного синтаксиса

Что не так? У меня есть часы, пытаясь выяснить, может быть, я использую некоторые устаревшие функции? Спасибо за чтение и, пожалуйста, прости этот плохой английский.

2

Решение

Вам не хватает FROM personas в двух местах.

По какой-то причине MariaDB не против, но MySQL видит в этом синтаксическую ошибку.

Вот исправленный код: (без синтаксических ошибок.)

SELECT DISTINCT 100 AS cyear, DATE_FORMAT( personas.fecha, '%d/%m/%Y' ) AS fecha, 1 AS numb, personas
.id_persona, personas.distancia, (
personas.rating - (
SELECT valor.valor FROM valor WHERE valor.valor=1 AND valor.distancia=(
SELECT personas.distancia FROM personas WHERE personas.id_persona=1))) AS calc, (personas.rating +
personas.rating - (
SELECT valor.valor FROM valor WHERE valor.valor=1 AND valor.distancia=(
SELECT personas.distancia FROM personas WHERE personas.id_persona=1))) As clase, personas.rating
FROM personas, valor WHERE personas.id_persona=1 AND valor.valor=1
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]