PHP PDO оператор с суммой и другим столбцом не работает - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь запустить SQL-запрос с PDO

Это работает

$result = $dbo->query("SELECT sum(c) as scfus 
    FROM tbl 
    WHERE 
        YEAR(ondate)=YEAR('".$_POST['startdate']."') 
        AND MONTH(ondate)=MONTH('".$_POST['startdate']."') 
        AND DAY(ondate)=$i");

но это не

$result = $dbo->query("SELECT a,b,sum(c) as scfus 
    FROM tbl 
    WHERE 
        YEAR(ondate)=YEAR('".$_POST['startdate']."')
        AND MONTH(ondate)=MONTH('".$_POST['startdate']."') 
        AND DAY(ondate)=$i");

Единственное отличие состоит в добавлении имен столбцов a, b к запросу.

Я могу запустить этот запрос (оба) прямо в mysql и получить одну запись обратно, как и ожидалось, но PDO не похоже на имена столбцов И сумму в одном запросе?

Я не вижу причины или решения. Новичок в PDO, поэтому для меня это никогда не было проблемой.

Спасибо.

ОБНОВЛЕНИЕ - ОК, я все еще думаю, что это должно работать нормально, но в качестве обходного пути я выполнил 2 SQL-оператора, почти точно так же. Один с SELECT SUM (x), другой с SELECT a, b, но без суммы. Работает нормально, но я действительно должен быть в состоянии сделать это в одном утверждении, если только у меня нет ограничений PDO, о которых я еще не знаю.

Ответы [ 3 ]

0 голосов
/ 25 августа 2018

Попробуй так для своего запроса, у меня получилось то, чего ты хочешь достичь:

$ result = $ dbo-> query ("SELECT a, b, (SELECT sum (c) как whatFROM tbl), как scfus ОТ ТБЛ ГДЕ YEAR (ondate) = YEAR ( ' "$ _ POST [ 'StartDate']."') AND MONTH (ondate) = MONTH ('". $ _ POST [' startdate ']."') AND DAY (ondate) = $ i ");

SUM возвращает только одну строку, поэтому вы никогда не получите все свои результаты и только результаты первых совпадающих критериев WHERE (он регистрирует первую найденную запись, а затем считает только то, что ему нужно).

Это будет работать

Да, кстати, сделайте метку даты, сделайте строку поста даты в формате даты sql и отметьте

WHERE date = $_POST['date']
0 голосов
/ 26 августа 2018

будет работать SELECT a, b, (ВЫБЕРИТЕ СУММУ (ИДЕНТИФИКАТОР) * 30 ИЗ таблицы) ИЗ таблицы, ГДЕ ИД = НЕКОТОРЫЕ (ВЫБЕРИТЕ ID ИЗ таблиц, ГДЕ users_ID = idYouWant);

0 голосов
/ 25 августа 2018

вам может потребоваться GROUP BY c (или любой другой столбец, который вы можете сгруппировать для функции агрегирования домена SUM()), чтобы получить желаемый набор результатов ... и, возможно, принять во внимание приведенное выше предложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...