0

私はこのテーブルを持っています

追跡

  • ID
  • リファラー
  • 状態
  • セッション

2つのテーブル(それ自体と結合)の行をカウントしたい

SELECT COUNT(t1.id), COUNT(t2.id)
FROM tracking t1
INNER JOIN tracking t2 on t2.session = t1.session AND t2.status = 2
WHERE t1.referer = 'http://google.com' AND t1.status = 1

このデータで:

id | referer | status | session

1 | http://google.com | 1 | ABC

2 | ################# | 2 | ABC

(1,1) を取得する必要がありますが、(1,null) を取得しています

私はRIGHT JOINで試しましたが、どちらも機能していません。

4

1 に答える 1

2

LEFT JOINの代わりに使用INNER JOIN:

SELECT COUNT(t1.id), COUNT(t2.id)
FROM tracking t1
LEFT JOIN tracking t2 on t2.session = t1.session AND t2.status = 2
WHERE t1.referer = 'http://google.com' AND t1.status = 1;

t1は「左」の表で、t2は「右」の表です。を使用して、右側のテーブル ( ) に一致があるかどうかに関係なくLEFT JOIN、左側のテーブル ( ) からすべての行を取得することを確認します。t1t2

于 2013-11-14T03:19:14.817 に答える