2013-07-27 3 views
0

Я изучаю SQL правильно, и у меня небольшие проблемы с запросом, который я хочу реализовать на своей веб-странице. Я размещаю свою веб-страницу на своем собственном сервере, и я использую MySQL Workbench ver. 5.2.47CE (последнее). Теперь для создания моей веб-страницы я использую Adobe Dreamweaver CS6., отбрасывая два столбца после первого добавления двух столбцов.

Что я хочу сделать, это добавить 2 столбца вместе и вычесть их из другого столбца. A - (B + C) = 'result'

Это основано на игре, где A = TOTAL DEATHS AND B + C = TOTAL KILLS. Если я вычту эти два, я получу ВСЕГО SUICIDES.

Это то, что я пришел с атм ......

SELECT 
    (SELECT SUM(is_dead) 
    FROM survivor 
    WHERE (is_dead=1) 
)- 
    ((SELECT SUM(bandit_kills) 
    FROM survivor 
    ) + 
    (SELECT SUM(survivor_kills) 
    FROM survivor) 
    ) AS SUICIDES 

Теперь, когда я запускаю этот запрос в MySQL Workbench это работает! Я получаю правильный ответ!

Поэтому я скопировал код и создаю новый набор записей с SQL-запросом в Dreamweaver CS6. Когда я нажимаю кнопку TEST в создании нового набора записей, он возвращается с правильным значением, и все, кажется, передает TEST. Я нажимаю OK, чтобы сохранить новый набор записей.

Здесь происходит ошибка. Когда я иду, чтобы выбрать новый RECORDSET для вставки в таблицу, он снимает эту ошибку.

MySQL Error#: 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 ')) AS SUICIDES 

WHERE 0 = 1' в строке 1

+0

by sound of this Вы используете этот запрос вернуть результат и другой, чтобы вставить новую запись в базу данных? –

ответ

2

Похоже Dreamwaver как-то переписывать запрос, например, что этот WHERE 0 = 1 прилагается. Если это добавлено сразу после SELECT -clause, это, очевидно, синтаксическая ошибка SQL.

Предполагая, что ваш is_dead столбец только значения 0 и 1, вы можете сделать математику немного легче и есть из положения, которое должно привести Dreamwaver к правильному синтаксису:

SELECT SUM(is_dead) - (SUM(bandit_kills) + SUM(survivor_kills)) 
FROM survivor 

Тем не менее это не объяснение, почему добавляется WHERE 0 = 1. См. http://sqlfiddle.com/#!2/336f4/2 для игры

0

Почему все эти подзапросы? вам это должно легко понравиться.

 SELECT SUM(is_dead)-(SUM(bandit_kills)+ SUM(survivor_kills)) AS SUICIDES 
     FROM survivor WHERE is_dead=1 
+0

Поскольку 'WHERE'predicate также оценивается для сумм по bandit_kills и survivor_kills, это не будет тем же результатом. – contradictioned

0

БЛАГОДАРЯ contradictioned это то, что я искал ....

, то запрос

SELECT SUM(is_dead) 
FROM survivor 

дает мне сумму всех игроков в таблице is_dead со значением 1 (1 будучи мертвым)

Большое вам спасибо ...

Смежные вопросы