1

I have a question about a SQL statement, for some reason my script is not working properly.. This is the Scenario; I have 6 tables

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

My Script: I need get all the rows from those 5 tables. I am not really good for SQL Indexes validation, that's why my script is not working properly !

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'

2 Answers 2

3

It would be simpler if you use explicit JOINS rather than comma-delimited tables:

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'
Sign up to request clarification or add additional context in comments.

1 Comment

@Jay, Updated to note additional column. If this doesn't do what you need, can you post some sample data, and what result you are expecting to see?
0
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'

Try this and see

6 Comments

Missing employer join. And inssub isn't really needed for the SELECT used. Are you adding something that I missed?
I include the employer in very first statement it self.
Missed that - my apologies. But the inssub table shouldn't be needed here.
No prob bro. It might can't see clearly because it put it together.
Sorry was my mistake,i missed the inssub's DateEffective on select statement (updated) i've tried this script, but still not getting all the records i have on database,. i have 3 in total, just returned 2
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.