Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

457
Vistas
Postgres, ¿cómo puedo seleccionar solo una fila de una relación de uno a muchos entre claves?

tengo la siguiente consulta

 SELECT dfile.id FROM dcmstudy_t dstud INNER JOIN dcmseries_t dser ON dstud.id = dser.dcmstudy_id INNER JOIN dcmfile_t dfile ON dser.id = dfile.dcmseries_id INNER JOIN finst_t fi ON dfile.id = fi.file_id INNER JOIN store s ON s.id = fi.store_id WHERE dser.id in (69823713)

cuando se proporciona el número de ID en la cláusula WHERE , esta consulta devolverá ~300 filas de dfile.id . El problema que tengo es que solo necesito un dfile.id para cada dser.id en la cláusula WHERE. Sé que si solo estuviera proporcionando un dser.id , entonces podría limitarme a 1, pero necesito proporcionar muchos dser.id en la cláusula WHERE y hacer que cada uno produzca solo un dfile.id . Al final, quiero poder producir una tabla que contenga muchos dser.id diferentes, cada uno correspondiente a un dfile.id . Probablemente sea bueno mencionar que la relación entre dser.id y dfile.id es de uno a muchos, muchos dfile.id a un solo dser.id ¿Alguna sugerencia?

ACTUALIZAR

Después de revisar todas sus sugerencias, se me ocurrió la siguiente consulta que resolvió mi problema.

 SELECT dser.id,s.oname,Min(dfile.id) as FileID FROM dcmstudy_t dstud INNER JOIN dcmseries_t dser ON dstud.id = dser.dcmstudy_id INNER JOIN dcmfile_t dfile ON dser.id = dfile.dcmseries_id INNER JOIN finst_t fi ON dfile.id = fi.file_id INNER JOIN store s ON s.id = fi.store_id WHERE dser.id in (69823713,69644830,63763440) group by dser.id,s.oname

Gracias a todos por la entrada.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Teniendo en cuenta que la consulta mencionada en la pregunta es correcta, puede usar una cláusula distinct on de PostgreSQL como se menciona a continuación:

Prueba esto :

 SELECT distinct on (dser.id) dfile.id FROM dcmstudy_t dstud INNER JOIN dcmseries_t dser ON dstud.id = dser.dcmstudy_id INNER JOIN dcmfile_t dfile ON dser.id = dfile.dcmseries_id INNER JOIN finst_t fi ON dfile.id = fi.file_id INNER JOIN store s ON s.id = fi.store_id WHERE dser.id in (69823713) order by dser.id, dfile.id

la consulta anterior devolverá el primer dfile.id .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda