Вот решение всех промежуточных шагов во время работы его:
Во-первых, найти все плоды с DocId 111:
SELECT term, count FROM fruits
WHERE docID = 111;
Затем найти все плоды с DocId 222:
SELECT term, count FROM fruits
WHERE docID = 222;
Присоединяйтесь к ним вместе на срок. Это концептуальный скачок в том, что вы должны увидеть оригинальный запрос выше в качестве одного набора, а затем соединить два набора вместе:
SELECT *
FROM (SELECT term, count FROM fruits
WHERE docID = 111) as f1
INNER JOIN
(SELECT term, count FROM fruits
WHERE docID = 222) as f2
ON f1.term = f2.term;
Умножить два «счета» столбцы:
SELECT f1.count * f2.count as multicount
FROM (SELECT term, count FROM fruits
WHERE docID = 111) as f1
INNER JOIN
(SELECT term, count FROM fruits
WHERE docID = 222) as f2
ON f1.term = f2.term;
И наконец:
Суммировать все эти столбцы вместе. Еще один концептуальный прыжок, вы обернуть весь запрос, который вы имели прежде в обертку, а затем делать то, чтобы результаты этого набора, и который дает окончательное решение:
SELECT sum(multicount) total
FROM (
SELECT f1.count * f2.count as multicount
FROM (SELECT term, count FROM fruits
WHERE docID = 111) as f1
INNER JOIN
(SELECT term, count FROM fruits
WHERE docID = 222) as f2
ON f1.term = f2.term;
) as all_fruits;
Try код: SQLFiddle
Откуда берутся эти цифры '3 * 1 + 2 * 9 + 4 * 0 ...'? пожалуйста, объясни? –
эти числа соответствуют значениям столбца «count» для «term», которые являются общими для 111 и 222 –