Передача различных значений столбца в предложение where - PullRequest
0 голосов
/ 29 февраля 2020
    SELECT pims.icicimedicalexaminerreport.id, 
       pims.icicimerfemaleapplicant.adversemenstrualid, 
       pims.icicimerfemaleapplicant.pregnantid, 
       pims.icicimerfemaleapplicant.miscarriageabortionid, 
       pims.icicimerfemaleapplicant.breastdiseaseid, 
       pims.pimscase.tiannumber 
FROM   pims.pimscase 
       INNER JOIN pims.digitization 
               ON pims.pimscase.digitizationid = pims.digitization.id 
       INNER JOIN pims.medicalexaminerreport 
               ON pims.digitization.medicalexaminerreportid = 
                  pims.medicalexaminerreport.id 
       INNER JOIN pims.icicimedicalexaminerreport 
               ON pims.medicalexaminerreport.id = 
                  pims.icicimedicalexaminerreport.id 
       INNER JOIN pims.icicimerfemaleapplicant 
               ON pims.icicimedicalexaminerreport.id = 
                  pims.icicimerfemaleapplicant.id 
WHERE  pims.pimscase.tiannumber = 'ICICI1234567890' 

, что дает мне следующий вывод

Query Output

Теперь я хочу использовать вышеуказанные выходные значения для выбора строк из таблицы " YesNoAnswerWithObservation "

Я полагаю, что это должно выглядеть примерно так Select * from YesNoAnswerWithObservation Where Id in (22,27,26,...23)

Только вместо того, чтобы вводить значения в предложении IN Я хочу использовать значения в каждом столбце, в результате из вышеупомянутого запроса.

Я попробовал приведенный ниже код, но он возвращает все строки в таблице, а не строки, упомянутые внутри In

SELECT pims.yesnoanswerwithobservation.observation, 
       graphitegtccore.yesnoquestion.description, 
       pims.yesnoanswerwithobservation.id ObservationId 
FROM   pims.yesnoanswerwithobservation 
       INNER JOIN graphitegtccore.yesnoquestion 
               ON pims.yesnoanswerwithobservation.yesnoanswerid = 
                  graphitegtccore.yesnoquestion.id 
WHERE  EXISTS (SELECT pims.icicimedicalexaminerreport.id, 
                      pims.icicimerfemaleapplicant.adversemenstrualid, 
                      pims.icicimerfemaleapplicant.pregnantid, 
                      pims.icicimerfemaleapplicant.pelvicorgandiseaseid, 
                      pims.icicimerfemaleapplicant.miscarriageabortionid, 
                      pims.icicimerfemaleapplicant.gynocologicalscanid, 
                      pims.icicimerfemaleapplicant.breastdiseaseid, 
                      pims.pimscase.tiannumber 
               FROM   pims.pimscase 
                      INNER JOIN pims.digitization 
                              ON pims.pimscase.digitizationid = 
                                 pims.digitization.id 
                      INNER JOIN pims.medicalexaminerreport 
                              ON pims.digitization.medicalexaminerreportid = 
                                 pims.medicalexaminerreport.id 
                      INNER JOIN pims.icicimedicalexaminerreport 
                              ON pims.medicalexaminerreport.id = 
                                 pims.icicimedicalexaminerreport.id 
                      INNER JOIN pims.icicimerfemaleapplicant 
                              ON pims.icicimedicalexaminerreport.id = 
                                 pims.icicimerfemaleapplicant.id 
               WHERE  pims.pimscase.tiannumber = 'ICICI1234567890') 

enter image description here

Любая помощь или толчок в правильном направлении будет принята с благодарностью

1 Ответ

0 голосов
/ 29 февраля 2020

Предположительно, вы хотите id s из первого запроса:

SELECT awo.observation, ynq.description, ynq.id as ObservationId 
FROM pims.yesnoanswerwithobservation awo JOIN
     graphitegtccore.yesnoquestion ynq
      ON awo.yesnoanswerid = ynq.id 
WHERE ynq.id = (SELECT mer.id 
                FROM pims.pimscase c JOIN
                     pims.digitization d
                     ON c.digitizationid = d.id JOIN
                     pims.medicalexaminerreport mer
                     ON d.medicalexaminerreportid = mer.id JOIN
                     pims.icicimedicalexaminerreport imer
                     ON mer.id = imer.id JOIN
                     pims.icicimerfemaleapplicant ifa
                     ON imer.id = ifa.id 
                WHERE c.tiannumber = 'ICICI1234567890'
              ) ;

Обратите внимание, что псевдонимы таблиц значительно упрощают написание и чтение запроса.

...