0

基本的に、次のようなmysqlクエリがあります。

mysql_query("SELECT n.title, v.value FROM posts n INNER JOIN votes v ON n.id = v.id");

そして、投稿テーブルからタイトルを取得し、投票テーブルから現在の投票値を取得する必要があります。

現時点では、投票が行われない限り、投票は投票テーブルに保存されません。したがって、投票数が 0 のすべての投稿は投票テーブルに含まれていません。

これにより、投稿 ID = 投票値 ID であるタイトルと投票値を取得しようとしているというエラーが発生します。投票テーブルにレコードがない場合、値は NULL または 0 として返されるはずですが、現時点ではクエリ全体が null として返されるため、タイトルを返すことさえできません。

これをすべて1つのクエリで修正するにはどうすればよいですか? 複数のクエリを使用する必要はありません...ありがとう:)

4

3 に答える 3

4

内部結合の代わりに左結合を使用する

内部結合では、結合の両側でテーブルの一致する行が必要です。

左結合 (または完全な名前を使用する場合は左外部結合) は、左のテーブルからすべての行を選択し、次に右のテーブルから一致する行を選択し、右のテーブルに一致する行がない場合は、求めているように null 値を返します。 .

(右外部結合もありますが、ON句内の条件を変えることで同様の効果が得られます)

于 2009-01-23T00:02:52.840 に答える
0
SELECT n.title, v.value FROM posts n LEFT JOIN votes v ON n.id = v.id
于 2009-01-23T00:03:56.800 に答える
-2

SELECT n.title, v.value FROM posts as n, votes as v WHERE n.id = v.id

それを試してみてください。

于 2009-01-23T00:04:00.497 に答える