Pregunta

Fondo

En el proceso de QA / QC, estoy escribiendo un montón de consultas con varias combinaciones. Estoy utilizando MySQL.

Me gustaría saber cómo (si) puedo simplificar unirse a las declaraciones, por ejemplo, mediante el establecimiento de campos predeterminados para unirse sucesivamente.

Mis tablas se nombran con una forma plural del objeto que contienen:

 names
 types
 actions
 surnames
 names_surnames

donde names_surnames es un mucho-mucho tabla de búsqueda

las claves primarias son siempre id y las claves externas son siempre, por ejemplo.

 names.type_id
 names.action_id
 names_surnames.name_id
 names_surnames.surname_id

Mi une sería algo así como

select names.col1 
from names join types on names.type_id = type.id
           join actions on names.action_id = actions.id;

Pregunta

¿Hay una manera de lograr que MySQL siempre ha de asumir que las tablas se unirán con on thistables.thattable_id = thattable.id?

¿Fue útil?

Solución

¿Qué hay de crear vistas para combinaciones que están utilizado en varias ocasiones?

Por ejemplo:

create view my_view as 
select names.id as name_id, names.type_id, names.action_id, ...
from names join types on names.type_id = type.id
           join actions on names.action_id = actions.id;

Otros consejos

Si las columnas fueron nombrados en la misma "ambos" tablas, creo que se podría utilizar NATURAL JOIN. A pesar de que no va a funcionar para usted, su coherencia en la nomenclatura todavía le debe permitir generar consultas - o al menos la unión cláusulas - con un lenguaje de script

.

Si las tablas implicadas en la unión compartir campos con nombres idénticos, España a continuación, puede utilizar la cláusula USING de la sintaxis de unión .

Por ejemplo

Si la tabla de acciones había action_id como la clave principal en lugar de Identificación del
y la tabla de tipos había TYPE_ID como la clave principal en lugar de id

A continuación, el consulta podría ser reescrita como

select names.col1 
from names join types USING (type_id)
           join actions USING (action_id);

darle una oportunidad !!!

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