Se puede automatizar el estado “encendido” comunicado de consultas MySQL?
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 ??h2>
¿Hay una manera de lograr que MySQL siempre ha de asumir que las tablas se unirán con on thistables.thattable_id = thattable.id
?
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 !!!