[英]MySQL - How to select Multiple rows from Multiple tables
我有一個關於SQL語句的問題,由於某種原因我的腳本無法正常工作..這是方案; 我有6張桌子
Patient
-PatientID
-PatientName
-EmployerID FK to employer.EmployerID.
Employer
-EmployerID
-EmployerName
Carrier
-CarrierID
-CarrierName
Appointment
-AppointmentID
-AptDateTime
-PatientID FK to patient.PatientID
InsurancePlan
-PlanID
-GroupName
-EmployerID FK to employer.EmployerID
-CarrierID FK to carrier.CarrierID
Inssub
-InsubID
-DateEffective
-PlanID FK to insplan.PlanID
-Suscriber FK to patient.PatientID
我的腳本:我需要從這5個表中獲取所有行。 我對SQL索引驗證不是很好,這就是我的腳本無法正常工作的原因!
SELECT p.PatientName, e.EmployerName, c.CarrierName, ip.GroupName, a.AptDateTime, i.DateEffective
FROM patient p, employer e, inssub i, InsurancePlan ip, carrier c, appointment a
WHERE e.EmployerNum = p.EmployerNum AND
i.Subscriber = p.PatientID AND
i.PlanID = ip.PlanID AND
ip.CarrierID = c.CarrierID AND
ip.employerID = e.EmployerID AND
ip.PlanID = i.PlanID AND
a.PatientID = p.PatientID AND
a.DateTStamp > '2013/01/01' AND
a.AptDateTime != '0001-01-01 00:00:00'
如果使用顯式JOINS而不是逗號分隔表會更簡單:
SELECT p.PatientName, e.EmployerName, c.CarrierName, ip.GroupName, a.AptDateTime, i.DateEffective
FROM patient p
JOIN employer e ON p.EmployerID = e.EmployerID
JOIN insuranceplan ip ON e.EmployerID = ip.EmployerID
JOIN carrier c ON ip.CarrierID = c.CarrierID
JOIN appointment a ON p.PatientID = a.PatientID
JOIN inssub i ON p.PatientID = i.Subscriber AND ip.PlanID = i.PlanID
WHERE a.DateTStamp > '2013/01/01'
AND a.AptDateTime != '0001-01-01 00:00:00'
SELECT p.PatientName, e.EmployerName, c.CarrierName, ip.GroupName, a.AptDateTime
FROM Patient p JOIN Employer e ON p.EmployerId=e.EmployerId
JOIN Appointment a ON p.PatientId= a.PatientId
JOIN InsurancePlan ip ON ip.EmployerId=e.EmployerId
JOIN Carrier c ON c.CarrierId=ip.CarrierId
Join Inssub i ON i.PlanId=ip.PlanId
WHERE a.DateTStamp > '2013/01/01'
AND a.AptDateTime != '0001-01-01 00:00:00'
試試看,看看
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.