¿Cómo te unes en la misma mesa, dos veces, en mysql?

Tengo 2 tablas. Uno (dominios) tiene identificadores de dominio y nombres de dominio (dom_id, dom_url).

el otro contiene datos reales, 2 de los cuales requieren un nombre de dominio TO y FROM. Así que tengo 2 columnas rev_dom_from y rev_dom_for, que almacenan el ID del nombre de dominio, de la tabla de dominios.

Sencillo.

Ahora necesito mostrar realmente ambos nombres de dominio en la página web. Sé cómo mostrar uno u otro, a través de los dominios LEFT JOIN ON ON reviews.rev_dom_for = domains.dom_url query, y luego resuenas el dom_url, que hace eco del nombre de dominio en la columna rev_dom_for.

Pero, ¿cómo podría hacer que salga el segundo nombre de dominio, en la columna dom_rev_from?

usarías otra unión, algo en esta línea:

SELECT toD.dom_url AS ToURL, fromD.dom_url AS FromUrl, rvw.* FROM reviews AS rvw LEFT JOIN domain AS toD ON toD.Dom_ID = rvw.rev_dom_for LEFT JOIN domain AS fromD ON fromD.Dom_ID = rvw.rev_dom_from 

EDITAR :

Todo lo que estás haciendo es unirte a la mesa varias veces. Mire la consulta en la publicación: selecciona los valores de las tablas de Revisiones (con alias como rvw), esa tabla le proporciona 2 referencias a la tabla de Dominio (un FOR y un FROM).

En este punto, es una cuestión simple para unir la tabla de dominio a la tabla de comentarios. Una vez (alias como toD) para el FOR, y una segunda vez (alias como fromD) para el FROM.

Luego, en la lista SELECCIONAR, seleccionará los campos DOM_URL de ambas UNIONES IZQUIERDAS de la tabla DOMINIO, haciendo referencia a ellas por el alias de cada tabla unida en referencia a la tabla de Dominios, y las alias como ToURL y FromUrl.

Para obtener más información sobre aliasing en SQL, lea aquí .

Dadas las siguientes tablas …

 Domain Table dom_id | dom_url Review Table rev_id | rev_dom_from | rev_dom_for 

Prueba este sql … (Es más o menos lo mismo que Stephen Wrighton escribió arriba) El truco es que básicamente estás seleccionando dos veces en la tabla de dominio en la misma consulta y uniendo los resultados.

 Select d1.dom_url, d2.dom_id from review r, domain d1, domain d2 where d1.dom_id = r.rev_dom_from and d2.dom_id = r.rev_dom_for 

Si todavía estás atascado, sé más específico con exactamente lo que no entiendes.

Lee esto y prueba, esto te ayudará a:

Tabla 1

 column11,column12,column13,column14 

Tabla 2

 column21,column22,column23,column24 SELECT table1.column11,table1.column12,table2asnew1.column21,table2asnew2.column21 FROM table1 INNER JOIN table2 AS table2asnew1 ON table1.column11=table2asnew1.column21 INNER TABLE table2 as table2asnew2 ON table1.column12=table2asnew2.column22 

table2asnew1 es una instancia de la tabla 2 que se corresponde con table1.column11=table2asnew1.column21

y

table2asnew2 es otra instancia de la tabla 2 que se corresponde con table1.column12=table2asnew2.column22