[ Foro de SQL (y MySQL) ]

ayuda para consulta con mysql - acceder a tres tablas

05-Jun-2015 17:17
Invitado (YVAN)
1 Respuestas

Saludos amigos me podrian ayudar a hacer una consulta a la base de datos, tengo 3 tablas: publicaciones, messagesmaracay y messagesturmero la cual contiene registros de diferentes usuarios. la idea es que me muestre todos los registros de cada tabla que sea del usuario. las 3 tablas tienen los mismo campos: ( id, userid, message, date_message, muro, megusta). tengo esta consulta pero es para una sola tabla y necesito que sean de las 3 tablas:

 
SELECT m.id, m.userid, m.message, m.date_message, m.muro, m.megusta, u.username
FROM `messagesmaracay` m
INNER JOIN users u ON m.userid = u.id
ORDER BY id DESC
 


espero me pueda ayudar, muchas gracias Emoticono smile


11-Jun-2015 10:25
Nacho Cabanes (+31)

Si son tres tablas distintas:
- En el FROM debes indicar las 3 tablas.
- En el INNER JOIN o el WHERE debes enlazar los campos equivalentes de las tres tablas.
Podría ser algo como

 
SELECT campo1, campo2
FROM tabla1, tabla2, tabla3
WHERE tabla1.id = tabla2.campoClaveAjena1 AND tabla1.id = tabla3.campoClaveAjena2
ORDER BY id DESC
 



Si las tres tablas "publicaciones, messagesmaracay y messagesturmero" contienen información similar (lo que suena a un fallo de diseño), puedes obtener datos de todas ellas usando un UNION:

 
SELECT * FROM 
(
INNER JOIN users u ON m.userid = u.id
SELECT m.id, m.userid, m.message, m.date_message, m.muro, m.megusta, u.username
FROM `messagesmaracay` m
INNER JOIN users u ON m.userid = u.id
) 
UNION
(
SELECT m.id, m.userid, m.message, m.date_message, m.muro, m.megusta, u.username
FROM `messagesturmero` m
INNER JOIN users u ON m.userid = u.id
) 
UNION
(
SELECT m.id, m.userid, m.message, m.date_message, m.muro, m.megusta, u.username
FROM `publicaciones` m
INNER JOIN users u ON m.userid = u.id
) 
ORDER BY id DESC
 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)