1

以下のクエリは、テーブルにloginidとの両方を持つ行を返します。 ip2bumps

bumpsテーブル内のすべての行にがありますがip2、一部にのみがありますloginid

ip2以下のクエリを取得して、すべての行と次loginidの行を返すにはどうすればよいloginidですか?

$sqlStrend = "SELECT e.loginid, e.time, l.username, e.ip2
      FROM bumps e
      JOIN login l ON e.loginid = l.loginid
     WHERE e.submissionid = '$submissionid' 
  ORDER BY e.time DESC
  LIMIT $offset, $rowsperpage";
4

2 に答える 2

3

INNER JOIN(によって暗示される)ではなく、JOINこれをに変更する必要がLEFT JOINあります。これは、左側のテーブルのすべての行と、NULL関連する行または関連するテーブルの行が存在しない行を返します。

SELECT e.loginid, e.time, l.username, e.ip2
FROM bumps e
LEFT JOIN login l ON e.loginid = l.loginid
WHERE e.submissionid = '$submissionid' 
ORDER BY e.time DESC
LIMIT $offset, $rowsperpage

この優れたウィキペディアの記事またはJeffAtwoodの結合の視覚的説明でさまざまなJOINタイプを確認してください。

于 2012-06-19T01:51:58.903 に答える
1

あなたは実際にそこにほとんどの道を進んでいます。バンプからすべての行を取得し、存在するログイン用の行を取得するには、LEFTJOINが必要です。

$sqlStrend = "SELECT e.loginid, e.time, l.username, e.ip2
      FROM bumps e
      LEFT JOIN login l ON e.loginid = l.loginid
     WHERE e.submissionid = '$submissionid' 
  ORDER BY e.time DESC
  LIMIT $offset, $rowsperpage";
于 2012-06-19T01:53:12.060 に答える