Новости Joomla

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

Mick_20

  • Завсегдатай
  • 1002
  • 3 / 0
  • Что тут писать?
Запрос из трех таблиц
« : 17.04.2014, 12:53:07 »
Как сделать запрос из 3х таблиц?

Пока что у меня запрос из двух таблиц и подзапрос из третьей:

Код: php
$query = $db->getQuery(true);
$query->select('m.user_id,m.about,u.name')
->from('#__portfolio_members AS m')
->leftJoin('#__users AS u ON m.user_id = u.id');
$p_list = $db->setQuery($query)->loadObjectList();

foreach ($p_list as $var)
{
//достаем фото пользователя
$query = $db->getQuery(true);
$query->select('avatar');
$query->from('#__community_users');
$query->where("userid = {$var->user_id}");
$db->setQuery($query) or die("запрос1 не сработал");
$avatar = $db->loadResult();
}

Необходимо все переменные иметь в одном массиве.
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Re: Запрос из трех таблиц
« Ответ #1 : 17.04.2014, 13:31:26 »
вроде так
Код: php
$query = $db->getQuery(true);
$query->select('m.user_id,m.about,u.name,c.avatar')
->from('#__portfolio_members AS m')
->leftJoin('#__users AS u ON m.user_id = u.id');
->leftJoin('#__community_users AS c ON m.user_id = c.userid');
$p_list = $db->setQuery($query)->loadObjectList();
*

Mick_20

  • Завсегдатай
  • 1002
  • 3 / 0
  • Что тут писать?
Re: Запрос из трех таблиц
« Ответ #2 : 17.04.2014, 17:36:21 »
ого как просто оказалось))) а можно так из 10 таблиц тянуть данные?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Запрос из трех таблиц
« Ответ #3 : 17.04.2014, 18:03:14 »
Можно. Но насколько такая задача востребована? Я больше, чем из трёх-четырёх ни разу не встречал ситуации, где потребовалось бы.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Запрос из трех таблиц
« Ответ #4 : 17.04.2014, 18:44:04 »
Можно. Но насколько такая задача востребована? Я больше, чем из трёх-четырёх ни разу не встречал ситуации, где потребовалось бы.
Тогда никогда не открывайте битрикс http://govnokod.ru/5619
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Запрос из трех таблиц
« Ответ #5 : 17.04.2014, 18:47:12 »
Тогда никогда не открывайте битрикс http://govnokod.ru/5619
Красивый код. :)
*

Mick_20

  • Завсегдатай
  • 1002
  • 3 / 0
  • Что тут писать?
Re: Запрос из трех таблиц
« Ответ #6 : 18.04.2014, 09:12:27 »
А скажите как в этот запрос добавить
Код: php
$query->limit('0,40');
хочу постраничную навигацию сделать...

« Последнее редактирование: 18.04.2014, 10:43:58 от Mick_20 »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Запрос из трех таблиц
« Ответ #7 : 18.04.2014, 16:58:09 »
$list = $db->setQuery($query, 0, 40)->loadObjectList();
*

Hishchnik

  • Захожу иногда
  • 253
  • 19 / 1
  • ©
Re: Запрос из трех таблиц
« Ответ #8 : 02.05.2014, 21:34:59 »
у меня вопрос по теме, но для 2-х таблиц:    
выбираю определенные поля из таблицы item, нужно посчитать, количество комментариев к данной теме:
Код: php
$query
->select(array('a.id', 'a.name', 'a.created', 'a.title', 'a.text', 'ROUND(a.rating_sum / a.rating_count, 2) AS rating_value', 'a.rating_count', 'a.hits', 'a.catid', 'a.cat_title', 'COUNT(b.itemID) AS count'))
 ->from('#__contents_item AS a')
->join('INNER', '#__contents_comments AS b ON (a.id = b.itemID)')
->where('a.published=1')
->where('a.catid LIKE '.$this->input->getInt('id'));

