0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 9181 Просмотров
*

dmonco

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • http://dmitryboruk.com
Делаю бонусную программу для сайта. Не получается вывести нужные данные. Либо знаний MySQL не хватает, либо PHP, либо вывод через PHP именно в Joomla... (либо плохому танцору яйяяя мешают crazy!)

Есть две таблицы:
родная таблица ВиртМарта `jos_vm_orders`, где по id юзера можно посчитать, какие покупки он сделал
и таблица `jos_vm_friends`, созданная мною, где есть привязка друзья друзей: поля id, user_id, user_friend_id

Вопрос: нужно получить сумму совершённых заказов друзей, которые подписались под меня.

Например, запрос 1: выводим сначала друзей, которые под меня подписаны:

<?php
        $db =& JFactory::getDBO();
        $query =  'SELECT `user_friend_id` FROM  `jos_vm_friends` WHERE `user_id` = '.$auth['user_id'].'';
           $db =& JFactory::getDBO();
                  $result = $db->setQuery($query);
        $res =  $db->loadAssoc();
?>

Запрос 2: вывести сумму заказа по id.

<?php
        $db =& JFactory::getDBO();
        $query2 =  'SELECT SUM( order_total ) AS  `total` FROM  `jos_vm_orders` WHERE `order_status` =  "ЗД" AND `user_id` = "120"';
           $db =& JFactory::getDBO();
                  $result = $db->setQuery($query);
        $res =  $db->loadAssoc();
?>

Как объединить эти запросы и вывести сумму покупок всех моих друзей?

Заранее благодарю!

Модераторы! Не знал, куда эту тему прикрутить. Если больше к разработке подходит, прошу перенести тему и сильно не меня не матюггать  8)
« Последнее редактирование: 26.12.2009, 18:26:03 от dmonco »
*

beliyadm

  • Легенда
  • 8830
  • 1623 / 63
  • Севастополь == Россия
Код: php
$user =& JFactory::getUser();
$db =& JFactory::getDBO();

$query = 'select f.user_friend_id AS fid, SUM(o.order_total) AS osun
from #__vm_friends as f
join jos_vm_orders as o on o.user_id = f.user_friend_id
where f.user_id = "'.$user->id.'" and o.order_status =  "ЗД"
group by f.user_friend_id';

$db->setQuery($query);
$rows = $db->loadObjectList();

foreach ( $rows as $row )
{
echo $row->fid.' - '.$row->osun;
}

То есть - получили объект авторизованного пользователя (в запросе используем его id), написали общий запрос, берущий ID друга и сумму его объектов из второй таблицы и в цикле выводим.
Будет работать в стандартном окружении движка (компонент\модуль\плагин\шаблон), писал на глаз, в синтаксисе мог где ошибиться
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

dmonco

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • http://dmitryboruk.com
Принцип понял! Огромное спасибо!
Чё-то на самом деле где-то ошибочка. В мускуле проверяю:

SELECT `f.user_friend_id` AS `fid`, SUM( o.order_total ) AS `osun`
FROM `jos_vm_friends` AS `f` JOIN `jos_vm_orders` AS `o` ON `o.user_id` = `f.user_friend_id`
WHERE `f.user_id` = "131" AND `o.order_status` = "ЗО" GROUP BY `f.user_friend_id`

пишет Unknown column 'f.user_friend_id' in 'field list'
*

beliyadm

  • Легенда
  • 8830
  • 1623 / 63
  • Севастополь == Россия
пишет Unknown column 'f.user_friend_id' in 'field list'
проверьте по структуре ваших таблиц, я же ее досконально не знаю, но принцип надеюсь понятен :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

dmonco

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • http://dmitryboruk.com
Блин, знаю, что 100% какая-то мелочь, а что именно найти не получается.

Beliyadm, помогите, пожалуйста.

Пробовал разбить на части, проверить, например, таким запросом:

SELECT `user_id`, `user_friend_id`, `order_total`
FROM `jos_vm_friends`
INNER JOIN `jos_vm_orders`
ON `jos_vm_friends.user_friend_id` = `jos_vm_orders.user_id`

Выдает ошибку: #1052 - Column 'user_id' in field list is ambiguous

Структура таблиц следующая:

jos_vm_friends
   id   user_id   user_friend_id
   1   131           130
   2   131           140
   3   131           122

jos_vm_orders
   order_id   user_id   order_total
   1           130           5060.00000
   2           140           1070.00000
   3           122           2430.00000

Заранее благодарю!
*

beliyadm

  • Легенда
  • 8830
  • 1623 / 63
  • Севастополь == Россия
Ну тут два варианта :) Либо поля user_id нет ни в одной таблице, либо оно есть с таким названием в обоих таблицах, а вы в SELECT не указываете псевдоним, соответственно запрос не знает из какой таблицы брать данное поле
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

beliyadm

  • Легенда
  • 8830
  • 1623 / 63
  • Севастополь == Россия
Код: sql
SELECT f.user_id, f.user_friend_id, o.order_total
FROM jos_vm_friends AS f
INNER JOIN jos_vm_orders AS o ON f.user_friend_id = o.user_id
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

dmonco

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • http://dmitryboruk.com
Огромное спасибо!  :D :D :D :D :D :D

Всё работает чётко!

Вот окончательный вариант, может пригодится кому-то:

Код
SELECT f.user_id, f.user_friend_id, SUM(o.order_total)
FROM jos_vm_friends AS f
INNER JOIN jos_vm_orders AS o ON f.user_friend_id = o.user_id where f.user_id = "'.$user->id.'" and o.order_status =  "ЗД"
group by f.user_friend_id

Тему можно закрывать.
*

nik_neman

  • Захожу иногда
  • 52
  • 2 / 0
А как вывести php на отдельной странице Joomla?
Подскажите, пожалуйста, принцип...
Заранее спасибо.
*

RoooMka

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
  • RoooM
Может знаете, как добавить в order.order_list.php (список продаж) столбец с названием товара или хотя бы производителя?

$list  = "SELECT #__{vm}_orders.order_id,order_status, #__{vm}_orders.cdate,#__{vm}_orders.mdate,order_total,order_currency,#__{vm}_orders.user_id, ";
$list .= "first_name, last_name FROM #__{vm}_orders, #__{vm}_order_user_info WHERE ";
$count = "SELECT count(*) as num_rows FROM #__{vm}_orders, #__{vm}_order_user_info WHERE ";

Заранее спасибо!
*

Mick_20

  • Давно я тут
  • 786
  • 3 / 0
  • Кручу мучу... заработать хочу.
Ребят а как просто вывести все содержимое  таблицы?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как определить версию Joomla, лишившись доступа к админке?

Автор andk

Ответов: 9
Просмотров: 18757
Последний ответ 02.08.2018, 17:33:57
от Apoca1ypto
Ошибка при внесении в настройки изменений компонента jUpgrade(обновление joomla)

Автор Ilya69

Ответов: 0
Просмотров: 1695
Последний ответ 08.05.2018, 20:23:13
от Ilya69
перенесенная Joomla не видит MySQL - в логах MySQL старт нормальный

Автор ommy

Ответов: 23
Просмотров: 2075
Последний ответ 23.01.2018, 11:20:48
от altvvc
Обновление Joomla\!

Автор SemenSemen

Ответов: 3
Просмотров: 3035
Последний ответ 14.11.2017, 10:42:58
от SemenSemen
Обновление Joomla с 1.5 до 3

Автор kpripper

Ответов: 6
Просмотров: 2763
Последний ответ 27.05.2017, 23:47:50
от prosystema