Следующий запрос возвращает количество раз, каждое значение, используемое в столбцах d1, d2, d3 и d4 в table2 (Обновлено):
SELECT table1.srno, SUM(cnt) FROM
table1,
(SELECT d1 AS srno, COUNT(d1) AS cnt FROM table2 GROUP BY d1
UNION ALL
SELECT d2 AS srno, COUNT(d2) AS cnt FROM table2 GROUP BY d2
UNION ALL
SELECT d3 AS srno, COUNT(d3) AS cnt FROM table2 GROUP BY d3
UNION ALL
SELECT d4 AS srno, COUNT(d4) AS cnt FROM table2 GROUP BY d4) AS cnt_tbl
WHERE table1.srno = cnt_tbl.srno
GROUP BY table1.srno
Try скрипку here.
Если вы повторного подсчета только один конкретный первичный ключ (например, 1), а затем попробуйте
SELECT SUM(cnt) FROM
(SELECT COUNT(*) AS cnt FROM table2 WHERE d1 = 1
UNION ALL
SELECT COUNT(*) AS cnt FROM table2 WHERE d2 = 1
UNION ALL
SELECT COUNT(*) AS cnt FROM table2 WHERE d3 = 1
UNION ALL
SELECT COUNT(*) AS cnt FROM table2 WHERE d4 = 1) AS cnt_tbl
скрипку here.
Или более элегантное решение без UNION:
SELECT SUM(cnt) FROM
(SELECT ((d1=1) + (d2=1) + (d3=1) + (d4=1)) AS cnt
FROM table2
WHERE d1 = 1 OR d2= 1 OR d3 = 1 OR d4 = 1) AS cnt_tbl
(Fiddle)
Что вы имеете в виду под "столом" здесь? Это вопрос SQL? – Bergi
Ваш вопрос полностью основан на SQL, поэтому, пожалуйста, предоставьте базу данных, которую вы используете (mysql или ...). Также должен ли он считаться для всех записей в таблице 1 или только для определенного индекса? –
Да, его вопрос SQL. – user2338384