tarda tablas query optimizar mucho lento left inner grandes entre ejemplos diferencia consulta mysql sql join many-to-many

mysql - tablas - SQL JOIN muchos a muchos



optimizar inner join sql server (1)

Es posible con este pequeño truco (OUTER JOIN en la tabla de muchos a muchos, con la restricción de que GroupID tiene que ser 3 (para Drama)

http://sqlfiddle.com/#!2/b7c18/2

SELECT elements.ID, elements.Element, groups.Genre FROM elements LEFT OUTER JOIN group_elements ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3 LEFT OUTER JOIN groups ON group_elements.GroupID = groups.ID

LEFT OUTER JOIN significa: tome todas las líneas de las tablas anteriores (las que están en el lado IZQUIERDA de la LEFT OUTER JOIN , si así lo desea), incluso si no hay líneas correspondientes en las siguientes tablas. La condición ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3 dice que si encontramos algo que coincida con nuestro ElementID, también debe ser un drama (GroupID = 3). Luego hacemos otra IZQUIERDA EXTERIOR IZQUIERDA en la tabla de grupos, que nos permite mostrar la columna Género, o NULL si el elemento no fue un drama.

Lo siento por el título minimalista, pero no sé cómo describirlo en breve. Tengo tres mesas:

La tabla de grupos

ID | Genre ----------------- 1 | Action 2 | Adventure 3 | Drama

Muchos a muchos mesa

GroupID | ElementID ----------------- 3 | 1 1 | 2 2 | 2 2 | 3 3 | 3

Y la tabla de elementos.

ID | Element ----------------- 1 | Pride and Prejudice 2 | Alice in Wonderland 3 | Curious Incident Of A Dog In The Night Time

Todo está bien y muy simple. El SELECTO que estoy tratando de lograr es el siguiente

ID | Element | Genre ------------------------------------------------------------- 1 | Pride and Prejudice | Drama 2 | Alice in Wonderland | NULL 3 | Curious Incident Of A Dog In The Night Time | Drama

Quiero seleccionar todos los elementos de la tabla Elementos y configurar el campo de género en Drama o nulo .

Estoy tratando de hacer esto en MySQL .

Gracias de antemano