আপনার ভুল ডাটাবেস ডিজাইন আছে এবং আপনার ডাটাবেস নরমালাইজেশন ( উইকিপিডিয়া / স্ট্যাকওভারফ্লো ) সম্পর্কে কিছু পড়ার জন্য সময় নেওয়া উচিত ।
আমি ধরে নিলাম আপনার টেবিলটি দেখতে কিছুটা এমন দেখাচ্ছে
TABLE
================================
| group_id | user_ids | name |
| 1 | 1,4,6 | group1 |
| 2 | 4,5,1 | group2 |
সুতরাং আপনার ব্যবহারকারীর গ্রুপগুলির সারণীতে, প্রতিটি সারি একটি গোষ্ঠী উপস্থাপন করে এবং user_idsকলামে আপনি সেই গোষ্ঠীতে নিযুক্ত ব্যবহারকারী আইডির সেট করেছেন।
এই টেবিলটির সাধারণ সংস্করণটি দেখতে এটির মতো লাগবে
GROUP
=====================
| id | name |
| 1 | group1 |
| 2 | group2 |
GROUP_USER_ASSIGNMENT
======================
| group_id | user_id |
| 1 | 1 |
| 1 | 4 |
| 1 | 6 |
| 2 | 4 |
| ...
তারপরে আপনি নির্ধারিত গোষ্ঠী সহ সমস্ত ব্যবহারকারী বা গোষ্ঠীর সমস্ত ব্যবহারকারী বা ব্যবহারকারীদের সমস্ত গোষ্ঠী বা আপনি যা ভাবতে পারেন তা সহজেই চয়ন করতে পারেন। এছাড়াও, আপনার বর্গ কোয়েরি কাজ করবে:
SELECT * FROM `group_user_assignment` WHERE user_id IN (1,2,3,4);
SELECT * FROM `group_user_assignment` t1
JOIN `group` t2 ON t2.id = t1.group_id
WHERE user_id IN (1,4);
SELECT * FROM `group_user_assignment` t1
JOIN `group` t2 ON t2.id = t1.group_id
WHERE t1.`user_id` = 1;
SELECT * FROM `group_user_assignment` t1
JOIN `group` t2 ON t2.id = t1.group_id
WHERE t1.`group_id` = 1;
SELECT COUNT(*) AS `groups_count` FROM `group_user_assignment` WHERE `user_id` = 1;
SELECT COUNT(*) AS `users_count` FROM `group_user_assignment` WHERE `group_id` = 1;
এইভাবে ডাটাবেস আপডেট করা আরও সহজ হবে, যখন আপনি নতুন অ্যাসাইনমেন্ট যুক্ত করতে চান, আপনি কেবল নতুন সারিটি সন্নিবেশ করান group_user_assignment, যখন আপনি অ্যাসাইনমেন্টটি সরাতে চান আপনি সারিটি সরিয়ে ফেলেন group_user_assignment।
আপনার ডাটাবেস ডিজাইনে, অ্যাসাইনমেন্ট আপডেট করার জন্য, আপনাকে ডাটাবেস থেকে আপনার অ্যাসাইনমেন্ট সেট করতে হবে, এটি প্রক্রিয়া করতে হবে এবং আপডেট করতে হবে এবং তারপরে আবার ডাটাবেসে লিখতে হবে।
এখানে sqlFizz সাথে খেলতে হয়।
idএকটি কমা দ্বারা পৃথক করা তালিকা বা কিছু হিসাবে, একাধিক সারি হবে আপনার প্রশ্নের থেকে ফিরে।