سؤال

أنا بحاجة إلى تحديد مؤشر موقف من سجل في جدول قاعدة بيانات كبيرة من أجل مسبقا النداء إلى أن البند صفحة.أحتاج فعالة استعلام SQL التي يمكن أن تعطي لي هذا الرقم.للأسف SQL لا تقدم شيئا مثل:

SELECT INDEX(*) FROM users WHERE userid='123'

أي أفكار ؟

تحرير:دعونا نفترض أن هناك جملة ORDER BY إلحاق هذا.النقطة أنا لا أريد تحميل جميع السجلات لتحديد موقف معين واحد.أنا أحاول فتح النداء إلى صفحة عقد عنصر القائمة التي سبق المختار - لأنني أريد أن تقدم معلومات عن ذلك بالفعل اختيار البند ضمن السياق الذي يسمح للمستخدم لاختيار واحدة مختلفة.

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

المحلول

قد تستخدم شيئا مثل (pseudo-code):

  • عد الاستعلام:$n = select count(uid) من {المستخدمين} حيث ...(الخاص بك الترحيل حالة بما في ذلك userid 123 الحد)
  • $page = الكلمة($n / $pager_size);
  • عرض الاستعلام:حدد ماذا كنت تريد من {المستخدمين} أين (الخاص بك الترحيل حالة دون الحد) ، تمريرها إلى db_query_range(thequery, $page, $pager_size)

كنت حقا ينبغي أن ننظر pager_query, رغم ذلك , لأن هذا هو ما يدور حول كل شيء ، وأنه في الأساس يعمل مثل هذا:عد الاستعلام وعرض الاستعلام ، إلا انه يحاول بناء العد الاستعلام تلقائيا.

نصائح أخرى

وعلى افتراض كنت تسأل حقا كيف لصفحة السجلات في SQL Server 2005 فصاعدا، وإلقاء نظرة على هذا الرمز من <لأ href = "http://www.davidhayden.com/blog/dave/archive/2005/12/ 30 / 2652.aspx "يختلط =" نوفولو noreferrer "> ديفيد هايدن :

و(سوف تحتاج إلى تغيير التاريخ، الوصف أن تكون الأعمدة)

CREATE PROCEDURE dbo.ShowUsers
    @PageIndex INT, 
    @PageSize INT 
AS

BEGIN 

  WITH UserEntries AS ( 
  SELECT ROW_NUMBER() OVER (ORDER BY Date DESC) AS Row, Date, Description 
  FROM users)

  SELECT Date, Description
  FROM UserEntries 
  WHERE Row BETWEEN (@PageIndex - 1) * @PageSize + 1 AND @PageIndex * @PageSize

END 

وSQL لا يضمن ترتيب الكائنات في الجدول إلا إذا كنت تستخدم شرط OrderBy. وبعبارة أخرى، قد يتغير المؤشر في أي صف معين في الاستعلامات اللاحقة. هل تستطيع أن تصف ما تحاول تحقيقه مع النداء؟

كنت قد تكون مهتمة في شيء يحاكي rownum() من أوراكل في الخلية...إذا كنت تستخدم الخلية بالطبع كما انه لم يحدد في السؤال.


ملاحظات:

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

بالطبع, إذا كان كل ما تبذلونه من صفوف متتابعة ، الإضافية معرفات لا يتم حذف وأنت تعلم أول و آخر معرفات;ثم يمكنك استخدام العد و الرياضيات البسيطة على الموقف دون الاستعلام عن كل شيء....لكن أشك في هذه الحالة ، فإنه لم يتم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top