Pregunta

¿Cómo haría referencia a las columnas table1 a 2 columnas en la tabla 2

Creé una tabla ' Estado ' con 50 filas exactas

tratando de relacionarse (weddingState, contactState) en la tabla ' Wedding '

Esta es la declaración que creé, pero solo se une correctamente al WeddingState superior; parece que no le importa el INNER Únete debajo ...

SELECCIONAR *

DE bodas

INNER JOIN declara como s1 EN bodas. WeddingState = s1.StateId // estado del matrimonio

INNER JOIN declara como s2 EN bodas.ContactState = s2.StateId // estado de contacto de la novia

DONDE bodas.weddingid = " 094829292 "

¿Fue útil?

Solución

Supongo que está recuperando estos en PHP o algo así, y está recuperando las filas en una matriz hash, clave por el nombre del campo. Por supuesto, solo puede haber un elemento en un hash con una clave determinada. Por lo tanto, debe usar alias de columna para asegurarse de que las columnas con el mismo nombre tengan un alias distinto.

SELECT w.*, s1.StateID AS wstate, s2.StateId AS cstate
FROM weddings AS w
INNER JOIN states AS s1 ON w.WeddingState = s1.StateId //state of marriage
INNER JOIN states AS s2 ON w.ContactState = s2.StateId //contact state of bride
WHERE w.weddingid="094829292";

Ahora su hash-array tendrá claves '' wstate '' y "estado". Sin alias de estas columnas, una siempre sobrescribirá a la otra.

Otros consejos

¿Y qué está obteniendo por su resultado que lo lleve a su conclusión?

Va ??a ser confuso para los principiantes porque los nombres de campo en las dos uniones, más algunos de los nombres de campo en la tabla primaria, son idénticos. Es una muy buena idea elegir explícitamente sus columnas de salida y darles alias significativos.

¿Qué tal:

SELECCIONE s1.StateName, s2.StateName

DE bodas

INNER JOIN indica como s1 EN bodas.WeddingState = s1.StateId // estado del matrimonio

INNER JOIN declara como s2 EN bodas.ContactState = s2.StateId // estado de contacto de la novia

DONDE bodas.weddingid = " 094829292 "

Gracias Bill, también agregué StateName

SELECCIONAR w. *,

s1.StateId AS WeddingStateId,

s1.StateName AS WeddingStateName,

s2.StateId AS ContactStateId,

s2.StateName AS ContactStateName

DE bodas como w

INNER JOIN dice AS s1 ON w.WeddingState = s1.StateId

INNER JOIN dice AS s2 ON w.ContactState = s2.StateId

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top