SELECT DISTINCT usando INNER JOIN. En este articulo abordaremos la unión de dos tablas y obtener resultados de esa intersección usando INNER JOIN. Además, usar la cláusula DISTINCT para filtrar los resultados.
Para obtener resultados deseados debemos de realizar una consulta SQL respetando los parámetros correctos.
¿Como realizar la consulta SQL?
Para este ejemplo tenemos que tener dos tablas en nuestra base de datos y poder relacionar esas dos tablas con alguna columna en específico.
SELECT DISTINCT usando INNER JOIN
Vamos a crear 2 tablas e identificar los campos de unión y/o relación, veamos un ejemplo a continuación.
a) Tabla A
Esta tabla podemos agregar al ID y demás campos de usuario, hora y fecha.
table_A TA_id | TA_user | TA_hour | TA_date
b) Tabla B
También posee una ID y campos de nombre y dirección
table_B TB_id | TB_name | TB_adress
Una vez que tengamos bien definido las tablas y las columnas que se relacionaran podemos usar INNER JOIN para unir las tablas.
¿Cuál es el objetivo de la consulta SQL?
En este ejemplo lograremos devolver las entidades de la tabla B
que tienen registros en la tabla A
para una fecha determinada en la cláusula WHERE.
La cláusula DISTINCT se usa para mostrar registros distintos dentro de la consulta, probablemente una forma más precisa seria usar «GROUP BY» en su lugar porque generalmente es más rápido. Veamos la consulta SQL.
SELECT DISTINCT table_B.TB_name FROM table_A INNER JOIN table_B ON table_B.TB_id = table_A.TA_user WHERE TA_date LIKE '%$vardate%' ORDER BY TA_user ASC;
Explicación de la consulta SQL
Hemos usado la cláusula LIKE sirve para buscar registros en una base de datos. Sin embargo, para un resultado más preciso se podría usar la siguiente instrucción SQL.
WHERE TA_date = date('$vardate')
Con esta consulta SQL podemos obtener resultados más precisos cuando de fechas se trata, en el caso que sea textos a buscar ahí si se recomienda usar LIKE.
SELECT DISTINCT TA_user FROM table_A INNER JOIN table_B ON table_B.id = table_A.TA_user WHERE TA_date = date('$vardate') ORDER BY TA_user ASC;
Recordemos que para la variable de filtro podemos usar $vardate
tenga el formato «YYYY-MM-DD
» para garantizar una conversión adecuada. Mejor aún, conviértalo en un parámetro en lugar de una constante incrustada.
CONCLUSIÓN
En este articulo hemos realizado un ejemplo usando la cláusula INNER JOIN y DISTINCT para filtrar la información de la base de datos.
La información devuelta de la base de datos podemos plasmarlo en un bucle por ejemplo FOREACH para observar una tabla con registros.
Para dinamizar los valores de filtro podemos apoyarnos de un formulario haciendo uso del método POST o el método GET y haciendo uso de una variable ingresar el valor a la consulta SQL.