2011-07-20 8 views
7

Tengo un "usuario" mesa con un par de filas que son al mismo tiempo las claves externas de la misma mesa "contenido" un poco como esto:mejor manera de unir varias claves externas a una misma mesa

user.id 
user.bio 
user.signature 

content.id 
content.text 

Sé que esto no es la forma correcta de hacerlo desde un punto de vista de normalización, pero la tabla de "contenido" proviene de un DB separado que no puedo modificar. Y no quiero duplicar los datos.

Tengo un problema para encontrar una buena manera de unirme a ellos. Todo lo que he podido hacer es esto, pero esto parece un desperdicio.

SELECT bio.bio, text.text 
FROM(
SELECT content.text as bio 
FROM content, user 
WHERE user.bio = content.id 
AND user.id = 4) AS bio, 

SELECT content.text as content 
FROM content, user 
WHERE user.signature = content.id 
AND user.id = 4) AS content 

Respuesta

10

Usted puede unirse a una mesa varias veces si se le da cada instancia de un alias diferente:

SELECT bio.text, sig.text 
FROM user u 
JOIN content bio ON u.bio  = bio.id 
JOIN content sig ON u.signature = sig.id 
WHERE u.id = 4 
+0

Oh! Bonito. ¡Gracias! –

Cuestiones relacionadas