Ver Mensaje Individual
  #6 (permalink)  
Antiguo 20/06/2014, 16:31
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 10 meses
Puntos: 2658
Respuesta: 1 consulta, 4 partes

Bueno, yo te tiro la idea de cómo la haría. Entender la lógica de la query te la dejo como tarea para la casa.
Código MySQL:
Ver original
  1. SELECT T1.lastlogin, T1.username, T1.coins, IFNULL(T2.topics, 0) topics, IFNULL(T2.responses, 0) responses
  2.     (SELECT A.lastlogin, A.username, IFNULL(PP.points, 0) coins
  3.     FROM authme A
  4.         LEFT JOIN playerpoints PP ON A.username= PP.playername
  5.     WHERE TRUE OR PP.playername IS NULL) T1
  6.     LEFT JOIN
  7.     (SELECT F.author_name, SUM(IF(F.identificador = 0, 1, 0)) topics, SUM(IF(F.identificador != 0, 1, 0)) responses
  8.     FROM foro F
  9.     GROUP BY F.author_name) T2 ON T1.username = T2.author_name
  10. WHERE TRUE OR T2.author_name IS NULL;

En cuanto al uso de LEFT JOIN, es algo que se puede ver en el manual de referencia (13.2.7.1. Sintaxis de JOIN, y 7.2.9. Cómo optimiza MySQL los LEFT JOIN y RIGHT JOIN), o bien en cualquier tutorial de MySQL, incluyendo algo que ya está en uno de los temas de ayuda de este mismo foro: Common MySQL Queries
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)