Lenguaje PHP

SELECT DISTINCT usando INNER JOIN

Clausula DISTINCT con INNER JOIN y MySQL

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.

SELECT DISTINCT usando INNER JOIN
SELECT DISTINCT usando INNER JOIN

¿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.

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba