Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

455
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!