2017-01-25 4 views
1

Ich habe ein Design-Problem in MySQL. Ich möchte eine Ansicht verwenden, um die Datensätze aus mehreren Tabellen zu erhalten. Das Problem besteht darin, dass einige Tabellen mehrere Datenzeilen vom selben Patienten haben können, während andere Zeilen nur eine haben. Um dies hier zu veranschaulichen, sind zwei Tabellen: bed_billing und MySQL distinct Join mit mehreren Zeilen null

bed billing

lab billing

Beachten Sie die patient_id Feld lab_billing. zwei Datensätze für einen Patienten, wie es normal ist. Jetzt, wenn es zum Beitritt kommt, werden alle diese Felder duplizieren. das ist das Problem. Ich habe versucht, nach ihnen zu gruppieren, aber ohne Erfolg. dies ist die Abfrage für meine Ansicht Syntax:

create view billed AS 
select 
    bed.bed_bill_id, 
    csr.csr_bill_id, 
    lab.lab_bill_id, 
    pharm.pharm_bill_id, 
    rad.rad_bill_id, 
    phys.attending_id, 
    bed.price AS bed_price, 
    csr.price AS csr_price, 
    lab.price as lab_price, 
    pharm.price as pharm_price, 
    rad.price as rad_price, 
    pat.patient_id AS Pid 
from 
patient pat 
    left outer join bed_billing bed 
     on bed.patient_id = pat.patient_id 
    left outer join csr_billing csr 
     on csr.patient_id = pat.patient_id 
    left outer join lab_billing lab 
     on lab.patient_id = pat.patient_id 
    left outer join pharm_billing pharm 
     on pharm.patient_id = pat.patient_id 
    join rad_billing rad 
     on rad.patient_id = pat.patient_id 
    left outer join attending_physician phys 
     on phys.patient_id = pat.patient_id 

where 
    bed.patient_id = pat.patient_id 

OUTPUT: output

sie haben Vervielfältigungen alle über die Zeilen. sollte ich nur eine transaktionstabelle erstellen, damit alle daten darin gespeichert werden oder mit der ansicht durchgedrückt werden? Meine Hauptannahme ist, dass MySQL die Zeilen füllt, um sie mit den mehreren Datensatzzeilen zu füllen.

die gewünschte Ausgabe sollte sein, dass alle IDs eindeutig sind und nicht duplizieren. aber wenn ich versuchte, in die Abfrage eindeutig zu setzen, dupliziert es auch.

gewünschte Ausgabe:

enter image description here

+0

Verwendung Gruppe von bed_bill_id –

+0

Ich sehe keine doppelte. Die Spalte 'lab_bill_id' ist auf der Spaltenebene' csr_bill_id' eindeutig. Geben Sie das erwartete Ergebnis an und stellen Sie kein Bild für Beispieldaten bereit. – Viki888

+0

mysql ist nicht gleich sq-server. Deshalb habe ich das Tag – Jens

Antwort

0

Versuchen Sie, diese zu entfernen:

where 
    bed.patient_id = pat.patient_id 

dann verschiedene verwenden

+0

Ich muss die Patienten-ID haben, um alle zugehörigen Daten auszuwählen. – JJCADIZ

+0

Haben Sie es versucht? –

+0

ja ich tat. immer noch das gleiche. Vervielfältigung. was ich nicht verstehe, ist selbst wenn ich Gruppe durch verwende, es kopiert immer noch – JJCADIZ