
22/03/2007, 15:22
|
| | Fecha de Ingreso: enero-2004
Mensajes: 63
Antigüedad: 21 años, 2 meses Puntos: 0 | |
JOINs, WHEREs y convencionalismos Hola,
Mi primera duda es entorno a los JOINs y el WHERE. Tengo varias consultas multitabla en un programilla. Consultas de dos, tres, cuatro, etc. tablas. Yéndome a lo más simple (dos tablas) tendría una tabla con datos "comunes" sobre algo y otra con datos por idioma sobre ese algo. Os pondré un ejemplo inventado para que me entendáis: Tabla productos
id_producto
precio Tabla descripcion_productos
id_producto
id_idioma
nombre
Digamos que tenemos dos idiomas. Entonces por cada registro de la tabla productos tendremos dos en la tabla descripcion_productos. Sé que lo mejor es usar un INNER JOIN con su cláusula USING u ON para relacionar el campo "id_producto" en lugar de relacionarlas en el WHERE. Pero tengo una duda más: ¿Cómo sería mejor?:
1. SELECT {loquesea} FROM productos AS a INNER JOIN descripcion_productos AS b USING(id_producto) WHERE b.id_idioma = {IdDeIdioma} && {RestoDeCondiciones}
2. SELECT {loquesea} FROM productos AS a INNER JOIN descripcion_productos AS b ON(b.id_producto = a.id_producto && b.id_idioma = {IdDeIdioma}) WHERE {RestoDeCondiciones}
Es decir, ¿sería mejor meter lo del idioma en el WHERE o en el JOIN? Tanto desde el punto de vista del rendimiento (más que nada) como de los convencionalismos. Hay que tener en cuenta que la tabla descripcion_productos va unida a la de productos y solo nos interesa obtener la fila correspondiente al ID de producto e idioma consultados pero todas las demás restricciones y condiciones (WHERE) se haría sobre la tabla productos.
Mis otras dudas son sobre convencionalismos (es decir, intentar buscar el "estandar") nada más. ¿Qué es más común o "mejor visto" desde ese punto de vista? ¿Usar los símbolos && y || o utilizar las palabras AND y OR?
Y... Sobre los nombres de las tablas y campos... ¿Sería del tipo NombreTabla y NombreCampo o nombre_tabla y nombre_campo? Me imagino que lo segundo pero quiero confirmarlo.
Gracias de antemano y perdón por el ladrillo. |