SQL - Inner join sin repetir filas

 
Vista:

Inner join sin repetir filas

Publicado por alberto (3 intervenciones) el 05/01/2021 03:24:27
hola amigos! espero me puedan orientar un poco

Tengo dos tablas

solicitud
idSolicitud
descripcionSolicitud
status

archivos_solicitud
idArchivo
idSolicitud
urlArchivo

Una solicitud puede tener uno o mas archivos, y un archivo solo puede ser de una solicitud

tengo mi inner join así

1
select * from solicitud inner join archivos_solictud on solicitud.idSolicitud=archivos_solicitud.idSolicitud where solicitud.status = 1

Como una solicitud puede tener varios archivos, entonces me repite la fila dependiendo de cuantos archivos tiene.

Necesito que no me repita la fila sin importar cuantos archivos tenga, pero a su ves necesito acceder a todos los archivos de la solicitud.

Intente con un
1
group by solicitud.idSolicitud
pero unicamente me muestra un solo archivo por registro.

he intentado hacer muchas otras cosas (unas de ellas muy raras) pero no he logrado exito, Gracias por tu ayuda!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Inner join sin repetir filas

Publicado por Isaias (1921 intervenciones) el 05/01/2021 19:01:20
NUNCA, pero de los NUNCAS vas a lograr lo que quieres, estas haciendo un INNER JOIN de 1 a muchos, es obvio que te repita el numero de solicitud por cada archivo que tenga, SQL no es mágico.

Maneja la ley de conjuntos, saca primero el numero de solicitud y despues haces un UNION con el numero de archivos que tiene, digo, si no quieres repetir el NUMERO DE SOLICITUD.

¿Que motor de base de datos manejas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Inner join sin repetir filas

Publicado por alberto (3 intervenciones) el 05/01/2021 22:06:40
Hola Isaias, gracias por responder

Estoy un poco perdido en bases de datos, te refieres a hacer consultas anidadas?

uso InnoDB
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Inner join sin repetir filas

Publicado por Isaias (1921 intervenciones) el 06/01/2021 00:53:01
Hablo del MANEJO DE CONJUNTOS que nos dieron en la secundaria, mira, tienes un ID, y por ese id, hay una o mas IMAGENES, si haces un JOIN entre ambas, obtendrás TANTOS registros como IMAGENES existan, ¿de acuerdo?, no puede decir que solo te de un ID, si estas "juntando" el resultado de ambos conjuntos, ahora bien si quieres obtener algo como

ID
IMAGEN
IMAGEN
IMAGEN
IMAGEN
ETC.

Entonces, son DOS CONJUNTOS, el cabecero y sus detalles, por eso mi sugerencia, de hacer un query para el cabecero (1) y un query para los detalles (n) y luego unirlos con UNION, simple.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Inner join sin repetir filas

Publicado por Alberto (3 intervenciones) el 07/01/2021 05:08:02
hola gracias Isaias y Jorge por la ayuda mostrada,

Bueno después de investigar y con la ayuda que me brindaron, intente algo como esto

1
2
3
4
5
6
SELECT solicitud.idSolicitud AS diseno, GROUP_CONCAT(DISTINCT(archivos_solicitud.urlArchivo)) AS archivo
	FROM solicitud
	LEFT JOIN archivos_solicitud
	ON solicitud.idSolicitud = archivos_solicitud.idSolicitud
	GROUP BY solicitud.idSolicitud
	ORDER BY solicitud.idSolicitud ASC

me funcionó; no sé si sea lo ideal o lo mas recomendable pero esto ya lo convierto a json y puedo manipularlo en js (es lo que queria).

Intenté como me comentaban con union pero no he logrado o no entiendo como se pueda hacer de esa forma

estaba intentando algo como

1
SELECT solicitud.id_diseno FROM solicitud UNION SELECT archivos_solicitud.archivo FROM solicitud LEFT JOIN archivos_solicitud ON solicitud.id_diseno=archivos_solicitud.id_diseno

pero obtengo esto

+------------------------------+
| id_diseno |
+------------------------------+
| 1 |
| 2 |
| 3 |
| http://www.uno1.com |
| http://www.uno2.com |
| http://www.dos.com |
| http://www.tres1.com |
| http://www.tres2.com |
+-----------------------------+

Gracias por su ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar