سؤال

أرغب في إنشاء صفيف (في PHP) من نتائج SQL مثل هذا: لدينا "منشورات" SQL Table التي تخزن اسم و ال رسالة.مثال:

الاسم | رسالة

جون | مرحبًا

نيك | يوم جميل

جورج | مع السلامة

جون | أين

ما أريد هو إخراج أسماء الأشخاص الذين نشروا رسالة ولكن لا يعرضون نفس الأسماء أكثر من وقت واحد. لذلك سيكون الناتج جون ، نيك ، جورج. (من هذه السجلات ، نرى أن جون نشر رسالتين ، ولكن في الإخراج النهائي ، نرى مرة واحدة فقط اسمه).

هل هذا ممكن بطريقة ما؟ شكرا مقدما.

هل كانت مفيدة؟

المحلول

محاولة:

$sql = <<<END
SELECT DISTINCT Name FROM Posts
END;
$query = mysql_query($sql) or die($sql . ' - ' . mysql_error());
$names = array();
while ($row = mysql_fetch_array($query)) {
  $names[] = $row[0];
}
print_r($names);

نصائح أخرى

اختر مسافة

يمكنك تشغيل استعلام SQL لتحديد الأسماء المتميزة ، ولا شيء آخر:

SELECT DISTINCT Name FROM Posts;

سيعطيك هذا مجموعة نتائج تتكون من قيم أسماء مميزة ، مع إرجاع كل قيمة فريدة فقط مرة واحدة في المجموعة.

للحصول على العد ، ستحتاج إلى التجميع باستخدام المجموعة بواسطة:

SELECT NAME , COUNT(*) as Posts FROM Posts GROUP BY NAME

إليكم SQL إذا لم تكن منبهًا للتجميع

select count(name) as N, name from posts group by name ;

الأشخاص الذين لديهم أكثر من منشور واحد

select count(name) as N, name from posts group by name having N > 1 ;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top