#mysql
#mysql
Вопрос:
Например, у меня есть 2 таблицы:
CREATE TABLE IF NOT EXISTS master(
master_id INT NOT NULL AUTO_INCREMENT,
master_name VARCHAR(15) NOT NULL,
PRIMARY KEY(master_id)
) TYPE=InnoDB CHARACTER SET=UTF8;
и
CREATE TABLE IF NOT EXISTS slave(
slave_id INT NOT NULL AUTO_INCREMENT,
slave_name VARCHAR(15) NOT NULL,
master_id INT
PRIMARY KEY (slave_id),
FOREIGN KEY (master_id) REFERENCES master(master_id)
) TYPE=InnoDB CHARACTER SET=UTF8;
Как я могу проверить, подключена ли главная таблица к подчиненной таблице, а затем, если это так, я хочу знать, пуста ли подчиненная таблица?
Ответ №1:
Вы можете проверить, соединены ли две таблицы, выполнив объединение.
SELECT COUNT(*) as number_of_connections
FROM master m
INNER JOIN slave s ON (s.master_id = m.master_id)
UNION ALL
SELECT COUNT(*) as rows_in_slave
FROM slave s2
UNION ALL
SELECT COUNT(*) as rows_in_master
FROM master m2
Этот запрос вернет ровно 3 строки, которые сообщат вам количество подключений, является ли подчиненная таблица пустой и является ли главная таблица пустой соответственно.
Ответ №2:
Я не уверен, что вполне понимаю ваш вопрос, но я постараюсь ответить. Основная таблица должна быть «подключена» к подчиненной таблице, если вы создали подчиненную таблицу со ссылкой на внешний ключ FOREIGN KEY (master_id) REFERENCES master(master_id)
.
Что касается того, пуста ли подчиненная таблица: она пуста, если этот запрос возвращает столбец с нулем в нем:
SELECT COUNT(*) FROM slave