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

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

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Код: 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 друга и сумму его объектов из второй таблицы и в цикле выводим.
Будет работать в стандартном окружении движка (компонент\модуль\плагин\шаблон), писал на глаз, в синтаксисе мог где ошибиться
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

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

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
пишет Unknown column 'f.user_friend_id' in 'field list'
проверьте по структуре ваших таблиц, я же ее досконально не знаю, но принцип надеюсь понятен :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

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

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Ну тут два варианта :) Либо поля user_id нет ни в одной таблице, либо оно есть с таким названием в обоих таблицах, а вы в SELECT не указываете псевдоним, соответственно запрос не знает из какой таблицы брать данное поле
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Код: 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
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

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

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

Как заставить Joomla 1.5 работать на сервере с MySQL версии 5.7 и выше?

Автор Palomnik

Ответов: 13
Просмотров: 6588
Последний ответ 17.05.2022, 09:07:32
от altvvc
Как установить Joomla 1.5 на php 7?

Автор Marius

Ответов: 8
Просмотров: 2511
Последний ответ 30.05.2021, 21:11:21
от Marius
При попытке войти в админку 404 ошибка компонента - Joomla 1.5: Общие вопросы

Автор omezik

Ответов: 1
Просмотров: 2260
Последний ответ 30.08.2019, 16:10:56
от voland
Нужно починить модуль импорта на сайте Joomla

Автор matus-8

Ответов: 0
Просмотров: 2125
Последний ответ 22.08.2019, 15:09:17
от matus-8
Восстановление Joomla на локальном компьютере из резерной копии

Автор raf88

Ответов: 6
Просмотров: 7163
Последний ответ 28.12.2018, 01:48:46
от natalileto