Подсчет количество строк из двух таблиц sql

359
28 мая 2017, 20:28

Никак не могу сообразить как осуществить sql запрос таким образом, чтобы подсчитать соответствующие поля в связки двух таблиц.

Имеется следующая структура таблиц:

CREATE TABLE `tbl1` (
`id` INT(11) UNSIGNED NOT NULL auto_increment,
`title` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)) ENGINE = MyISAM DEFAULT CHARSET = utf8;

CREATE TABLE `tbl2` (
`id` INT(11) UNSIGNED NOT NULL auto_increment,
`tbl1_id` INT(11) UNSIGNED NOT NULL,
INDEX (`tbl1_id`),
PRIMARY KEY (`id`)) ENGINE = MyISAM DEFAULT CHARSET = utf8;

Нужно посчитать количество всех строк первой таблицы и именно тех, которых нет во второй. Первая таблица связана со второй по следующим полям: tbl1.id и tbl2.tbl1_id То-есть, если 20 idшников первой таблицы нет во второй, то результат должен быть 20. Каким образом можно подсчитать?

Answer 1

Используйте left join. Соединяете таблицы, смотрите, какие строки не соединились, считаете их количество:

select count(t1.id)
from tbl1 t1 left join tbl2 t2 on t1.id = t2.tl1_id
where t2.id is null
READ ALSO
Ошибка unknown column in 'where clause'

Ошибка unknown column in 'where clause'

Работаю с CIВыполняю запрос:

317
не подключается к БД MySQL

не подключается к БД MySQL

После установки сервера EE GlashFish перестала работать БДв netstat -na нет строчки с портом 3306

218
Lipe RMI libgdx android не подключается к серверу

Lipe RMI libgdx android не подключается к серверу

Делал по примеру https://stackoverflowcom/questions/13788738/using-java-rmi-in-android-application

326
Как вывести на экран значение объекта, используемого интерфейсом Map?

Как вывести на экран значение объекта, используемого интерфейсом Map?

Проблема в том, что не знаю как вывести какой либо объект типа uaedu

536