2015-02-04 4 views
0

У меня есть таблица в моей БД, которая имеет несколько столбцов с номерами. Я хотел бы запросить все строки в 1 запросе с отдельными итоговыми значениями для всех строк в каждом столбце в моей базе данных.Запросить несколько итогов сразу в MYSQL PHP

как так

$sql = ' 
SELECT sum(TOTAL1) 
    , sum(TOTAL2) 
    , sum(TOTAL3) 
    , sum(TOTAL4) 
    FROM TABLE WHERE ID = '.$ID.''; 

это работает, когда я делаю это с помощью одного запроса столбца, как это.

$sql = 'SELECT sum(TOTAL1) FROM TABLE WHERE ID = '.$ID.''; 

, но я не могу заставить его работать на упаковке в 1 запрос Кто-нибудь знает более правильный способ сделать это вместо того, чтобы в отдельных запросов?

+1

Использование псевдонимов.'SELECT sum (TOTAL1) как total1, sum (TOTAL2) как total2' и т. Д. Возможно даже что-то вроде' SELECT sum (TOTAL1 + TOTAL2 + TOTAL3) ' –

+0

Использование псевдонимов отлично подходит для меня 8-) Я использовал их до того, как дон Я не знаю, почему я этого не сделал. Спасибо, Фред. – Nato

+0

Обратите внимание, что в любое время, когда у вас есть перечисленные столбцы (x1, x2, x3 и т. Д.), Вероятно, что что-то не так с вашим дизайном – Strawberry

ответ

0
$sql = 'SELECT (sum(TOTAL1)+sum(TOTAL2)+sum(TOTAL3)+sum(TOTAL4)) AS FINALTOTAL FROM TABLE WHERE ID = '.$ID.''; 
+0

Мне нужно общее количество от каждого столбца каждой строки. – Nato

0

Использование псевдонимов.

Sidenote: Добавить статью WHERE в испытании примеров я приведенные ниже.

SELECT sum(TOTAL1) as total1, sum(TOTAL2) as total2 

который, если вы хотите использовать раздельные псевдонимы, очень удобно, если вы хотите, чтобы повторить их в качестве различных объектов.

Например:

$query = mysqli_query($con, "SELECT SUM(col1) as total1, 
     SUM(col2) as total2, 
     SUM(col3) as total3 FROM table "); 

while($row = mysqli_fetch_array($query)){ 

    echo $row['total1']; // echo'd 125 

    echo "<br>"; 

    echo $row['total2']; // echo'd 225 

    echo "<br>"; 

    echo $row['total3']; // echo'd 2000 

} 

Sidenote: Мои три колонки содержали следующее:

  • col1 в 2 строках 25, 100
  • col2 в 2 ряда 25, 200
  • col3 в 2 ряда 1000, 1000

Для того, чтобы повторить общее количество всех строк и, например: (а внутри цикла while)

$total = $row['total1'] + $row['total2'] + $row['total3']; 

echo $total; 

Или за один раз, и в качестве одного псевдонима и одну строку echo'd:

SELECT sum(TOTAL1 + TOTAL2 + TOTAL3) as total FROM table 

Ie:

$query = mysqli_query($con, "SELECT SUM(col1 + col2 + col3) as total FROM table "); 

while($row = mysqli_fetch_array($query)){ 

    echo $row['total']; 

} 
+0

Я пробовал это, у него все еще есть проблемы, кажется, работает, за исключением всех строк за второй, все показывают мне те же результаты, что и вторая сумма() странная и глючная – Nato

+0

@Nato Затем вам нужно копать дальше в свои ряды. Я бы не отправил свой ответ; не испытывая его сам. Проверьте, какие типы столбцов есть, если данные являются целыми числами и/или содержат запятые/точки. I.e .: '5000 или' 5.000', если вы имели в виду '5000' (пять тысяч). –

+0

все они целые числа, а мои столбцы - целые числа, проблема в том, что это дублирование числа по столбцам. и мне нужно общее количество для каждого столбца. – Nato

0

Примечание: тип данных должен быть одинаковым для всех полей, которые вы хотите SUM Соблюдая запрос вы можете иметь SUM (field1) + SUM (field2) + SUM (field3) ..... п в 1 одно поле Я использовал этот запрос для всего 2 полей и оба представляют собой целые числа

См это мое определение таблицы

create table `siso_area_operativa` (
    `id_area_operativa` int , 
    `area_operativa` varchar (8), 
    `responsable` int 
); 

и это запрос, который вы хотите

SELECT SUM(a.field1) FROM 
    (
    SELECT 
    SUM(id_area_operativa) field1 
    FROM 
    siso_area_operativa 
    UNION ALL 
    SELECT SUM(responsable) field1 
    FROM 
    siso_area_operativa) AS a 

Результат этого SUM (id_area_operativa) + SUM (ответственно) в одном поле

ENJOY !!!!!!!!!!!!

+0

Это интересно, я попробую сегодня днем. – Nato

+0

то, что это было, дало мне общее количество для всех столбцов. Мне нужно подсчет для каждого отдельно. ПРИМЕЧАНИЕ. Я также использую группу по функциям, пока все это происходит. – Nato

+0

@Nato можете ли вы передать мне свой последний запрос, который вы хотите использовать? –

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