darkcuba
22.01.2014 - 18:13
Всем доброго дня, необходима помощь в построении правильного 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
22.01.2014 - 18:31
select sum(cart.`count` * products.price)
from cart
inner join products
on cart.product = products.id
darkcuba
26.02.2014 - 21:17
А как дополнить данный запрос, необходимо было добавить такое условие.
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);
А вы не ищите легких путей.
$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
27.02.2014 - 00:14
Цитата (Kusss @ 26.02.2014 - 20:04) |
$sql = " select sum(`cart`.`count` * `products`.`newprice`) AS summa; |
Откуда AS summa, и что это значит, подскажите пожалуйста
Сокращение/переименование
Цитата |
Используя ключевое слово AS, выражению в SELECT можно присвоить псевдоним. Псевдоним используется в качестве имени столбца в данном выражении и может применяться в ORDER BY или HAVING. |
echo $all_money['sum(`cart`.`count` * `products`.`newprice`)'];
Valick
27.02.2014 - 07:28
более того, после присвоения алиаса уже нельзя обращаться к полям или таблицам по оригинальному имени
_____________
Стимулятор ~yoomoney - 41001303250491
dr.nomore
27.02.2014 - 15:28
Можно
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
27.02.2014 - 15:45
Цитата (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
27.02.2014 - 15:48
я немного ошибся, это касается только имен таблиц
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
3.03.2014 - 22:25
В чем ошибка??
Этот запрос выводит необходимое значение
$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);
cart.key_cart = ".$_COOKIE['key']." "
darkcuba
5.03.2014 - 11:49
Цитата (Kusss @ 3.03.2014 - 19:06) |
cart.key_cart = ".$_COOKIE['key']." " |
Не работает, может в самом запросе ошибка?
darkcuba1) формируйте запрос в отдельной переменной. Потом легко проверить что вы скармливаете серверу MySQL просто выводом этой переменной на экран.
$cook = (int)$_COOKIE['key'];
$cook = mysql_real_escape_string($_COOKIE['key']);
$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
5.03.2014 - 14:03
Вот что она выводит:
переменную $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());
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.