Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с запросом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
lamozavrik
Отправлено: 16 Февраля, 2012 - 16:56:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




Всем здрасте. У меня возникла проблемка, не знаю как решить (( Может кто поможет? Дело вот в чем:
Есть 3 таблицы: справочник товаров, заказы и товары в заказах.
справочник товаров хранит всю инфу о товарах (id, название, цена, ...)
таблица заказов хранит инфу про заказы (id, номер, дата, заказчик...)
таблица товаров в заказе (id, id_заказа, id_товара, кол-тво_заказаного_товара)
Так вот, мне нужно выбрать желательно одним запросом, такую инфу из этих трёх таблиц
id_заказа, номер_заказа, заказчик, дата, сумма_заказа

выбираю вот таким запросом:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT    o.id_заказа,
  3.                DATE_FORMAT(o.дата_заказа, '%d.%m.%Y %H:%i') AS date,
  4.                o.номер_заказа,
  5.                o.статус_заказа,
  6.                o.заказчик,
  7.                g.цена_товара * gio.кол-во_данного_товара в заказе AS sum
  8.                                 FROM заказы o, товары g, товары_в_заказах gio
  9.                                 WHERE o.id_заказа = gio.id_заказа AND
  10.                                 g.id_товара = gio.id_товара
  11.  


Проблем вроде нету кроме одной!
Если есть один заказ с двумя разными товарами, то мне его выбирает два раза, только с разной суммой. То есть например один товар стоит 1500 и его заказали две штуки, другой товар в том же заказе стоит 2000 и его заказали 3 штуки, то мне выведет как будто два разных заказа и сумма первого будет 3000, а второго 6000, все остальные поля одинаковы, и номер, и заказчик, и id.

Так вот собственно вопрос: Как изменить мой запрос, что бы он выводил все заказы и считал общую сумму одного заказа?
Постарался описать как можно подробнее )) Заранее всем откликнувшимся спасибо )


-----
Ударим крепким сном по мукам совести!
 
 Top
EuGen Администратор
Отправлено: 16 Февраля, 2012 - 17:58:05
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT    o.id_заказа,
  2.                DATE_FORMAT(o.дата_заказа, '%d.%m.%Y %H:%i') AS date,
  3.                o.номер_заказа,
  4.                o.статус_заказа,
  5.                o.заказчик,
  6.                SUM(g.цена_товара * gio.кол-во_данного_товара в заказе) AS sum_order
  7. FROM заказы AS o
  8.                LEFT JOIN товары AS g
  9.                     ON o.id_заказа = gio.id_заказа
  10.                LEFT JOIN товары_в_заказах AS gio
  11.                     ON g.id_товара = gio.id_товара
  12. GROUP BY
  13.                o.id_заказа

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
lamozavrik
Отправлено: 16 Февраля, 2012 - 18:20:03
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




EuGen, говроти, что не известное поле gio.id_заказа, но всё равно огромное тебе спасибо )) Совершенно забыл про GROUP BY )) Сделал немного другим запросом и все получилось ))


-----
Ударим крепким сном по мукам совести!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB