CREATE TABLE `project` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `firm_id` INT(10) UNSIGNED NULL DEFAULT NULL, `status` ENUM('active','notactive') NOT NULL DEFAULT 'notactive', `price` SMALLINT(5) UNSIGNED NULL DEFAULT NULL, `title` VARCHAR(50) NOT NULL, `url` VARCHAR(255) NOT NULL, `description` TEXT NULL, `start` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, `end` TIMESTAMP NULL DEFAULT NULL, PRIMARY KEY (`id`), INDEX `FK_project_firm` (`firm_id`), CONSTRAINT `FK_project_firm` FOREIGN KEY (`firm_id`) REFERENCES `firm` (`id`) ON UPDATE CASCADE ON DELETE SET NULL ) COLLATE='utf8_general_ci' ENGINE=InnoDB ROW_FORMAT=DEFAULT AUTO_INCREMENT=39 CREATE TABLE `image` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `project_id` INT(10) UNSIGNED NULL DEFAULT NULL, `position` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', `date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), INDEX `FK__project` (`project_id`), INDEX `position` (`position`), CONSTRAINT `FK__project` FOREIGN KEY (`project_id`) REFERENCES `project` (`id`) ON UPDATE CASCADE ON DELETE SET NULL ) COLLATE='utf8_general_ci' ENGINE=InnoDB ROW_FORMAT=DEFAULT AUTO_INCREMENT=25
Każdy projekt może mieć przypisane do siebie wiele zdjęć, zdjęcia mają swoją pozycję. Pozycja zdjęcia może ulegać zmianie. Chciałbym wyciągnąć z bazy wszystkie wpisy, gdzie status projektu jest równy active, posiada zdjęcie i dodatkowo chcę id zdjęcia o najniższej pozycji.
Całe złączenie mam, tylko nie wiem jak wymusić pobranie nie losowego zdjęcia z projektu, a tego który ma najniższą pozycję
SELECT project.id,project.title, project.url, project.description, firm.name, image.id, image.position FROM project LEFT JOIN firm ON project.firm_id = firm.id JOIN image ON image.project_id = project.id WHERE project.STATUS = 'active' ORDER BY 'end' DESC