كيف يمكن جلب البيانات من القاعدة بشرط معين mysql

السلام عليكم اعمل على قاعدة بيانات mysql يوجد جدول به بيانات مكررة ااريد طباعة البيانات بدون تكرار كتبت هذا الامر

SELECT DISTINCT name FROM table_ditils

ولاكن يوجد مشكلة اريد طباعة كل الجدول بشرط الاسم الا يتكرر name

هذا الكود يعمل اذا اضفت عمود واحد فقط ولاكن اذا اضفت اكثر من عامود لا يستجيب

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

Mustafa_Suleiman أضف ردا

الأمر SELECT DISTINCT سيرجع فقط القيم الفريدة من العمود المحددK ,إذا أضفت أكثر من عمود، فسيرجع الاستعلام القيم الفريدة من جميع الأعمدة المحددة.

استخدم عبارة GROUP BY وستؤدي العبارة إلى تجميع السجلات حسب القيم في العمود المحدد، ثم سترجع فقط المجموعة الأولى من كل مجموعة.

ولنفترض أن لديك جدول يحتوي على الأعمدة التالية:

  • name
  • age
  • country

ويحتوي على السجلات التالية:

name | age | country
------- | -------- | --------
Ahmed | 25 | USA
Ahmed | 30 | UK
Ahmed | 20 | Canada
Ahmed | 25 | USA

فنستخدم الأمر التالي لطباعة كل الجدول بشرط ألا يتكرر الاسم:

SELECT
  name,
  age,
  country
FROM
  table_details
GROUP BY
  name

وباستطاعتك أيضًا استخدام عبارة GROUP BY مع عبارة HAVING لتحديد شروط إضافية لمجموعات النتائج، كالأمر التالي لطباعة كل الجدول بشرط ألا يتكرر الاسم وأن يكون العمر أكبر من 20 عامًا:

SELECT
  name,
  age,
  country
FROM
  table_details
GROUP BY
  name
HAVING
  age > 20


يمكن استخدام دالة التجميع max() أو min() لاختيار قيمة واحدة من كل عمود لكل اسم مختلف، مثل هذا المثال:

SELECT name, max(column1) AS column1, max(column2) AS column2, max(column3) AS column3
FROM table_details
GROUP BY name;

هذه الطريقة ستعطينا جدولا به أربعة أعمدة على هذا النحو: name و column1 و column2 و column3. كل عمود من الأربعة سيحتوي على قيمة واحدة لكل اسم مختلف. إذا كان هناك أكثر من صف له نفس الاسم، فستظهر أعلى قيمة من كل عمود.

لم تنجح معى

وعليكم السلام ورحمة الله وبركاته،

يمكنك استخدام الدالة GROUP BY لطباعة كل الجدول بشرط الاسم الا يتكرر.

على سبيل المثال، إذا كان لديك جدول يسمى table_details يحتوي على الأعمدة التالية:

  • id
  • name
  • email
SELECT
  id,
  name,
  email
FROM
  table_details
GROUP BY
  name

  • هذا الكود يرجع جميع البيانات دون تكرار الاسم

حسب ما فهمت من سؤالك يمكن استخدام عبارة WHERE لتحديد المجموعات التي تريد إرجاعها.

على سبيل المثال، إذا كنت تريد طباعة جميع البيانات بشرط ألا يتكرر الاسم، فيمكنك استخدام الكود التالي:

SELECT *
FROM table_details
WHERE name IN (SELECT DISTINCT name FROM table_details)

هذا الكود سيختار فقط السجلات التي تحتوي على اسم فريد.

جربت الكود بيجيب كل التكرارات مع العلم استخدم sqlite