私はちょっと奇妙な質問があります。 まず、データベースの作成方法を変更できないことを教えてください。 私の前の人の中には、かなり悪いものを混乱させる本当の良い仕事がありました。mysql duplicateは重複から1を選択して減算します
それはニュースサイトで、他の人が投稿するニュース投稿を編集できる編集者がいます。 編集者は自分自身にニュースを投稿することもできます。
今質問があります。
I have a table for news.
id | news_username (who post news)
news_text Table
news_id | username | news_text
(Here user: can be editor of the news or a person who posted news)
User Table
username | title
このテーブルには、ニュース「id」とニュース「username」があります。 ユーザー名は、ニュースを投稿したユーザーのユーザー名です。 テーブル内にはさらに多くのフィールドがありますが、重要ではありません。
次に、news_textという表があり、その中にニュースのテキストが配置されています。 このテーブルには 'news_id'と 'username'フィールドがあります。 今回は、ユーザー名はニュースを投稿した人のフィールド、または投稿を編集したユーザーのユーザー名です。
私はまた、 'username'フィールドと 'title'フィールドとユーザーのタイトルを持つユーザーテーブルを持っています。 この中に
私にはまだあなたの希望があります。
ユーザーがニュース記事を投稿すると、テキストは 'news_text'表の中にあり、編集者が投稿を編集すると、変更されたテキストが同じ記事の新しいテキストとして挿入されます。 これは元のポスターに自分の投稿に何が変更されたかを見せるために行われます。
は現在私の挑戦になります。 私は編集者が行った編集の回数をどのように得ることができるかを理解する必要があります。 しかし、編集者自身がニュースを投稿できるということは、ユーザー名が元のポスターと同じではないすべてのニュースを検索する必要があり、news_textテーブルの重複を探す場所が自分の投稿を編集したことを意味します。
私は実際に人々が私が何をする必要があるのか理解してくれることを願っています。 あなたが私を助けることを願っています。
コメントにMarcus Adamsは、最新の編集がウェブサイトでどのように使用されたかを教えてくれました。
これは、日付/時刻フィールドには含まれません。 編集が配置されると、編集はnews_textフィールドに挿入され、新しい編集の日付/時刻スタンプがあります。 それで、それはニュース項目のためにつかむ魔法使いのテキストを決定するでしょう。これは私が正しく理解していれば、このようなものは、すべてのユーザーが作ったが、彼らは自分たち
SELECT
user.*,
COUNT(*) AS edits
FROM user
// Join posts that aren't this users
INNER JOIN news
ON news.username != user.username
// Join edits for the above posts that are this users
INNER JOIN news_text
ON news_text.news_id = news.id
AND news_text.username != user.username
なかったの記事にあった場合にのみ編集の総数を与える必要があります明らか
を持って確保し、現在および以前の間にあった編集内容をフィルタリングし、当社のユーザー(
WHERE u.username = 'myuser'
)自分の編集を考慮した自分の答えをチェックアウトしてください。 –