Masalahnya adalah di mySQL operator koma memiliki prioritas yang lebih rendah daripada join
operator, maka product inner join (subquery) on part.id = highestcost.partid inner join (subquery) on part.id = lowestcost.partid
gabungan dievaluasi sebelum part
tabel bergabung dalam ekspresi, maka pesan kesalahannya.
Ganti operator koma dengan join
sederhana operator dan pindahkan kondisi bergabung dari where
klausa ke on
klausa dan semua akan baik-baik saja:
...
FROM vendor
inner join vendorparts on vendor.id = vendorparts.vendorid
inner join part on vendorparts.partid = part.id
inner join product on product.partid = part.id
INNER JOIN (SELECT vendorparts.partid,
Max(vendorparts.lastcost) AS Highestcost
FROM vendorparts
GROUP BY vendorparts.partid) AS highestcost
ON part.id = highestcost.partid
INNER JOIN (SELECT vendorparts.partid,
Min(vendorparts.lastcost) AS Lowestcost
FROM vendorparts
GROUP BY vendorparts.partid) AS lowestcost
ON part.id = lowestcost.partid
WHERE vendorparts.lastcost <> 0
Jika Anda memiliki lebih banyak kueri seperti itu di mana Anda mencampur operator koma dan gabungan eksplisit, maka Anda harus memeriksanya karena mereka dapat menghasilkan hasil yang berbeda meskipun tidak ada kesalahan sintaks di MySQL.