sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo probar en y entre cada una de varias tablas?

Bueno, Leonid tiene razón, lo que necesita es unirse a la mesa. "Se utiliza una cláusula SQL JOIN para combinar filas de dos o más tablas, en función de un campo común entre ellas". - http://www.w3schools.com/sql/sql_join.asp simple como eso. Usted dice que para la tabla A y la tabla B, ese campo común es ShopLot y para las tablas B y C, ContainerRef coincide con ContainerID.

Vamos a hacerlo paso a paso.

Entonces, primero seleccionemos columnas de las tablas que queremos mostrar

 SELECT Table_A.ID, Table_A.UnitTypeID, Table_A.ShopLot, Table_B.ID, Table_B.UnitTypeID,
         Table_B.ContainerRef, Table_C.ID, Table_C.PartTypeID

Verá que solo hay uno, ShopLot y ContainerRef, porque ese es un campo común, como dijimos antes, y no es necesario mostrar la misma fecha dos veces seguidas.

El siguiente paso sería ver DE DÓNDE SELECCIONAMOS estas columnas. En este paso, combinamos filas de estas tablas separadas y básicamente creamos una tabla con todas estas columnas de la declaración de selección. Eso se verá así

FROM Table_A
INNER JOIN Table_B
ON Table_A.ShopLot = Table_B.ShopLot
INNER JOIN Table_C
ON Table_B.ContainerRef = Table_C.ContainerId

Qué ha pasado aquí. Primero dijimos SELECCIONAR (algo) DE Table_A y (interior) unirla con Table_B ... Luego hay una pregunta sobre cómo unir estas dos tablas (¿basado en qué?)? Y la respuesta está en los campos Table_A.ShopLot y Table_B.ShopLot. Tome una fila de Table_A, vea el valor del campo ShopLot y busque todas las filas con ese valor (si lo hay) en Table_B y únalas. Table_C se une de la misma manera que solo se cambia el nombre de los campos.

Que el tercer paso es hacer la cláusula WHERE. Esta es probablemente la parte más fácil porque ahora tenemos una mesa grande y solo tenemos que decir lo que necesitamos

WHERE Table_A.UnitTypeID='PAD' AND Table_B.UnitType.ID='FROG' 
  AND Table_C.PartTypeID='FLIES'

Y eso es. Traté de hacerlo simple como pude. Apuesto a que hay muchas explicaciones sobre bañistas en línea, solo hay que hacer una pequeña búsqueda...

Aquí hay un código completo:

SELECT Table_A.ID, Table_A.UnitTypeID, Table_A.ShopLot, Table_B.ID, Table_B.UnitTypeID,
         Table_B.ContainerRef, Table_C.ID, Table_C.PartTypeID
FROM Table_A
INNER JOIN Table_B
ON Table_A.ShopLot = Table_B.ShopLot
INNER JOIN Table_C
ON Table_B.ContainerRef = Table_C.ContainerId

WHERE Table_A.UnitTypeID='PAD' AND Table_B.UnitType.ID='FROG' 
  AND Table_C.PartTypeID='FLIES'

Espero que esto ayude un poco, no es complicado como se ve al principio. Sería mejor si el ejemplo fuera con dos mesas, pero es lo que es. GL