質問

ですから、私が実際に達成しようとしているのは、最も投票された物語をフィルタリングすることです。ストーリーは1つのテーブルに保存され、すべての投票は別のテーブルに保存されます。

VID列の注文を適切にするためにこの声明があります。

SELECT vid, COUNT(id) AS votecnt 
  FROM votes 
WHERE status = 1 
GROUP BY vid 
ORDER BY votecnt DESC

そして、私は物語自体をフィルタリングする必要があり、最初の条項にあるのと同じように、私は命令されたいと思います。

SELECT vid, body, timestamp 
  FROM stories 
WHERE lv = 1 
  AND status = 1

問題は、最初のステートメントが2番目の行が行う行のすべてを返すわけではないため、私が必要とする順序です。最初のクエリが最初にステータス= 1カウントでテーブルを並べ替え、次に合計投票する場合、それはさらに良いでしょう。

これをすべてSQLクエリに結合する方法はありますか?または、その間にPHPを使用する必要がありますか?

役に立ちましたか?

解決

私があなたの構造をひどく誤解していない限り、単純な結合は正常に動作するはずです。

SELECT stories.vid, body, timestamp, COUNT(votes.id) votecnt FROM stories
INNER JOIN votes ON stories.vid=votes.vid
WHERE stories.lv=1 AND stories.status=1
GROUP BY votes.vid
ORDER BY votecnt DESC

あなたが何を意味するのかわかりません

最初のクエリが最初にステータス= 1カウントでテーブルを並べ替え、次に合計投票する場合、それはさらに良いでしょう。

声明は、ステータス= 1の投票/ストーリーのみを使用するためです。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top