0

cars(id, name)20行を含むテーブルがあります。もう1つのテーブルcarLog(username, car, count)には、プレーヤーが購入した車をカウントする行が含まれています(車を購入していない場合に行がない場合)。

carLogテーブルに行があるのに、それを機能させることができない場合は、クエリで20台すべての車と追加の参加情報を返すようにします。

SELECT * FROM cars LEFT JOIN carLog ON cars.id=carLog.car

これは数百行を返します。20行(車ごとに1つ)を返し、ユーザー名が車を購入した場合は行の追加情報を返します。

WHERE carLog.username='Juddling'

GROUP BY、WHERE、または別の種類の結合を使用することを意図しているかどうかはわかりません。

4

2 に答える 2

6

ユーザー名条件をWHERE句から句に移動しますON

SELECT *
FROM cars
LEFT JOIN carLog
  ON cars.id=carLog.car
     AND carLog.username='Juddling'

WHERE句は、JOINがすでに完了している場合に適用されます。これは、LEFTJOINが追加したNULL行を破棄することを意味します。

于 2012-09-15T15:02:59.770 に答える
1

テーブルを外部結合から制限しているため、条件を:onではなく、に配置する必要があります。where

select * from cars
left join carLog on cars.id = carLog.car and carlog.username = 'Juddling'
于 2012-09-15T15:02:02.610 に答える