Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/12/2013, 03:59
Avatar de guardarmicorreo
guardarmicorreo
 
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
¿Cómo extraer de la BD dos veces en la misma consulta?

Estoy trabajando sobre un panel de administrador. Dicho panel incluye un control sobre usuarios.

El control sobre usuarios incluye las siguientes opciones:

-Activación/desactivación del usuario.
-Acceso al historial de actividad del usuario.

En esta última opción, tengo que extraer los datos de 4 tablas, estas tablas son:

*users(id_user|id_twitter|name|screen_name|image|p oints)

*answers (id_answer|answer|id_questions->question.id_question|id_users->users.id_user|id_friend->users.id_twitter|datetime|statement).

*questions (id_question|question|id_typequestions->typequestions.id_typequestion).

*typequestions(id_typequestion|typequestion).

De manera que en la tabla answers id_users es el id_user del usuario que realiza una pregunta sobre un amigo y el id_friend es el usuario sobre el que se realiza la pregunta.

Con la siguiente consulta obtengo casi todos los datos que necesito, excepto el nombre del usuario sobre el que se realiza la pregunta, solo obtengo el nombre del que realiza la pregunta:

Código SQL:
Ver original
  1. /*en el where, 14 sería un entero pasado por PHP*/
  2.  
  3. SELECT * FROM answers A
  4.                         INNER JOIN questions Q
  5.                             ON A.id_questions=Q.id_question
  6.                         JOIN typequestions TQ
  7.                             ON Q.id_typequestions=TQ.id_typequestion
  8.                         INNER JOIN users U
  9.                             ON A.id_users=U.id_user
  10.                         WHERE A.id_users=14 OR A.id_friend=ANY(SELECT id_twitter FROM users WHERE id_user=14);

He pensado en cómo podría hacer esto con subconsultas, pero no veo que eso sea posible.

¿Alguien me da ideas de cómo podría hacerlo? no es necesario aportar código, solo ideas :D
__________________
Ayúdame a hacerlo por mi mismo.