PDA

Zobacz pełną wersję : "Potrójne" zapytanie do bazy.



tbxx
25-02-2013, 11:10
Mam zmodyfikowany dodatek wyświetlający listę ulubionych artykułów uzytkowników w community builder. Tworzenie listy wygląda tak:

<tr>
<td class='$style_link'><a href='".JRoute::_('index.php?option=com_content&view=article&id=')."$str_article_info->article_id'>".$str_article_info2->title."</td>
<td class='$style_title'>".$str_article_info3->name."</td>
</tr>

Dane do listy są pobierane w 3 zapytaniach:

1.

$query = "SELECT * FROM `#__faves` WHERE `user_id` = ".$userid;
$_CB_database->setQuery( $query );
$rows = $_CB_database->loadObjectList();
foreach($rows as $str_article_info)

2.

$a=$str_article_info->article_id;
$query = "SELECT * FROM `#__content` WHERE `id` = ".$a;
$_CB_database->setQuery( $query );
$rows = $_CB_database->loadObjectList();
foreach($rows as $str_article_info2)

3.

$b=$str_article_info2->sectionid;
$query = "SELECT * FROM `#__sections` WHERE `id` = ".$b;
$_CB_database->setQuery( $query );
$rows = $_CB_database->loadObjectList();
foreach($rows as $str_article_info3)

Czy da się jakoś połączyć te 3 zapytania w jedno z sortowaniem wg. ".$str_article_info3->name." a następnie wg. ".$str_article_info2->title." ?

Dziudek
26-02-2013, 13:45
Witam,

Polecam poczytać o poleceniu JOIN w MySQL ;) Aczkolwiek polecam też sprawdzić potem wydajność obu rozwiązań, gdyż często wiele JOIN-ów jst wolniejsze niż oddzielne zapytania.