вопрос в том, что "COUNT(b.itemID) AS count" выдает общее количество комментариев, а не количество комментариев в конкретной теме..... :(

забыл сказать:

при 'COUNT(b.itemID) AS count' выводит count=4(хотя к данной статье всего 2 коммента) и не циклирует(должно вывести 2 статьи):
Спойлер
[свернуть]

при 'b.itemID' выводит count=2(по 2 коммента на статью) но циклирует 2 раза (должно вывести 2 статьи вместо 4-х):
Спойлер
[свернуть]

Или придется всё же делать еще 1 запрос к базе?
« Последнее редактирование: 02.05.2014, 21:40:22 от Hishchnik »
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Запрос из трех таблиц
« Ответ #9 : 02.05.2014, 21:42:25 »
не знаю что вы подразумеваете под "циклированием" но чисто эмперически предполагаю что вам нужна группировка
Код: php
$query
->select(array('a.id', 'a.name', 'a.created', 'a.title', 'a.text', 'ROUND(a.rating_sum / a.rating_count, 2) AS rating_value', 'a.rating_count', 'a.hits', 'a.catid', 'a.cat_title', 'COUNT(*) AS count'))
 ->from('#__contents_item AS a')
->join('INNER', '#__contents_comments AS b ON (a.id = b.itemID)')
->where('a.published=1')
->where('a.catid LIKE '.$this->input->getInt('id'))
->group('a.id');
я прав, нет?
интернет-блог: http://websiteprog.ru
*

Hishchnik

  • Захожу иногда
  • 253
  • 19 / 1
  • ©
Re: Запрос из трех таблиц
« Ответ #10 : 02.05.2014, 22:27:45 »
...
такой запрос, и всего-то группирование подвело((((
итог, Вы правы.  :D
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.
*

Mick_20

  • Завсегдатай
  • 1002
  • 3 / 0
  • Что тут писать?
Re: Запрос из трех таблиц
« Ответ #11 : 23.11.2016, 10:49:26 »
Подскажите. Вылетает ошибка 500 на данный запрос:

Код: php
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('u.user_id, u.content_id, u.section_pk, u.setevoy_proekt, u.konkurs, u.date, r.region, a.name')
 ->from('#__planeta_pk_users AS u')
 ->leftJoin('#__planeta_regions AS r ON r.id = u.region');
 ->leftJoin('#__users AS a ON a.id = u.user_id');

А именно на последнюю строчку LeftJoin.

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

Блиин =)  Рано закрыл запрос. Убрал ; и все заработало.
« Последнее редактирование: 23.11.2016, 10:55:49 от Mick_20 »
*

Mick_20

  • Завсегдатай
  • 1002
  • 3 / 0
  • Что тут писать?
Re: Запрос из трех таблиц
« Ответ #12 : 23.11.2016, 11:00:13 »
Скажите а как в рамках одного запроса получить из одной таблицы две записи?

Пытался так но выводится только одна запись:

Код: php
...
$query->select('..., s.title, k.title')
->from('#__users AS u')
...
->leftJoin('#__content AS s ON s.id = u.proekt')
->leftJoin('#__content AS k ON k.id = u.konkurs')
...
echo $user->title;
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Запрос из трех таблиц
« Ответ #13 : 23.11.2016, 11:33:59 »
Код
$query->select('..., s.title AS title1, k.title AS title2')
echo $user->title1;
echo $user->title2;
*

Mick_20

  • Завсегдатай
  • 1002
  • 3 / 0
  • Что тут писать?
Re: Запрос из трех таблиц
« Ответ #14 : 23.11.2016, 12:16:17 »
Код
$query->select('..., s.title AS title1, k.title AS title2')
echo $user->title1;
echo $user->title2;

Благодарю. То, что надо.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Запрос в базу

Автор User82

Ответов: 5
Просмотров: 745
Последний ответ 28.10.2017, 12:29:03
от fsv
Стоит ли создавать отдельный запрос к базе данных?

Автор borro

Ответов: 4
Просмотров: 919
Последний ответ 10.07.2017, 13:03:03
от b2z
sql запрос для вывода правильной даты

Автор Frics

Ответов: 4
Просмотров: 1085
Последний ответ 04.07.2017, 14:17:22
от SeBun
Запрос на обновление данных

Автор web3.0

Ответов: 0
Просмотров: 889
Последний ответ 30.04.2017, 21:30:12
от web3.0
PHP скрипт для автоматической очистки таблиц в Базе Данных MySQL

Автор LovelyHost

Ответов: 46
Просмотров: 6886
Последний ответ 17.12.2016, 14:32:28
от vipiusss