[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MySQL запрос SELECT SUM
Страницы: 1, 2
darkcuba
Всем доброго дня, необходима помощь в построении правильного MySQL запроса.
Имеются 2 таблицы.

1 Таблица:
( `products` ): Таблица с товарами.
Поля:
`id` ( ид товара )
`price` ( стоимость товара )

2 Таблица:
(`cart`): Корзина.
Поля:
`product` ( ид товара )
`count` ( количество )

#############################
В товарах ( `products` ) следующие данные

=============================
| id | price |
========
| 1 | 100 |
========
| 2 | 500 |
========


#############################
В корзине (`cart`) имеются следующие товары:

=============
| product | count |
============
| 1 | 10 |
=========
| 2 | 5 |
======
Необходимо вычислить общую сумму товаров находящихся в корзине. Ответ должен быть ( 3500 ). Буду очень признателен за вашу помощь
Winston
select sum(cart.`count` * products.price)
from cart
inner join products
on cart.product = products.id
darkcuba
А как дополнить данный запрос, необходимо было добавить такое условие.
cart.key_cart = $_COOKIE[key]
Заранее благодарю

$all_money =  mysql_result(mysql_query("select sum(`cart`.`count` * `products`.`newprice`)
from `cart`
inner join `products`
on `cart`.`order` = `products`.`id`"
),0);
Kusss
А вы не ищите легких путей.
$sql = "
select sum(`cart`.`count` * `products`.`newprice`) AS summa
from `cart`
inner join `products` on `cart`.`order` = `products`.`id`
WHERE cart.key_cart = "
.(int)$_COOKIE[key];
$all_money = mysql_fetch_assoc(mysql_query($sql));
echo $all_money['summa'];
darkcuba
Цитата (Kusss @ 26.02.2014 - 20:04)
$sql = "
select sum(`cart`.`count` * `products`.`newprice`) AS summa;

Откуда AS summa, и что это значит, подскажите пожалуйста
Kusss
Сокращение/переименование
Цитата
Используя ключевое слово AS, выражению в SELECT можно присвоить псевдоним. Псевдоним используется в качестве имени столбца в данном выражении и может применяться в ORDER BY или HAVING.

echo $all_money['sum(`cart`.`count` * `products`.`newprice`)']; // Без AS 
Valick
более того, после присвоения алиаса уже нельзя обращаться к полям или таблицам по оригинальному имени

_____________
Стимулятор ~yoomoney - 41001303250491
dr.nomore
Можно

SELECT `article` as a FROM `article` as art WHERE `article` LIKE "%BELI%"

Showing rows 0 - 2 ( 3 total, Query took 0.0089 sec)

Наиборот, в where не удастся юзать алиасы полей

SELECT `article` as a FROM `article` as art WHERE a LIKE "%BELI%"

1054 - Unknown column 'a' in 'where clause'

И только having спасает

SELECT `article` as a FROM `article` as art having a LIKE "%BELI%"

Showing rows 0 - 2 ( 3 total, Query took 0.0020 sec)
dr.nomore
Цитата (Kusss @ 27.02.2014 - 00:04)
А вы не ищите легких путей.
$sql = "
select sum(`cart`.`count` * `products`.`newprice`) AS summa
from `cart`
inner join `products` on `cart`.`order` = `products`.`id`
WHERE cart.key_cart = "
.(int)$_COOKIE[key];



И вы не ищите. На inner join можно повесить дополнительные условия

inner join `products` on `cart`.`order` = `products`.`id`
AND cart.key_cart = (int)$_COOKIE[key]

Из рабочего

$q='select sum(`art`.`price_retail`*`o`.`amount`) as `sum`, 
count(`art`.`article_id`) as `count`
from `orders` as `o` inner join `article` as `art`
on `art`.`article_id`=`o`.`article_id`
and `o`.`ended` = 0 and `o`.`user_id`='
.$user_id.';';

Valick
я немного ошибся, это касается только имен таблиц
SELECT `article` as a FROM `article` as art WHERE article.`article` LIKE "%BELI%"

SELECT `article` as a FROM `article` as art WHERE art.`article` LIKE "%BELI%"


_____________
Стимулятор ~yoomoney - 41001303250491
darkcuba
В чем ошибка??


Этот запрос выводит необходимое значение
$all_money =  mysql_result(mysql_query("select sum(cart.`count` * products.newprice)
from cart
inner join products
on cart.order = products.id "
),0);


А этот отказывается работать, где тут ошибка?

$all_money =  mysql_result(mysql_query("select sum(cart.`count` * products.newprice)
from cart
inner join products
on cart.order = products.id AND cart.key_cart =
$_COOKIE[key] "),0);


Kusss
cart.key_cart = ".$_COOKIE['key']." "
darkcuba
Цитата (Kusss @ 3.03.2014 - 19:06)
cart.key_cart = ".$_COOKIE['key']." "

Не работает, может в самом запросе ошибка?
Valick
darkcuba
1) формируйте запрос в отдельной переменной. Потом легко проверить что вы скармливаете серверу MySQL просто выводом этой переменной на экран.

$cook = (int)$_COOKIE['key']; // если число, а по идее должно быть число
$cook = mysql_real_escape_string($_COOKIE['key']); // если текст, то и в запросе cart.key_cart ='".$qook."'";
$query ="select sum(cart.`count` * products.newprice)
from cart
inner join products
on cart.order = products.id AND cart.key_cart ="
.$qook;
echo $query;


2) используйте конструкцию or die()
$all_money =  mysql_result($query) or die(mysql_error());


_____________
Стимулятор ~yoomoney - 41001303250491
darkcuba
Вот что она выводит:

переменную $query она выводит как текст:

select sum(cart.`count` * products.newprice) from cart inner join products on cart.order = products.id AND cart.key_cart =

А далее следует такая ошибка:

Warning: mysql_result() expects at least 2 parameters, 1 given in cart.php on line 137

137 строка это: $all_money = mysql_result($query) or die(mysql_error());
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.