كيف يمكنني قائمة بلوق وظائف ذات الصلة التي أمر بها عدد من العلامات المشتركة؟

StackOverflow https://stackoverflow.com/questions/818551

  •  03-07-2019
  •  | 
  •  

سؤال

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

[المشاركات] <- [علامات المشاركات إلى الانضمام-جدول] -> [الكلمات]

وأنا باستخدام PHP و MySQL - يمكنني أن أفعل هذا في استعلام واحد

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

المحلول

وماذا عن ...:

SELECT COUNT(*) AS numcommon, posts.pid, posts.post FROM posts
               INNER JOIN p2t ON p2t.pid = posts.pid
               WHERE p2t.tid IN
               (SELECT p2t.tid FROM p2t
               INNER JOIN posts ON p2t.pid = posts.pid
               WHERE posts.pid = 1)
               AND posts.pid != 1
               GROUP BY posts.pid
               ORDER BY numcommon

وعلى افتراض معرف المنتج كمفتاح أساسي في الوظائف الجدول، الدار كمفتاح أساسي في الجدول العلامات، على حد سواء المفاتيح الخارجية في p2t (آخر لوضع علامة) الجدول؟

نصائح أخرى

وبالتأكيد يمكنك أن تفعل ذلك في استعلام واحد:

SELECT postid, count(tagid) as common_tag_count
FROM posts_to_tags
WHERE tagid IN (SELECT tagid FROM posts_to_tags WHERE postid = 2)
GROUP BY postid ORDER BY common_tag_count DESC; 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top