ST EDU
2 snippets পাওয়া গেছে
ST Edu
কোনো বিবরণ দেওয়া হয়নি
19 codes
ST EDU
▾
আপনি student_fee টেবিলে stu_id = 64 এর সব ফি খুঁজতেছেন — তবে এমন ফি যেগুলা student_fee_collection টেবিলে নেওয়া হয় নাই, অর্থাৎ fee_id student_fee_collection-এ নাই। তাই নিচের SQL টি আপনার উদ্দেশ্য একদম ঠিকভাবে পূরণ করবে:
SELECT * FROM student_fee
WHERE stu_id = 64
AND fee_id NOT IN (
SELECT fee_id
FROM student_fee_collection
);
//before add zero in phone number
UPDATE `students`
SET `f_phone` = CONCAT('0', `f_phone`)
WHERE LENGTH(`f_phone`) = 10;
Update phone number
UPDATE `students` SET
`phone` = '01852148425' ,
`f_phone` = '01852148425' ,
`m_phone` = '01852148425' ,
`g_phone` = '01852148425'
WHERE 1;
-- তুমি যদি চাও যেসব marks এন্ট্রির subject_id আর subjects টেবিলে নেই (মানে ডিলিট হয়ে গেছে), সেগুলো মুছে ফেলতে — তাহলে নিচের DELETE কুয়েরি ব্যবহার করো:
DELETE m
FROM marks m
LEFT JOIN subjects s ON m.subject_id = s.id
WHERE s.id IS NULL;
-- ✅ ভুল subject যুক্ত মার্ক এন্ট্রি (সার্চ):
SELECT m.*
FROM marks m
JOIN student_details sd ON m.stu_details_id = sd.id
LEFT JOIN subjects s
ON s.group_id = sd.group_id
AND s.class_id = sd.class_id
AND s.medium_id = sd.medium_id
AND m.subject_id = s.id
WHERE s.id IS NULL;
-- এই রেজাল্ট দেখে নিশ্চয়তা পেলে পরে নিচের মতো করে ডিলিট করতে পারো:
DELETE m
FROM marks m
JOIN student_details sd ON m.stu_details_id = sd.id
LEFT JOIN subjects s
ON s.group_id = sd.group_id
AND s.class_id = sd.class_id
AND s.medium_id = sd.medium_id
AND m.subject_id = s.id
WHERE s.id IS NULL;
-- Admission Fee Delete Query
DELETE sf
FROM student_fees sf
JOIN students s ON sf.stu_id = s.id
WHERE sf.ac_head_id = 2
AND s.unique_id <= '260000';
-- -Development Fee Update Query for Old Students
UPDATE student_fees sf
JOIN students s ON sf.stu_id = s.id
SET sf.amount = 2000,
sf.updated_at = NOW()
WHERE sf.ac_head_id = 3
AND s.unique_id <= '260000';
-- //Same year duplicate student details query
SELECT *
FROM student_details
WHERE (student_id, session_id, class_id) IN (
SELECT student_id, session_id, class_id
FROM student_details
GROUP BY student_id, session_id, class_id
HAVING COUNT(*) > 1
);
-- Update Query to Set f_phone from phone
UPDATE students
SET f_phone = phone
WHERE f_phone IS NULL OR f_phone = '';
-- ই কোয়েরিটি সরাসরি students টেবিলের সব ID চেক করবে এবং যে ID গুলো সেখানে নেই, সেগুলো student_details থেকে নিয়ে আসবে।
SELECT *
FROM student_details
WHERE student_id NOT IN (
SELECT id
FROM students
WHERE id IS NOT NULL
);
-- ✅ ভুল subject যুক্ত মার্ক এন্ট্রি (সার্চ):
SELECT m.*
FROM marks m
JOIN student_details sd ON m.stu_details_id = sd.id
LEFT JOIN subjects s
ON s.group_id = sd.group_id
AND s.class_id = sd.class_id
AND s.medium_id = sd.medium_id
AND m.subject_id = s.id
WHERE s.id IS NULL;
-- এই রেজাল্ট দেখে নিশ্চয়তা পেলে পরে নিচের মতো করে ডিলিট করতে পারো:
DELETE m
FROM marks m
JOIN student_details sd ON m.stu_details_id = sd.id
LEFT JOIN subjects s
ON s.group_id = sd.group_id
AND s.class_id = sd.class_id
AND s.medium_id = sd.medium_id
AND m.subject_id = s.id
WHERE s.id IS NULL;
-- যেসব ফি-র ডেটা student_fees টেবিলে একাধিকবার (Double/Duplicate) আছে কিন্তু student_fee_collections টেবিলে এখনও তাদের কোনো টাকা জমা পড়ে নাই
-- যেসব ফি-র ডেটা student_fees টেবিলে একাধিকবার (Double/Duplicate) আছে কিন্তু student_fee_collections টেবিলে এখনও তাদের কোনো টাকা জমা পড়ে নাই (Fee collection হয় নাই), সেই ডেটাগুলো বের করার জন্য আপনি নিচের SQL কুয়েরিটি ব্যবহার করতে পারেন।
SELECT
sf.stu_id,
s.name AS student_name,
sf.id AS fee_id,
sf.ac_head_id,
sf.fee_date,
sf.amount,
sf.title
FROM student_fees sf
-- ছাত্রের নাম দেখার জন্য JOIN
LEFT JOIN students s ON sf.stu_id = s.id
-- ফি কালেকশন হয়েছে কিনা চেক করার জন্য JOIN
LEFT JOIN student_fee_collections sfc ON sf.id = sfc.fee_id
WHERE
-- ফি কালেকশন হয় নাই (কালেকশন টেবিলে কোনো এন্ট্রি নাই)
sfc.fee_id IS NULL
-- এবং এই ফি-র stu_id, ac_head_id, fee_date, amount কম্বিনেশনটি ডুপ্লিকেট
AND (sf.stu_id, sf.ac_head_id, sf.fee_date, sf.amount) IN (
SELECT stu_id, ac_head_id, fee_date, amount
FROM student_fees
GROUP BY stu_id, ac_head_id, fee_date, amount
HAVING COUNT(*) > 1
)
ORDER BY sf.stu_id, sf.fee_date;
-- অপশন ১: ডুপ্লিকেটগুলোর মধ্যে ১টি রেখে বাকি কপিগুলো ডিলিট করতে (Safe & Recommended) -- ধরে নিন,
একই ছাত্রের একই ফি ২ বার এন্ট্রি হয়েছে এবং কোনো কালেকশন হয়নি। এই কুয়েরিটি চালালে ১টি মেইন এন্ট্রি (সবচেয়ে ছোট ID) টিকে থাকবে এবং বাকি বাড়তি কপিটি ডিলিট হয়ে যাবে।
DELETE sf FROM student_fees sf
-- ফি কালেকশন হয়নি তা নিশ্চিত করার জন্য JOIN
LEFT JOIN student_fee_collections sfc ON sf.id = sfc.fee_id
WHERE sfc.fee_id IS NULL
AND sf.id > (
-- একই কম্বিনেশনের সর্বনিম্ন ID-টি খুঁজে বের করা
SELECT MIN(temp.id)
FROM (SELECT id, stu_id, ac_head_id, fee_date, amount FROM student_fees) temp
WHERE temp.stu_id = sf.stu_id
AND temp.ac_head_id = sf.ac_head_id
AND temp.fee_date = sf.fee_date
AND temp.amount = sf.amount
);
-- প্রতিটা ডুপ্লিকেট লাইনের ID সহ দেখতে চাইলে: -- উপরের কুয়েরিটি শুধু দেখাবে কোন কোন ডেটা ডুপ্লিকেট আছে। কিন্তু আপনি যদি ডুপ্লিকেট হওয়া প্রতিটা রো-এর id এবং title সহ আলাদা আলাদা লাইনে দেখতে চান, তাহলে এই কুয়েরিটি ব্যবহার করুন:
SELECT id, stu_id, ac_head_id, title, amount, fee_date, session, status
FROM student_fees
WHERE (stu_id, ac_head_id, fee_date, amount) IN (
SELECT stu_id, ac_head_id, fee_date, amount
FROM student_fees
GROUP BY stu_id, ac_head_id, fee_date, amount
HAVING COUNT(*) > 1
)
ORDER BY stu_id, fee_date;
-- আপনার নতুন শর্ত অনুযায়ী, class_id = 11 এবং session_id = 5 এর শিক্ষার্থীদের যেসব ফি এখনো কালেকশন হয়নি (ডুপ্লিকেট চেক ছাড়া), সেগুলো মুছে ফেলার জন্য নিচের কুয়েরিটি ব্যবহার করতে পারেন:
DELETE sf
FROM student_fees sf
-- ১. ছাত্রদের ID মিলানোর জন্য students টেবিল JOIN
INNER JOIN students s ON sf.stu_id = s.id
-- ২. class_id এবং session_id চেক করার জন্য student_details টেবিল JOIN
INNER JOIN student_details sd ON s.id = sd.student_id
-- ৩. ফি কালেকশন হয়েছে কিনা চেক করার জন্য LEFT JOIN
LEFT JOIN student_fee_collections sfc ON sf.id = sfc.fee_id
WHERE
-- ফিল্টার: নির্দিষ্ট class এবং session
sd.class_id = 11
AND sd.session_id = 5
-- ফিল্টার: ফি কালেকশন হয় নাই (কালেকশন টেবিলে কোনো এন্ট্রি নাই)
AND sfc.fee_id IS NULL;
-- আপনার দেয়া টেবিল থেকে একই session_id, class_id, এবং student_id ১টার বেশি (Duplicate/ডুপ্লিকেট) যেগুলোতে আছে, সেগুলো খুঁজে বের করার SQL Query লিখে দিয়েছি।
SELECT *
FROM `student_details`
WHERE (`session_id`, `class_id`, `student_id`) IN (
SELECT
`session_id`,
`class_id`,
`student_id`
FROM
`student_details`
GROUP BY
`session_id`,
`class_id`,
`student_id`
HAVING
COUNT(*) > 1
)
ORDER BY
`student_id`, `session_id`, `class_id`;
-- ধাপ ২: ইউনিক ইনডেক্স (Unique Key) যুক্ত করা -- এখন টেবিলে UNIQUE Constraint প্রয়োগ করুন। এরপর থেকে একই session_id, class_id, এবং student_id দিয়ে ২য় বার ডাটা ইনসার্ট হতে পারবে না।
ALTER TABLE `student_details`
ADD UNIQUE KEY `unique_student_session_class` (`session_id`, `class_id`, `student_id`);
Old EDU Soft To New Edu Soft DB
ST IT BD Old EDU Soft To New Edu Soft DB
4 codes
ST EDU
▾
teacher_information
INSERT INTO akfhhighschool_emsdb.teachers (
designation, name, joining_date, birthdate, mpo_date,
index_no, email, phone, nid, photo, edu_qualification, status
)
SELECT
degination, teacher_name, joining_date, birth_day, mpo_date,
NULL, email, mobile, nid, picture, education_status, status
FROM akfhhighschool_websitedb.teacher_information;
UPDATE `teachers` SET `type` = 'Teacher' WHERE 1;
UPDATE teachers
SET teacher_code = CONCAT('25', LPAD(id, 2, '0'));
-- Notice Migration
INSERT INTO akfhhighschool_emsdb.notices (title, description, file, created_at, updated_at)
SELECT
title,
title, -- description এও title বসানো হলো
file_name,
date,
date
FROM akfhhighschool_websitedb.upload_file
WHERE 1 ;
-- Exam Result Migration
INSERT INTO akfhhighschool_emsdb.exam_result (`date`, `title`, `file`, `status`, `created_at`, `updated_at`)
SELECT
date,
title,
file_name,
1, -- status ফিক্সড 1
date,
NOW()
FROM akfhhighschool_websitedb.upload_file
WHERE 1;
-- Executive Council Migration
INSERT INTO akfhhighschool_emsdb.excutive_council (id, name, designation, category)
SELECT id, name, designation, details
FROM akfhhighschool_websitedb.excutive_council;