2015-08-22 3 views
1

У меня есть схож с ума, как сумасшедший, и я не нашел ответа на то, что я пытаюсь сделать. Мне нужно запросить мою БД и получить информацию, но также суммировать один столбец на основе того, имеет ли другой столбец одинаковые значения.PDO SELECT Столбцы правильно

$data = $pdo->prepare("SELECT `name`, SUM(`cost`) FROM `donations` WHERE `name` = `name` ORDER BY `cost` DESC"); 
    $data->execute(); 
    $data->setFetchMode(PDO::FETCH_ASSOC); 

мне это нужно, чтобы сложить все «стоимость», где «имя» является тем же самым в колонке.

+0

SELECT 'name', SUM (' cost') FROM 'пожертвования' ORDER BY' cost' DESC? –

+1

Используйте «группу по имени». –

+1

Вы спрашиваете, как суммировать столбец 'cost' для всех записей, где столбец' name' не уникален? – skeggse

ответ

1
$data = $pdo->prepare("SELECT `name`, SUM(`cost`) AS `cost` FROM `donations` GROUP BY `name` ORDER BY `cost` DESC"; 

Это выводящий, как я хочу, но я не уверен, если это правильно кто-то может объяснить, что именно «AS cost» делает?

+2

«AS cost» переименовывает столбец результатов. PDO, как правило, возвращал бы незанятую запись '$ row [" SUM (cost) "]', потому что это указано как выражение SELECT. «... AS ...» переименовывает вызов функции в псевдоним и, таким образом, возвращает более высокий ключ столбца результата. – mario

+0

Вы должны принять ваш ответ, если он решит вашу проблему. – skeggse

+0

Не могу принять мой ответ до завтра, но я это сделаю. –

2
$data = $pdo->prepare("SELECT `name`, SUM(`cost`) FROM `donations` WHERE `name` = ? GROUP BY name ORDER BY `cost` DESC"); 

Добавить GROUP BY пункт: https://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

+0

Получение ошибки SQL. 'Uncaught exception 'PDOException' с сообщением 'SQLSTATE [HY093]: Недопустимый номер параметра: никаких параметров не было связано –

+1

вам нужно привязать'? 'К параметру. http://php.net/manual/en/pdo.prepare.php –

+0

Я думаю, что он хочет получить лучших доноров и не найти сколько 1 человек пожертвовал –