0

I've been trying to join all the rows from two different tables. I've tried UNION and LEFT JOIN.

Right now I've just been using two separate queries and had one display after the other. I would like to merge the two queries to display at the same time.

table 1 is called 'approves' and table 2 is called 'comments'.

approves
- id
- postID
- postUserID
- userID

comments
- id
- postID
- postUserID
- userID
- comment
- date

4

3 に答える 3

6

これはUNIONの例です

select id, postID, postUserID, userID, comment, date from comments
union
select id, postID, postUserID, userID, null, null from approves 
于 2013-02-06T18:24:31.257 に答える
0

あなたのテーブルに基づいて、テーブルをできるように見えますJOIN

select *
from approves a
inner join comments c
    on a.userid = c.userid
    and a.postid = c.postid

と に基づいて、複数の列でテーブルを結合する必要があると思いpostidますuserid

INNER JOIN両方のテーブル間で一致するすべての行を返すを使用しました。approvesテーブル内のそれらのレコードのみを返したい場合は、 LEFT JOIN. 結合構文を学習するのに助けが必要な場合は、 join の優れた視覚的な説明をご覧ください。

a を使用できますが、a の各クエリの列数は等しくなければならないUNIONため、各テーブルに必要な列を選択する必要があります。UNIONしたがって、次のUNIONようになります。

select id, postid, postUserId, userId, null as comment, null as date, 'approves' as Src
from approves 
union all
select id, postid, postUserId, userId, comment, date, 'comments' as src
from comments 

srcデータがどのテーブルから来たかを判断するために使用できる、という追加の列が含まれていることに注意してください。

于 2013-02-06T18:16:22.313 に答える
0

使用している SQL を挿入できますか? 結合は両方のテーブルを結合し、結合はテーブルからすべての行を取得し、関連するすべての行を結合します。JOIN のデフォルトは内部結合です。UNION は、実質的に 2 つのテーブルの結果を結合します。テーブル a のすべての行とテーブル b の対応するコメントが必要な場合は、左結合を使用します。

于 2013-02-06T18:10:28.727 に答える