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.onameGracias a todos por la entrada.
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 .