Нужно сделать запрос к самореференсной таблице, чтобы найти все элементы, которые НЕ являются родительскими для любого элемента
Как говорится в заголовке, мне нужно запросить самоссылающуюся таблицу, чтобы найти все элементы, которые НЕ являются родителями какого-либо элемента.
Моя таблица прикреплена в виде ссылки на изображение:
Вот моя схема:
CREATE TABLE IF NOT EXISTS `recursivebom`.`level` (
`level` INT NOT NULL,
PRIMARY KEY (`level`))
ENGINE = InnoDB;
-- Таблица recursivebom
,item
CREATE TABLE IF NOT EXISTS `recursivebom`.`item` (
`itemNumber` INT NOT NULL,
`quantity` DECIMAL NULL,
`cost` DECIMAL NULL,
`parentItem` INT NULL,
`level` INT NOT NULL,
PRIMARY KEY (`itemNumber`, `level`),
INDEX `fk_item_item1_idx` (`parentItem` ASC),
INDEX `fk_item_level1_idx` (`level` ASC),
CONSTRAINT `fk_item_item1`
FOREIGN KEY (`parentItem`)
REFERENCES `recursivebom`.`item` (`itemNumber`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_item_level1`
FOREIGN KEY (`level`)
REFERENCES `recursivebom`.`level` (`level`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
1 ответ
Как насчет этого?
SELECT *
FROM item
WHERE itemNumber NOT IN (SELECT parentItem FROM item)