سؤال

وأنا أحاول أن تنفيذ هذا الأمر SQL:

SELECT page.page_namespace, pagelinks.pl_namespace, COUNT(*) 
    FROM page, pagelinks
    WHERE 
        (page.page_namespace <=3 OR page.page_namespace = 12 
            OR page.page_namespace = 13
        ) 
        AND 
        (pagelinks.pl_namespace <=3 OR pagelinks.pl_namespace = 12 
            OR pagelinks.pl_namespace = 13
        )
        AND 
        (page.page_is_redirect = 0)
        AND 
        pagelinks.pl_from = page.page_id 
    GROUP BY (page.page_namespace, pagelinks.pl_namespace) 
; 

وعندما تفعل ذلك، وأحصل على الخطأ التالي:

    ERROR:  could not identify an ordering operator for type record
    HINT:  Use an explicit ordering operator or modify the query.

    ********** Error **********

    ERROR: could not identify an ordering operator for type record
    SQL state: 42883
    Hint: Use an explicit ordering operator or modify the query.

ولقد حاول مضيفا: <م> ORDER BY (page.page_namespace، pagelinks.pl_namespace) ASC إلى نهاية الاستعلام دون نجاح.

وUPDATE:

وكما أنني حاولت ذلك:

SELECT page.page_namespace, pagelinks.pl_namespace, COUNT(*) 
    FROM page, pagelinks
    WHERE pagelinks.pl_from = page.page_id 
    GROUP BY (page.page_namespace, pagelinks.pl_namespace) 
; 

ولكن ما زلت الحصول على نفس الخطأ.

وتشك

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

المحلول

وأنا لم فحص أي وثائق ولكن الحقيقة أن لديك التعبير GROUP BY بك بين قوسين يبدو غير عادي بالنسبة لي. ماذا يحدث إذا كنت لا تستخدم الأقواس هنا؟

نصائح أخرى

وانا فعلا لست خبيرا، ولكن ما أفهمه من هذه الرسالة هو أن كيو compains عن عدم تمكنه من التعامل مع أي page.page_namespace <=3 أو pagelinks.pl_namespace <=3. إجراء مقارنة من هذا القبيل تحتاج إلى أن يكون أمرا تعريف وربما واحد من هذه المجالات ليس حقل رقمي القياسي. أو ربما يكون هناك بعض المسألة مع عدد صحيح مقابل نقطة عائمة - على سبيل المثال السؤال إذا "3.0 = 3" ليست في الحقيقة أن من السهل الإجابة منذ العائمة تمثيل نقطة من 3.0 هو الأكثر احتمالا ليس بالضبط 3.

جميع التخمين فقط، ولكن أنا متأكد من تلك <=s هما مشكلتك.

حسنا، أنا لا أعرف مخطط (*) استخدام ولكن رسالة الخطأ يبدو واضحا. واحد من الأعمدة من نوع RECORD و لا يوجد المشغل لأجل RECORD.But بعض أجزاء من الاستعلام الخاص بك مثل <= يتطلب مثل هذا المشغل الطلب. استخدام ORDER BY غير المرجح أن تساعد منذ جوهر المشكلة هو عدم وجود المشغل لأجل ...

و(*) من الأسئلة الأخرى، وأفترض المخطط الخاص بك هو ويكيبيديا تفريغ الصفحة في <لأ href = "http://download.wikimedia.org/enwiki/latest/enwiki-latest-page.sql.gz" يختلط = "نوفولو noreferrer"> http://download.wikimedia.org/enwiki/latest/enwiki-latest-page.sql.gz صحيح؟

وانا لديه بعض الخطأ. ولكن وجدت هذه الصفحة، http://www.w3schools.com/sql/sql_groupby.asp فمن السهل، يجب عليك مجموعة بدون أقواس على سبيل المثال:

وGROUP BY (page.page_namespace، pagelinks.pl_namespace) الصحيح هو  GROUP BY page.page_namespace، pagelinks.pl_namespace

وتحيات !!

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