SELECT
*,
p.name AS name,
p.image,
p.price,
(
SELECT ps.price
FROM product_special ps
WHERE p.id = ps.id
AND ps.date < NOW()
ORDER BY ps.priority ASC, LIMIT 1
) AS special_price,
(
SELECT ps.date
FROM product_special ps
WHERE p.id = ps.id
AND ps.date < NOW()
ORDER BY ps.priority ASC, LIMIT 1
) AS date
FROM product p LEFT JOIN product_special ps ON (p.id = ps.id)
আপনি দেখতে পাচ্ছেন যে ঠিক একই কৌনিকটি পুনরাবৃত্তি করছি কেবল অন্য কলামটি বের করার জন্য। আমি ভাবছি এই কাজ করার আরও ভাল উপায় আছে?
আইডি হ'ল উভয় টেবিলের প্রাথমিক কী। প্রোডাক্ট_স্পেশাল.প্রিয়রিটি অনন্য করতে আমার কোনও সমস্যা নেই যদি এটি সহায়তা করতে পারে।
cross apply
হয় (2013 সালে মুক্তি) 9.3 দিয়ে শুরু Postgres পাওয়া কিন্তু তারা এসকিউএল মান মেনে চলে এবং স্ট্যান্ডার্ড ব্যবহার করতেlateral
অপারেটর। আপনার দ্বিতীয় ক্যোয়ারীতে প্রতিস্থাপনleft join
সঙ্গেleft join lateral