ك: كيف صلة داخلية جدول ولكن الحد الانضمام إلى 1 نتيجة بأعلى صوت أو عد؟

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

  •  07-07-2019
  •  | 
  •  

سؤال

ولقد 2 الجداول. واحد هو العناصر وآخر هو صوت لتلك البنود.

Items table has: |item_id|name|post_date
Votes table has: |votes_id|item_id|answer|total_yes|total_no

ما أريد القيام به هو إظهار كافة العناصر على أساس POST_DATE وتظهر الإجابة في الجدول الأصوات وفقا لأعلى total_yes. لذلك أريد أن تظهر سوى إجابة واحدة فقط من الجدول الأصوات وفقا لأعلى total_yes التصويت.

وكنت أحاول:

SELECT a.*, b.* FROM Items a
INNER JOIN Votes b ON a.item_id = b.item_id
GROUP by a.item_id
ORDER by a.post_date DESC, b.total_yes DESC

ولكن هذا لا يعمل.

وكانت النتيجة أنني أود أن أرى هي:

<item><answer><yes votes>
Buick | Fastest | 2 yes votes
Mercedes | Shiny | 32 yes votes
Honda | Quick | 39 yes votes

وهو محل تقدير أي مساعدة!

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

المحلول

SELECT a.*, b.*
  FROM Items a
       LEFT JOIN Votes b on a.item_id = b.item_id
                         and b.total_yes = (select max(total_yes) 
                                              from Votes v 
                         where v.item_id = a.item_id)
ORDER BY a.post_date DESC, b.total_yes DESC

وN.B: إذا كان لديك لعنصر 2 إجابات مع نفسه total_yes = كحد أقصى، وسيكون لديك 2 صفوف لهذا العنصر.

نصائح أخرى

وإضافة LIMIT 1 إلى نهاية الاستعلام الخاص بك:)

والتي سوف تتخذ سجل واحد فقط، ولكن في اللحظة التي كنت أمر من تاريخ أول، لذلك عليك الحصول على أعلى صوت آخر موعد التصويت عليه. هل هذا ما تريد؟

إذا كنت تريد أعلى مجموع الأصوات بغض عليك أن تأمر بذلك أولا.

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