En este décimo tutorial sobre el desarrollo para smf hablaremos un poco sobre Bases de datos (Consultas Anidadas).
Base de datos (Consultas Anidadas) 
Autor: ^HeRaCLeS^
En este décimo tutorial sobre el desarrollo para smf hablaremos un poco sobre:

Bases de datos (Consultas Anidadas)
Este sera el último tutorial hablando sobre base de datos y completaria la información del tutorial anterior.
Nota: Para poder hacer uso de todo esto deberemos globalizar las variables
$smcFunc y
$scripturl
Como ya mencionamos en el tutorial
Variables globales la variable
$smcFunc es del tipo array y tiene un conjunto de funciones generales, entre ellas las funciones que necesitamos para trabajar con la base de datos.
La variable
$scripturl nos devuelve la url del sitio. Ej: tu_sitio.com/index.php
Para explicar esto vamos a trabajar sobre las tablas, columnas y datos existentes en smf, asi evitaremos repetir todos los pasos anteriores..
En este ejemplo veremos los ultimos 10 temas y la información del autor de cada tema.
Tablas: topics, messages y members
Columnas: id_topic, subject, member_name y id_member
Valor 1: Link del topic
Valor 2: Link del autor
Consultar datos:<?php
// Lo primero que hacemos es globalizar las variables $smcFunc y $scripturl.
global $smcFunc, $scripturl;
// Iniciamos la consulta
$sql = $smcFunc['db_query']('','
SELECT t.id_topic,
m.subject,
u.member_name, u.id_member
FROM {db_prefix}topics AS t
LEFT JOIN {db_prefix}members AS u ON (u.id_member = t.id_member_started)
LEFT JOIN {db_prefix}messages AS m ON (m.id_msg = t.id_first_msg)
ORDER BY t.id_topic DESC LIMIT {int:limit} ',
array(
'limit' => 10,
)
);
$datos = array();
while ($row = $smcFunc['db_fetch_assoc']($sql)) {
$datos[] = array(
'topic' => '<a href="'.$scripturl.'?topic='.$row['id_topic'].'.0" title="'.$row['subject'].'" target="_blank">'.$row['subject'].'</a>',
'autor' => '<a href="'.$scripturl.'?action=profile;u='.$row['id_member'].'" title="'.$row['member_name'].'" target="_blank">'.$row['member_name'].'</a>',
);
}
foreach($datos AS $data)
echo 'Tema: '.$data['topic'].'<br />Autor: '.$data['autor'].'<br /><br />';
?>
Ahora vamos a explicar un poco que fue lo que hicimos.
$sql = Aca estariamos dandole a la variable $sql el valor de toda la consulta.
SELECT Con esto le decimos que lea las columnas especificas de las tablas seleccionadas. (t.id_topic, m.subject, u.member_name, u.id_member)
FROM {db_prefix}topics AS t Con esto le decimos que lea la tabla topics y ahora sera t.
LEFT JOIN Con esto haremos el anidado de las tablas, en este caso con (members y messages)
members AS u Con esto le decimos que lea la tabla members y que ahora sera u.
ON (u.id_member = t.id_member_started) Con esto le decimos que solo lea los datos que coincidan en las columnas (u.id_member y t.id_member_started)
messages AS m Con esto le decimos que lea la tabla messages y que ahora sera m.
ON (m.id_msg = t.id_first_msg) Con esto le decimos que solo lea los datos que coincidan en las columnas (m.id_msg y t.id_first_msg)
ORDER BY t.id_topic DESC Con esto le decimos que ordene de forma descendente por id de topic
LIMIT {int:limit} Con esto le decimos que solo lea la cantidad de resultados de la variable limit.
'limit' => 10, Con esto establecemos la cantidad del limite, en este caso 10.
$datos = array(); Definimos la variable $datos y le decimos que sera un array.
while Recorremos todos los valores obtenidos de la consulta (While es un bucle)
$datos[] = Agregamos todos los valores a la variable $datos.
'topic' => Creamos un link con los datos del topic.
'autor' => Creamos un link con los datos del autor.
foreach($datos AS $data) Recorremos todos los valores obtenidos por el while (Foreach es un bucle)
echo Imprimimos los datos obtenidos.
En este ejemplo el resultado seria: 
Tema: Tema 1

Autor: Nombre de usuario
Notas: 
Esta es una consulta anidada simple para que vean mas o menos como seria.

Lo referente a
while foreach y echo se explicara en sus respectivos tutoriales. (Aca se utilizan solo para que vean los resultados)

Lo referente a
LEFT JOIN se explicara en su respectivo tutorial. (Aca se utilizan solo para que vean los resultados)
Como ya mensione en otros tutoriales, yo explico y enseño lo basico...
Despues dependera de cada uno el uso que le de y la imaginacion que tenga para usarlo.
Script: Desde este
Link podran descargar el script de este ejemplo.

Lo descargan.

Lo suben al root de su sitio.

Lo ejecutan: su_sitio/Consultas-Anidadas.php
Nota: El script esta todo comentado para su mejor comprension.
Nos vemos en el proximo tutorial sobre desarrollo de smf.