سؤال

هذا هو سؤال محدد للغاية فيما يتعلق الخلية كما نفذت في وورد.

أنا أحاول تطوير البرنامج المساعد الذي سوف تظهر (حدد) وظائف محددة 'tags و تنتمي محددة 'فئات'(سواء متعددة)

قيل لي انه من المستحيل لأن الطريقة الفئات والعلامات يتم تخزين:

  1. wp_posts يحتوي على قائمة من الوظائف ، كل وظيفة لها "ID"
  2. wp_terms يحتوي على قائمة مصطلحات (كل الفئات والعلامات).كل مصطلح له TERM_ID
  3. wp_term_taxonomy لديه قائمة من الشروط مع TERM_IDs و التصنيف تعريف كل واحد من هؤلاء (أي فئة أو علامة)
  4. wp_term_relationships وقد بين الجمعيات من حيث والمشاركات

كيف يمكنني الانضمام إلى الجداول للحصول على كل المشاركات مع فئة "النووي" و "الصفقات" التي تنتمي أيضا إلى فئة "Category1"?

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

المحلول

لقد أسأت فهمك.ظننت أنك تريد النووية أو الصفقات.أدناه ينبغي أن تعطيك فقط النووي الصفقات.

select p.*
from wp_posts p, wp_terms t, wp_term_taxonomy tt, wp_term_relationship tr,
wp_terms t2, wp_term_taxonomy tt2, wp_term_relationship tr2
wp_terms t2, wp_term_taxonomy tt2, wp_term_relationship tr2

where p.id = tr.object_id and t.term_id = tt.term_id and tr.term_taxonomy_id = tt.term_taxonomy_id

and p.id = tr2.object_id and t2.term_id = tt2.term_id and tr2.term_taxonomy_id = tt2.term_taxonomy_id

and p.id = tr3.object_id and t3.term_id = tt3.term_id and tr3.term_taxonomy_id = tt3.term_taxonomy_id

and (tt.taxonomy = 'category' and tt.term_id = t.term_id and t.name = 'Category1')
and (tt2.taxonomy = 'post_tag' and tt2.term_id = t2.term_id and t2.name = 'Nuclear')
and (tt3.taxonomy = 'post_tag' and tt3.term_id = t3.term_id and t3.name = 'Deals')

نصائح أخرى

ما الإجمالي DB هيكل.

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

SELECT *
  FROM wp_posts p
 WHERE EXISTS( SELECT *
                 FROM wp_term_relationship tr
                WHERE tr.object_id = p.id
                  AND EXISTS( SELECT *
                                FROM wp_term_taxonomy tt
                               WHERE tt.term_taxonomy_id = tr.term_taxonomy_id
                                 AND tt.taxonomy         = 'category'
                                 AND EXISTS( SELECT *
                                               FROM wp_terms t
                                              WHERE t.term_id = tt.term_id
                                                AND t.name    = "Category1" 
                                           )
                            )
                  AND EXISTS( SELECT *
                                FROM wp_term_taxonomy tt
                               WHERE tt.term_taxonomy_id = tr.term_taxonomy_id
                                 AND tt.taxonomy         = 'post_tag'
                                 AND EXISTS( SELECT *
                                               FROM wp_terms t
                                              WHERE t.term_id = tt.term_id
                                                AND t.name    = "Nuclear" 
                                           )
                                 AND EXISTS( SELECT *
                                               FROM wp_terms t
                                              WHERE t.term_id = tt.term_id
                                                AND t.name    = "Deals" 
                                           )
                            )
            )

لذلك حاولت كل الخيارات على وورد ديسيبل.بحثت عن فئة "التكنولوجيا" في مشاركاتي مع فئة "بيرل" و "البرمجة".

اريك عملت مرة واحدة أضيفت في عداد المفقودين فاصلة في الأولي select.عاد 3 السجلات.المشكلة هي أن المقطع الذي يبحث عن "post_tag" هو في الواقع العمل أو الخيار.واحدة من مشاركاتي واحد فقط الوسم ليس على حد سواء.أيضا سيكون من الجيد أن تجعل حدد متميزة.

حاولت مات الإصدار ، لكنه أبقى العودة مجموعة فارغة.كنت قد تحاول "توفق" مع ذلك.

جرب هذا:

select p.*
from wp_posts p, 
wp_terms t, wp_term_taxonomy tt, wp_term_relationship tr
wp_terms t2, wp_term_taxonomy tt2, wp_term_relationship tr2

where p.id = tr.object_id
and t.term_id = tt.term_id
and tr.term_taxonomy_id = tt.term_taxonomy_id

and p.id = tr2.object_id
and t2.term_id = tt2.term_id
and tr2.term_taxonomy_id = tt2.term_taxonomy_id

and (tt.taxonomy = 'category' and tt.term_id = t.term_id and t.name = 'Category1')
and (tt2.taxonomy = 'post_tag' and tt2.term_id = t2.term_id and t2.name in ('Nuclear', 'Deals'))

أساسا أنا توظيف 2 نسخ من صلة الطفل الجداول - حيث term_taxonomy ، term_relationship.نسخة واحدة ينطبق على 'Category1' تقييد الآخر 'النووية' أو 'صفقات' تقييد.

راجع للشغل, ما نوع المشروع هذا مع جميع المشاركات النووي الصفقات ؟ أنت تحاول الولايات المتحدة على بعض الحكومة القائمة ؟ ;)

شكرا @إريك يعمل!فقط عدد قليل من التعليمات البرمجية التصحيحات للرجوع إليها في المستقبل:

  • أول من حدد البيانات يفتقد غيبوبة بعد wp_term_relationship tr2
  • في نفس حدد statemt التالية يجب أن يكون التغيير:
wp_terms t2, wp_term_taxonomy tt2, wp_term_relationship 

tr2

يجب أن يكون

wp_terms t3, wp_term_taxonomy tt3, wp_term_relationship 

tr3

حقا كبيرة جدا الإجابة ..ساعدني كثيرا..

كبيرة bcoz., أنه أعطاني النهج الأساسي لبناء مجمع الاستعلام !

تصويب بسيط ، على استعداد المستخدمين مثلي :)

"wp_term_relationship" سيعطي 'لا وجود خطأ' ..استخدام wp_term_relationships كما هو الصحيح اسم الجدول.

شكرا اريك

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