0

ほら、私はこの掲示板を持っています。ここでのこのクエリは問題なく機能します。

    SELECT bulletin.date,
        bulletin.title,
        bulletin.content,
        bulletin.id,
        bulletin.made_by,
        users.ID,
        users.name
    FROM bulletin, users
    WHERE bulletin.id = '12345'
        AND bulletin.made_by = users.ID
    LIMIT 1

ユーザーが自分のアカウントを削除すると、その人に関する情報が残っていないため、ユーザーテーブルから削除されるため、問題が発生しています。これに対処する他の方法があるかもしれないことは知っていますが、今は修正できません。

だから私は尋ねます:「AND bulletin.made_by = users.ID」を取得したにもかかわらず、bulletin.id が 12345 に等しい、そのクエリが bulletin.date、bulletin.title、および bulletin.content を返すようにするにはどうすればよいですか? ほら、ユーザーがまだ存在する他のすべての投稿に対してそれが必要です。

助言がありますか?

4

2 に答える 2

1

現在、あなたは を使用しています。あなたの問題を解決するために をINNER JOIN使用してください。LEFT JOIN

SELECT a.date,
       a.title,
       a.content,
       a.id,
       a.made_by,
       a.ID,
       a.name
FROM bulletin a
         LEFT JOIN users c
           ON a.made_by = c.ID
WHERE a.id = '12345'
LIMIT 1

LEFT JOINleft基本的に、2 番目のテーブルに一致する行があるかどうかに関係なく、テーブルからすべてのレコードをフェッチします。

于 2012-08-11T14:52:07.550 に答える
1

使うLEFT OUTER JOIN

SELECT b.date,
       b.title,
       b.content,
       b.id,
       b.made_by,
       b.ID,
       b.name
FROM bulletin b
LEFT OUTER JOIN users u on b.made_by = u.ID
WHERE b.id = '12345'
LIMIT 1

結合のこの素晴らしい説明を参照してください

于 2012-08-11T14:48:48.643 に答える