php - una - unir 3 tablas sql oracle
Dificultad con unir 3 tablas en una consulta en php (2)
Mi base de datos tiene 3 tablas a las que deseo acceder en la consulta de selección pero parece que no puedo hacer que funcione. Seleccionar desde 2 tablas funciona bien, así que sé que todo lo demás funciona aparte de mi código para seleccionar de 3 tablas. Mi base de datos ha sido creada en PHPmyadmin
Las tablas son las siguientes:
forum_replies
- reply_id
- topic_id
- identidad de usuario
- reply_text
- fecha de respuesta
forum_topics
- topic_id
- categoria ID
- identidad de usuario
- Título del tema
- Tema Descripción
- topic_date
usuarios
- identidad de usuario
- usuario
Este es el código que he tratado de usar y muestra los campos que deseo seleccionar:
$queryreply = "SELECT forum_replies.reply_id, forum_replies.topic_id, forum_replies.user_id,
forum_replies.reply_text, forum_replies.reply_date, users.user_id, users.username
forum_topics.topic_id,forum_topics.topic_title, forum_topics.topic_date
FROM forum_replies
JOIN forum_topics
ON forum_replies.topic_id = forum_topics.topic_id
JOIN users
ON forum_replies.user_id = users.user_id
";
$result = mysql_query($queryreply) or die (mysql_error());
$row = mysql_fetch_array($result);
El ejemplo en el código sería apreciado. Gracias
Extrañas el ,
después de users.username
..
SELECT forum_replies.reply_id, forum_replies.topic_id, forum_replies.user_id,
forum_replies.reply_text, forum_replies.reply_date, users.user_id, users.username,
forum_topics.topic_id,forum_topics.topic_title, forum_topics.topic_date
Use esta consulta:
SELECT a.reply_text, a.reply_date, b.topic_title, c.username
FROM forum_replies a
LEFT JOIN forum_topics b ON a.topic_id=b.topic_id
LEFT JOIN users c ON a.user_id=c.user_id
// apply WHERE, ORDER, GROUP if needed
Además de los errores de sintaxis, debe usar LEFT JOIN
y alias de tabla en su caso.
Para mostrar también el nombre de usuario del creador del tema, puede ajustar la consulta a lo siguiente:
SELECT a.reply_text, a.reply_date, b.topic_title, c.username AS reply_user, (SELECT username FROM users WHERE user_id=b.user_id) AS topic_creator
FROM forum_replies a
LEFT JOIN forum_topics b ON a.topic_id=b.topic_id
LEFT JOIN users c ON a.user_id=c.user_id
// apply WHERE, ORDER, GROUP if needed