আমাদের কাছে একটি টেবিল রয়েছে যা আমরা প্রশ্নের উত্তর সঞ্চয় করতে ব্যবহার করি। আমাদের এমন ব্যবহারকারীদের সন্ধান করতে হবে যার নির্দিষ্ট প্রশ্নের নির্দিষ্ট উত্তর রয়েছে। সুতরাং, যদি আমাদের টেবিলটিতে নিম্নলিখিত ডেটা থাকে:
user_id question_id answer_value
Sally 1 Pooch
Sally 2 Peach
John 1 Pooch
John 2 Duke
এবং আমরা এমন ব্যবহারকারীদের সন্ধান করতে চাইছি যারা প্রশ্ন 1 এর জন্য 'পুচ' এবং 2 নং প্রশ্নের জন্য 'পীচ' উত্তর দিয়েছেন, নিম্নলিখিত এসকিউএল (স্পষ্টতই) কাজ করবে না:
select user_id
from answers
where question_id=1
and answer_value = 'Pooch'
and question_id=2
and answer_value='Peach'
আমার প্রথম চিন্তাটি ছিল প্রতিটি উত্তরের সারণিতে স্ব-যোগদান করা যা আমরা খুঁজছি:
select a.user_id
from answers a, answers b
where a.user_id = b.user_id
and a.question_id=1
and a.answer_value = 'Pooch'
and b.question_id=2
and b.answer_value='Peach'
এটি কাজ করে, তবে যেহেতু আমরা স্বেচ্ছাসেবী সংখ্যক অনুসন্ধান ফিল্টারকে অনুমতি দেই, আমাদের আরও অনেক দক্ষ কিছু খুঁজে পাওয়া দরকার। আমার পরবর্তী সমাধানটি এরকম কিছু ছিল:
select user_id, count(question_id)
from answers
where (
(question_id=2 and answer_value = 'Peach')
or (question_id=1 and answer_value = 'Pooch')
)
group by user_id
having count(question_id)>1
তবে আমরা চাই যে ব্যবহারকারীরা একই প্রশ্নপত্রটি দু'বার নিতে সক্ষম হবেন, যাতে উত্তর টেবিলে তাদের প্রশ্নের 1 প্রশ্নের দুটি উত্তর থাকতে পারে।
সুতরাং, এখন আমি একটি ক্ষতির মধ্যে আছি। এর কাছে যাওয়ার সর্বোত্তম উপায় কী? ধন্যবাদ!