Нужно сделать запрос к самореференсной таблице, чтобы найти все элементы, которые НЕ являются родительскими для любого элемента

Как говорится в заголовке, мне нужно запросить самоссылающуюся таблицу, чтобы найти все элементы, которые НЕ являются родителями какого-либо элемента.

Моя таблица прикреплена в виде ссылки на изображение:

Вот моя схема:

 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)
Другие вопросы по тегам