5

私はテーブルを持っています - コメント。ユーザーは、サイトのメンバーでなくても投稿できますが、メンバーであれば詳細を表示したいと考えています。

そのため、メンバーではないユーザーがコメントした場合、投稿を表示しますが、プロフィールを持っていないため、プロフィールにリンクしません。

したがって、次のクエリでは、結合がない場合でも行を返したいと考えています。

select wc.comment, wc.comment_by_name, wc.user_id, u.url from comments wc
join users u on wc.wag_uid = u.user_id
where id = '1237' group by wc.comment order by wc.dateadded desc

戻りたい:

comment    comment_by_name    user_id    url
-------    ---------------    -------    ----
hello      dan                12         /dan
hey        jane                          /jane
world      jack               10         /jack

ただし、ジェーンには user_id がないため、上記はジェーンのデータを返しません

結合が null の場合でもすべてのデータを返す方法はありますか?

4

1 に答える 1

8

LEFT JOIN代わりに使用

SELECT  wc.comment, wc.comment_by_name, wc.user_id, u.url 
FROM    comments wc
        LEFT JOIN users u 
           on wc.wag_uid = u.user_id
WHERE id = '1237' 
GROUP BY wc.comment 
ORDER BY wc.dateadded DESC

基本的にINNER JOIN、一方のテーブルのレコードが他方のテーブルで少なくとも 1 つの一致を持つレコードのみを選択し、左側のテーブル (この場合はLEFT JOIN)からすべての行を選択し、他のテーブルで一致しないかどうかを選択します。comments

于 2012-11-24T07:07:10.800 に答える