Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> MySQL запрос SELECT SUM
darkcuba  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 116
Пользователь №: 30262
На форуме: 13 лет, 4 месяца, 20 дней
Карма:




Всем доброго дня, необходима помощь в построении правильного 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 ). Буду очень признателен за вашу помощь
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Winston  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9509
Пользователь №: 18161
На форуме: 15 лет, 8 месяцев, 26 дней
Карма: 552




select sum(cart.`count` * products.price)
from cart
inner join products
on cart.product = products.id
PMСайт пользователя
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
darkcuba  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 116
Пользователь №: 30262
На форуме: 13 лет, 4 месяца, 20 дней
Карма:




А как дополнить данный запрос, необходимо было добавить такое условие.
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);
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2194
Пользователь №: 28976
На форуме: 13 лет, 7 месяцев, 21 день
Карма: 152




А вы не ищите легких путей.
$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'];
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
darkcuba  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 116
Пользователь №: 30262
На форуме: 13 лет, 4 месяца, 20 дней
Карма:




Цитата (Kusss @ 26.02.2014 - 20:04)
$sql = "
select sum(`cart`.`count` * `products`.`newprice`) AS summa;

Откуда AS summa, и что это значит, подскажите пожалуйста
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2194
Пользователь №: 28976
На форуме: 13 лет, 7 месяцев, 21 день
Карма: 152




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

echo $all_money['sum(`cart`.`count` * `products`.`newprice`)']; // Без AS 
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6460
Пользователь №: 35718
На форуме: 12 лет, 4 месяца
Карма: 208




более того, после присвоения алиаса уже нельзя обращаться к полям или таблицам по оригинальному имени


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dr.nomore  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 527
Пользователь №: 38359
На форуме: 11 лет, 4 месяца, 13 дней
Карма: 11




Можно

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)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dr.nomore  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 527
Пользователь №: 38359
На форуме: 11 лет, 4 месяца, 13 дней
Карма: 11




Цитата (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.';';

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6460
Пользователь №: 35718
На форуме: 12 лет, 4 месяца
Карма: 208




я немного ошибся, это касается только имен таблиц
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%"


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
darkcuba  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 116
Пользователь №: 30262
На форуме: 13 лет, 4 месяца, 20 дней
Карма:




В чем ошибка??


Этот запрос выводит необходимое значение
$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);


PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2194
Пользователь №: 28976
На форуме: 13 лет, 7 месяцев, 21 день
Карма: 152




cart.key_cart = ".$_COOKIE['key']." "
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
darkcuba  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 116
Пользователь №: 30262
На форуме: 13 лет, 4 месяца, 20 дней
Карма:




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

Не работает, может в самом запросе ошибка?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6460
Пользователь №: 35718
На форуме: 12 лет, 4 месяца
Карма: 208




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());


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
darkcuba  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 116
Пользователь №: 30262
На форуме: 13 лет, 4 месяца, 20 дней
Карма:




Вот что она выводит:

переменную $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());
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса