0

だから基本的に私は2つのテーブルを持っています

投稿(単純な記事)

ここに画像の説明を入力

posts_wall (そのユーザーウォールに投稿された記事)

ここに画像の説明を入力

今、私はそれらを何らかの形で組み合わせて、それらが作成/更新された日付で並べ替えたいと思っています。投稿にアップロードがない場合、upload_id列はposts_wallテーブルからでもNULLになるため、2つの目的が得られました

  1. 2 つのテーブルを交差させます。
  2. 日付順に並べます。

また:

どの列を追加する必要がありtimelineますか? 1970年から1秒2012-01-01か数秒?13405848858

私が知っている限り、私はINTERSECTそれらをしなければなりませんが、

SELECT * FROM posts
INTERSECT
SELECT * FROM posts_wall

構文エラーが発生します。

私がこれを行っている理由は、それらを見る権利を持つ投稿と、ウォールのUSER1任意のユーザーによって投稿された投稿を見たいからです。USER1

article_or_wall_articleまた、これが記事なのか誰かの壁への投稿なのかを知るために名前を付けた別のコラムも素晴らしいでしょう。私は良いエレガントなアプローチが欲しいです

4

2 に答える 2

0

2 つのテーブルが交差する @Row Minds には、同じ数の列が必要です。以下のあなたの質問から私が理解しているのは、あなたに役立つかもしれないクエリです

Select * 
from
(
SELECT Posted_by as UserID,title, content, PostedDate
FROM posts
INTERSECT
SELECT  Sended_by as UserID,title, content,PostedWallDate as PostedDate 
FROM posts_wall
)A
Order by PostedDate desc
于 2012-07-03T12:51:57.160 に答える
0

フィールドに基づいた INNER JOIN が必要ですか? あなたの質問からは、あなたが参加したい分野が明確ではありません。

タイムスタンプの場合、どちらの場合にも長所と短所があります。タイムスタンプには変換が必要ですが、日付を簡単に比較できます。

MySQL では、どのフィールドがどのテーブルから取得され、どのように関連付けられるかを指定する必要があります。「posts」と「posts_wall」の間に意味のある JOIN が見当たりません。

両方のレコード セットが必要な場合は、2 つのテーブル間に UNION が必要です。

select field1, field2, field3 from posts
UNION field1, field2, field3 from posts_wall

いずれかのテーブルにフィールドがない場合は、適切な値とデータ型を選択し、欠落しているフィールドを置き換えます。

...UNION field1, field2, "NOTHING!" as field3 from posts_wall
于 2012-07-03T12:19:42.527 に答える