1

目的を説明するのは少し難しいので、もっと情報が必要な場合は私に知らせてください。

私は、人々が記事を投稿できるだけでなく、他のユーザーの投稿を宣伝できるブログを作成しています。ユーザーの投稿とプロモートされた投稿がプロフィールページに表示されます。

より多くの情報を提供するために、これはすでにtumblrまたはtwitter(リツイート付き)で行われています。ユーザープロファイルには、ツイートだけでなく、彼がリツイートしたツイートもあります。

データベーステーブルは次のとおりです。

表「投稿」:

  • id
  • author_id
  • タイトル
  • コンテンツ
  • 作成した

そして、「昇進」テーブル(人Xは投稿Yを昇格させます):

  • id
  • prompt_id(投稿Yを宣伝したユーザーID:Mr X)
  • post_id(プロモートされた投稿:Y)
  • 作成した

ユーザーIDを指定して、彼が書いた投稿と彼が宣伝した投稿を取得したいと思います。問題は、SQL(特にMySQL)クエリとは何ですか?

そして、「作成された」フィールドに従ってリストを並べ替えます。

前もって感謝します。

4

2 に答える 2

0

わかりました。答えは次のとおりです。

SELECT *
FROM Posts
LEFT JOIN Promotions ON Promotions.post_id = Posts.id
WHERE Posts.author_id = $userId
OR Promotions.promoter_id = $userId

したがって、LEFT JOIN と OR 条件を組み合わせると、魔法のトリックが発生します。

それが役立つことを願っています。

PS。すべての参加者に感謝します。

于 2012-05-29T20:19:29.900 に答える
0

ユーザーが書いた投稿は簡単です:

select * 
from posts 
where author_id=@your_user_id

ユーザーが宣伝した投稿を取得するには、次のことができます。

select * 
from Promotions
where promoter_id =@your_user_id

もちろん、ユーザーが宣伝した投稿に関する情報が必要になる場合があるため、両方のテーブルを結合する必要があります。

select p.title
from posts P join Propotions pro on pro.postId=p.id
where pro.promoter_id =@your_user_id
于 2012-05-29T15:48:50.337 に答える