Reputation: 389
I have this query that select records from a table and LEFT JOINS other two tables.
Here's the query
SELECT mainTest.lab_number_auto, mainTest.lab_number,
SUM(CASE WHEN test.lab_number = mainTest.lab_number
THEN test.test_unit_cost ELSE 0 END) cost,
payment.totalPaid
FROM patient_main_test mainTest
LEFT JOIN patient_test test
ON test.lab_number = mainTest.lab_number
LEFT JOIN (
SELECT SUM(CASE WHEN testpayment.lab_number = mainTest.lab_number THEN testpayment.amount_paid ELSE 0 END) totalPaid
FROM patient_test_payment testpayment
GROUP BY testpayment.lab_number
) AS payment
ON payment.lab_number = mainTest.lab_number
WHERE mainTest.lab_number != ''
GROUP BY mainTest.lab_number
On running this query i get this error
MySQL said:
#1054 - Unknown column 'mainTest.lab_number' in 'field list'
Thanks.
Here's a fiddle i created. http://sqlfiddle.com/#!2/291c4/8
Upvotes: 0
Views: 176
Reputation: 1462
Try this, if im right the issue is that you were trying to treat your derived table in the left join like a co-related sub-query. & thx for the sql fiddle... makes it so much easier to help you.
SELECT mainTest.lab_number_auto, mainTest.lab_number,
SUM(CASE WHEN test.lab_number = mainTest.lab_number
THEN test.test_unit_cost ELSE 0 END) cost,
(
SELECT SUM(CASE WHEN testpayment.lab_number = mainTest.lab_number THEN testpayment.amount_paid ELSE 0 END) totalPaid
FROM patient_test_payment testpayment
Where lab_number = mainTest.lab_number
GROUP BY testpayment.lab_number
) AS totalPaid
FROM patient_main_test mainTest
LEFT JOIN patient_test test
ON test.lab_number = mainTest.lab_number
WHERE mainTest.lab_number != ''
GROUP BY mainTest.lab_number
Upvotes: 2