2017-05-25 3 views
0

enter image description here Ich versuche, herauszufinden, wie verschiedene Datensätze aus patientcase Tabelle unten aus dem Bericht Abfrage zurück:Rück verschiedene Datensätze aus verknüpften Tabellen

select distinct rp.patientid 
    p.mdpa11cd as mma, p.mdpa12cd as mmb, 
    test.mica1cd as mmc, test.mica2cd as mmdr, 
    lastnm, firstnm, hospitalid, ssnbr, 
    rp.relationshiptypecd, 
    isnull(p.ma1eqcd, '') A1s, 
    isnull(p.ma2eqcd, '') A2s, 
    isnull(p.mb1eqcd, '') B1s, 
    isnull(p.mb2eqcd, '') B2s, 
    isnull(p.mc1eqcd, '') C1s, 
    isnull(p.mc2eqcd, '') C2s, 
    isnull(p.mdrb11eqcd, '') DR1s, 
    isnull(p.mdrb12eqcd, '') DR2s, 
    isnull(p.mdqb11eqcd, '') DQ1s, 
    isnull(p.mdqb12eqcd, '') DQ2s, 
    isnull(p.mdpb11eqcd, '') DP1s, 
    isnull(p.mdpb12eqcd, '') DP2s, 
    isnull(p.mdrb31eqcd, '') DRB31s, 
    isnull(p.mdrb32eqcd, '') DRB32s, 
    isnull(p.mdrb41eqcd, '') DRB41s, 
    isnull(p.mdrb42eqcd, '') DRB42s, 
    isnull(p.mdrb51eqcd, '') DRB51s, 
    isnull(p.mdrb52eqcd, '') DRB52s, 
    p.ma1cd, p.ma2cd, p.mb1cd, p.mb2cd, p.mc1cd, p.mc2cd, 
    p.mdrb11cd, p.mdrb12cd, p.mdqb11cd, p.mdqb12cd, p.mdpb11cd, 
    p.mdpb12cd, p.mdrb31cd, p.mdrb32cd, p.mdrb41cd, p.mdrb42cd, 
    p.mdrb51cd, p.mdrb52cd, p.lastmolecularsampledt, 
    isnull(rp.mamismatchcd, '') MMa, 
    isnull(rp.mbmismatchcd, '') MMb, 
    isnull(rp.mcmismatchcd, '') MMc, 
    isnull(rp.mdrb1mismatchcd, '') MMdr, 
    isnull(rp.mdqb1mismatchcd, '') MMdq, 
    rp.mdpb1mismatchcd MMdpb1, 
    isnull(rp.mamismatchantigencd, '') Ma, 
    isnull(rp.mbmismatchantigencd, '') Mb, 
    isnull(rp.mcmismatchantigencd, '') Mc, 
    isnull(rp.mdrb1mismatchantigencd, '') Mdr, 
    isnull(rp.mdqb1mismatchantigencd, '') Mdq, 
    rp.mdpb1mismatchantigencd Mdpb1, suppressnameind, patienttypecd, 
    isnull(p.mdqa11eqcd, '') DQA1s, 
    isnull(p.mdqa12eqcd, '') DQA2s, 
    p.mdqa11cd, p.mdqa12cd, rp.mdqa1mismatchcd MMdqa1, 
    rp.mdqa1mismatchantigencd Mdqa1, p.mbw1cd, p.mbw2cd, 
    rp.haplotype1cd, rp.haplotype2cd 
from 
    patientcase 
inner join 
    relatedpatient rp on rp.caseid = patientcase.caseid 
inner join 
    patient p on rp.relatedpatientid = P.patientid 
left join 
    sample on sample.patientid = p.patientid 
left join 
    test on test.sampleid = sample.sampleid 
where 
    patientcase.caseid = `<Patient Cases>` 
    and rp.relatedpatientid IN `(<Donor>)` 
order by 
    rp.ordernbr asc, sample.sampledt desc 

Ich habe versucht, die Änderung des nach links, aber ohne Glück beitreten . Bitte schlagen Sie vor, wie dies funktioniert. Danke

+0

Haben Sie versucht, 'DISTINCT' nach' SELECT' hinzuzufügen? – SQLChao

+0

ja, aber es hat nicht funktioniert. – user3781528

+1

Welche DBMS benutzen Sie? –

Antwort

0

Was meinst du mit "distinct records from patientcase table" hier?

Ihre Datensätze sind nicht von patientcase Tabelle, betrachten sie stammen aus einer Art anonymer, unbenannter Tabelle, die durch Ihre Joins definierten Datensätze kombiniert & Bedingungen - also was wäre "distinct" in diesem Zusammenhang?

Wenn Sie Ihr schließt sich auf verschiedene Datensätze aus patientcase tun - als es einfacher ist: select/join von/mit Unterabfrage, die die Quelltabelle auf diese Weise verengt, so etwas wie:

select 
    p.mdpa11cd as mma, p.mdpa12cd as mmb, 
    test.mica1cd as mmc, test.mica2cd as mmdr, 
    pcd.lastnm, pcd.firstnm, pcd.hospitalid, pcd.ssnbr, 
    rp.relationshiptypecd, 
    ... 
from 
    (SELECT DISTINCT lastnm, firstnm, hospitalid, ssnbr, caseid, ... FROM patientcase) pcd 
inner join 
    relatedpatient rp on rp.caseid = pcd.caseid 
... 

Wenn das ist nicht das, was du willst - bitte erläutern Sie das, da es weit davon entfernt ist, klar zu sein.

+0

Also, die select-Anweisung wird die gleiche sein, richtig? Sie fügen nur eine Abfrage nach "von" hinzu und diese Abfrage enthält alle Felder aus dem Patientenfall, richtig? sonst ist alles andere gleich? danke – user3781528

+0

Das hängt davon ab, was Sie genau bekommen wollen. Das ist mir noch nicht klar, muss ich zugeben. –

Verwandte Themen