質問
ですから、私が実際に達成しようとしているのは、最も投票された物語をフィルタリングすることです。ストーリーは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の投票/ストーリーのみを使用するためです。
所属していません dba.stackexchange