2012-02-16 2 views
0
 
CREATE TABLE tablea ( 
    id char(25) NULL, 
    qid int(11) NULL 
    ) 
GO 
INSERT INTO tablea(id, qid) 
    VALUES('A', 3),('B', 3),('C', 3),('D', 3) 
GO 

CREATE TABLE tableb ( 
    pk int(11) NOT NULL, 
    qid varchar(25) NULL, 
    cnt varchar(25) NULL 
    ) 
GO 

INSERT INTO tableb(pk, qid, cnt) 
    VALUES(0, '3', 'A'),(1, '3', 'D'),(2, '3', 'A'),(3, '3', 'C'),(4, '3', 'A'),(5, '3', 'D'),(6, '3', 'A'),(7, '3', 'A'), 
GO 

По подсчету TableB общий Cnt в соответствии с идентификатором таблицыA: A = 5, B = 0, C = 1, D = 2. При выборе группы count (Cnt) по ID результат не включает B, то есть результат: A = 5, C = 1, D = 2.Есть ли агрегат с использованием левого или правого оператора объединения в mySQL

Как включить B = 0 с помощью mySQL.

+0

редактировать: Я не могу читать :) – Dan

+0

опубликовать отборное заявление SQL, который вы пытаетесь выполнить, и я могу вам помочь. – Ross

ответ

1

Я думаю, что вы пытаетесь достичь;

SELECT id, COUNT(cnt) FROM TableA LEFT JOIN TableB ON id=cnt GROUP BY id; 

Какой будет рассчитывать в TableB вхождения всех идентификаторов в TableA, даже если они не существуют в TableB.

(примечание стороны, ваша именование немного трудно понять)

+0

Спасибо. Цените свое время. – Gian