简体   繁体   中英

How to filter by most recent date in a 3 table SQL query

I have a Mysql database of a school, where for each Course (pj001_courses), there are one ore more related lessons (tasks). In the middle there is a joining table (pj001_courses_tasks_c).

pj001_courses: (id, name)

pj001_courses_tasks_c: (id, pj001_courses_taskspj001_courses_ida, pj001_courses_taskstasks_idb)

tasks: (id, name, date_start, date_modified, status)

WHERE: pj001_courses.id = pj001_courses_tasks_c.pj001_courses_taskspj001_courses_ida AND tasks.id = pj001_courses_tasks_c. pj001_courses_taskstasks_idb

What I'm trying to obtain with my query, is a list of all the courses with the most recent 'completed' lesson (status='completed'), that will include the following fields:

Corso, Id corso, idlez, Lezione, date_start, date_modified

Here below, you can find the code to create a sample mysql test database:

 -- phpMyAdmin SQL Dump -- version 4.0.10deb1 -- http://www.phpmyadmin.net -- -- Host: localhost -- Generato il: Apr 07, 2017 alle 08:24 -- Versione del server: 5.5.53-0ubuntu0.14.04.1 -- Versione PHP: 5.5.9-1ubuntu4.20 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Database: `speak_italy_stov` -- -- -------------------------------------------------------- -- -- Struttura della tabella `pj001_courses` -- CREATE TABLE IF NOT EXISTS `pj001_courses` ( `id` char(36) NOT NULL, `name` varchar(255) DEFAULT NULL, `date_entered` datetime DEFAULT NULL, `date_modified` datetime DEFAULT NULL, `modified_user_id` char(36) DEFAULT NULL, `created_by` char(36) DEFAULT NULL, `description` text, `deleted` tinyint(1) DEFAULT '0', `assigned_user_id` char(36) DEFAULT NULL, `startdate` date DEFAULT NULL, `startlevel` varchar(5) DEFAULT NULL, `time` varchar(5) DEFAULT NULL, `lessonsday` text, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; -- -- Dump dei dati per la tabella `pj001_courses` -- INSERT INTO `pj001_courses` (`id`, `name`, `date_entered`, `date_modified`, `modified_user_id`, `created_by`, `description`, `deleted`, `assigned_user_id`, `startdate`, `startlevel`, `time`, `lessonsday`) VALUES ('3d87bac4-49b0-3acb-3010-56684570afd9', 'Course1', '2015-12-09 15:14:11', '2017-04-06 14:09:28', '1', '1', NULL, 0, '', NULL, NULL, NULL, NULL), ('bb9311ed-8e1b-7715-9222-565f2e684b49', 'Course2', '2015-12-02 17:48:24', '2017-04-06 12:29:58', '1', 'e07880a3-a57d-a20c-9e25-565eb7af093f', NULL, 0, '', '2015-10-14', '80+', '12.45', '^Tuesday^,^Friday^'), ('c608ec6d-960e-eb4f-760d-577b81007df9', 'Course3', '2016-07-05 09:43:30', '2017-04-06 12:31:22', '1', '1', NULL, 0, '', NULL, NULL, NULL, NULL), ('ce7c7bb1-c511-82e5-40bf-56616a7a10cc', 'Course4', '2015-12-04 10:27:39', '2017-04-06 12:35:11', '1', 'c0aa6b17-16d0-baea-c4ae-566162ba3706', NULL, 0, '', '2015-10-05', '10', '10.45', '^Monday^,^Thursday^'), ('eb914486-79d6-07e6-8263-566188671f7a', 'Course5', '2015-12-04 12:33:05', '2016-06-28 13:23:41', '1', 'e07880a3-a57d-a20c-9e25-565eb7af093f', NULL, 0, '', '2015-10-12', 'L.41', '17.00', '^Monday^,^Thursday^'), ('f05b48a8-5a13-5e9f-a823-58e6373e80d7', 'Course6', '2017-04-06 12:41:06', '2017-04-06 12:41:06', '1', '1', NULL, 0, NULL, NULL, '', '', ''); -- -------------------------------------------------------- -- -- Struttura della tabella `pj001_courses_tasks_c` -- CREATE TABLE IF NOT EXISTS `pj001_courses_tasks_c` ( `id` varchar(36) NOT NULL, `date_modified` datetime DEFAULT NULL, `deleted` tinyint(1) DEFAULT '0', `pj001_courses_taskspj001_courses_ida` varchar(36) DEFAULT NULL, `pj001_courses_taskstasks_idb` varchar(36) DEFAULT NULL, PRIMARY KEY (`id`), KEY `pj001_courses_tasks_ida1` (`pj001_courses_taskspj001_courses_ida`), KEY `pj001_courses_tasks_alt` (`pj001_courses_taskstasks_idb`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; -- -- Dump dei dati per la tabella `pj001_courses_tasks_c` -- INSERT INTO `pj001_courses_tasks_c` (`id`, `date_modified`, `deleted`, `pj001_courses_taskspj001_courses_ida`, `pj001_courses_taskstasks_idb`) VALUES ('115cbbd6-a061-5ba8-feb4-56756fa6fa6c', '2015-12-19 14:55:56', 0, '3d87bac4-49b0-3acb-3010-56684570afd9', 'fb94089f-57e9-0918-c98f-56756fa424d4'), ('16ed5813-c5d1-f831-9887-56efc618e85a', '2017-04-06 12:18:23', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '15c65e64-83d5-e27e-9ded-56efc6034ec7'), ('17ef5857-b4a6-6dbf-dedd-58cf9a076172', '2017-03-20 09:03:40', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '1756da3f-3356-1dea-96b4-58cf9adab8ea'), ('1d05994a-45fa-0370-5304-58cf9b51f8e1', '2017-03-20 09:04:53', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '1c7f7856-11e6-22a7-786b-58cf9b7d42f4'), ('211b53d7-3bb3-5afe-af27-58cf9ac53d35', '2017-03-20 09:03:40', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '2092dc4e-ad01-34b8-0b80-58cf9a0b0c90'), ('23e767e6-a6c1-304f-92e3-5671a4ec937d', '2017-04-06 12:38:05', 1, 'eb914486-79d6-07e6-8263-566188671f7a', '226c2475-16a3-e0af-efaa-5671a483f0e2'), ('24c80d60-f81d-c32f-a368-56684568c447', '2015-12-09 15:16:30', 0, 'eb914486-79d6-07e6-8263-566188671f7a', '18f60d90-0554-4880-760b-5668455dd961'), ('27228e24-b7ab-a384-8fe6-58cf9bdbcd56', '2017-03-20 09:04:53', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '26af672a-823d-2d07-2146-58cf9be2b6f2'), ('284f980c-9dab-2a7f-3526-57738ad682dc', '2017-04-06 12:18:23', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '2733a707-e734-6a68-c63c-57738a212cd3'), ('2be389fe-1c71-ebde-414e-56616dc0040d', '2015-12-04 10:41:15', 0, 'ce7c7bb1-c511-82e5-40bf-56616a7a10cc', '2996ca74-f2d5-a0bf-0c92-56616d7db8d4'), ('2fdea17a-a236-95b0-586f-58cf9b041a93', '2017-03-20 09:04:53', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '2f72251d-5ca1-9890-1dc7-58cf9b790e86'), ('30afc042-2d41-ad85-1ace-566b214472a2', '2015-12-11 19:16:20', 0, '3d87bac4-49b0-3acb-3010-56684570afd9', '2f19dd24-1c2f-a245-1856-566b214d7abd'), ('386ce887-a266-8ef6-7d07-58cf9b0b74bb', '2017-03-20 09:04:53', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '37f7bc74-46c4-0094-f3ad-58cf9b2f00f6'), ('3ac48770-4ed0-fd25-b87f-56616ec579cf', '2015-12-04 10:45:59', 0, 'ce7c7bb1-c511-82e5-40bf-56616a7a10cc', '39109517-1f24-8048-4fca-56616e12fc48'), ('3e440aab-0536-7521-7ac5-5668440a96d9', '2015-12-09 15:13:02', 0, 'bb9311ed-8e1b-7715-9222-565f2e684b49', '16ce0346-064f-c93e-19ca-5668427c30b4'), ('4ab9d6f9-0e63-a8c4-5b7a-58cfd830770a', '2017-04-06 12:18:23', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '4a1d0654-39fe-1c37-7c0c-58cfd8bd7105'), ('4f02bb09-7576-b8bc-7187-58cf9cee8060', '2017-03-20 09:12:42', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '4e78ed60-24c8-fcf8-7b62-58cf9ccac2b4'), ('4faff722-1eb8-05ec-2ffe-56718c87b046', '2017-04-06 12:37:27', 1, 'eb914486-79d6-07e6-8263-566188671f7a', '4dd39006-f652-3ae1-d6a6-56718c46617e'), ('59d2498f-8931-7716-3e7b-58e64b5ae4c1', '2017-04-06 14:08:03', 0, '3d87bac4-49b0-3acb-3010-56684570afd9', '595a2e58-76bc-c134-3cef-58e64b59e8d5'), ('5c3f2895-e160-04e9-d79e-58cfd8565416', '2017-03-20 13:26:40', 0, '3d87bac4-49b0-3acb-3010-56684570afd9', '5ba36af1-8f2b-075b-926f-58cfd87a83e7'), ('672b6c68-fcc6-3945-7a47-58cfd8b2d040', '2017-04-06 12:18:23', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '66a5b45f-4173-387f-8f3d-58cfd8f91b9d'), ('6944176d-6f2b-3369-1e76-5672a363aa43', '2017-04-06 12:38:27', 1, 'eb914486-79d6-07e6-8263-566188671f7a', '6693cd37-0b74-1d97-c395-5672a343260d'), ('6ce06c21-5db1-a921-a37e-57729c1877d4', '2017-04-06 12:18:23', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '743cf2ca-e983-2f08-a2fb-5772966547a1'), ('6d43042f-8f79-8d06-7d9e-58cf9bed69db', '2017-03-20 09:10:57', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '65730b79-3f6e-4385-c83e-58cf9b3a6cb4'), ('6e8d9e2b-0300-4b67-b639-58cf9cc1d141', '2017-03-20 09:12:42', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '6e1bd69b-6501-95d5-1aa8-58cf9c44c529'), ('70d706d1-ddba-1174-e73a-58cfd83ed1e5', '2017-04-06 12:18:23', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '705d3dad-8f77-04a6-05c5-58cfd8124fd5'), ('7613bd00-0397-5b93-5aa9-57738ba67cca', '2016-06-29 08:47:35', 0, '3d87bac4-49b0-3acb-3010-56684570afd9', '7488d168-758c-f760-ed28-57738b5565db'), ('78107ede-3f85-80f6-bad0-56718c341009', '2015-12-16 16:09:30', 0, 'eb914486-79d6-07e6-8263-566188671f7a', '760f5ee8-6470-9291-6733-56718c949974'), ('790ba77f-4723-e52a-b991-58cf9c9da98c', '2017-03-20 09:12:42', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '788c0fcf-c454-c9fb-3af3-58cf9c82b7d3'), ('81af0547-2f08-61d6-ed81-577b8160db2a', '2016-07-05 09:44:33', 0, 'c608ec6d-960e-eb4f-760d-577b81007df9', '80859612-d91f-bd91-8198-577b81c9dd09'), ('852fc19f-2f48-942f-0ecc-58cf9c5abcc7', '2017-03-20 09:12:42', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '8462c635-7ccc-dc53-d152-58cf9c3d0222'), ('87a6b49d-5943-4a26-7193-566aac243068', '2017-04-06 12:18:23', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '85bd5d08-110b-5bce-f564-566aac8ffa97'), ('8aec1222-0b3e-b509-5801-58e63152154f', '2017-04-06 12:16:49', 0, '3d87bac4-49b0-3acb-3010-56684570afd9', '8a635f3b-9e0f-16aa-5532-58e631257729'), ('936b09a7-3940-e350-6815-56616eeff1c5', '2015-12-04 10:43:35', 0, 'ce7c7bb1-c511-82e5-40bf-56616a7a10cc', '92a4c747-b1b7-2949-bcf6-56616ee3b065'), ('9a2359bb-6fc9-ed44-7c81-58cfb514f537', '2017-03-20 13:26:13', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '999d63e2-67a7-b3a2-b236-58cfb505406b'), ('9b3b1f2b-3e3e-30fe-e9a5-58cf9de1a73b', '2017-03-20 10:57:33', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', '9aac98ea-703d-5aef-391d-58cf9d973ff2'), ('9f230245-53e5-cd01-e775-577b8404ac60', '2016-07-05 09:58:43', 0, 'c608ec6d-960e-eb4f-760d-577b81007df9', '8c8404b6-4e53-5f2b-fcce-577b84f9dceb'), ('9f97d432-9484-5417-7818-58e6352168ff', '2017-04-06 12:34:10', 0, 'ce7c7bb1-c511-82e5-40bf-56616a7a10cc', '9ecdc18e-9187-da7e-54d9-58e635cddf77'), ('a2a1b248-dd8a-a7cd-fca6-56616e6c40c8', '2015-12-04 10:43:35', 0, 'ce7c7bb1-c511-82e5-40bf-56616a7a10cc', 'a2058842-e181-b794-6343-56616ef2e0b2'), ('a680033e-316b-ef9b-0dde-58cf9d9c632a', '2017-03-20 10:57:33', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', 'a5fc3006-fd64-e9dc-fb94-58cf9d5debdc'), ('a81bbdd2-b462-b6d5-55a7-567673ca4ad5', '2015-12-20 09:25:15', 0, 'ce7c7bb1-c511-82e5-40bf-56616a7a10cc', 'a6c97a12-c6b4-f178-acc1-567673523d06'), ('af0ef471-7dca-da91-6bc7-56616e9eb398', '2017-04-06 12:32:45', 1, 'ce7c7bb1-c511-82e5-40bf-56616a7a10cc', 'ae606f3d-5370-9abf-369a-56616e559357'), ('af4cbeee-9f5a-d55a-5fbc-58cf9d6f385e', '2017-03-20 10:57:33', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', 'aed7b370-1c60-2390-716c-58cf9d9f3d0c'), ('b530b867-498a-bd70-65cc-58cfb526254b', '2017-03-20 13:26:13', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', 'b4b53dca-3ca7-a5ad-84fd-58cfb507e8a0'), ('b7d42855-3f4a-4bec-ada7-58cf9def096e', '2017-03-20 10:57:33', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', 'b75a7e3a-3a04-e644-bbeb-58cf9de32173'), ('ba70dbac-b9c4-b01a-ceb7-56616ef2ea42', '2017-04-06 12:32:45', 1, 'ce7c7bb1-c511-82e5-40bf-56616a7a10cc', 'b9d7250f-4971-05b8-ebe2-56616e43f6bc'), ('c02eaa05-8b85-9af0-e9e8-58cfb53f574b', '2017-03-20 13:26:13', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', 'bf7d328c-47d4-8d1c-bafe-58cfb5cc2d81'), ('cb55beaf-b39f-8d78-c379-58cfb503c909', '2017-03-20 13:26:13', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', 'cadc200c-4de2-9c78-f75a-58cfb5f67856'), ('cd3a0876-9928-64ec-2d1f-566aab4e8926', '2015-12-11 10:56:48', 0, 'bb9311ed-8e1b-7715-9222-565f2e684b49', 'b15c0722-19da-79bf-51b2-566aabefc417'), ('d24a2cd1-0922-9e67-3c8a-56616fa70aef', '2017-04-06 12:32:45', 1, 'ce7c7bb1-c511-82e5-40bf-56616a7a10cc', 'd203b35d-38b2-3d9c-1b46-56616f474d3c'), ('d91d8d9d-6852-25e9-5f0b-56616f917b61', '2017-04-06 12:32:45', 1, 'ce7c7bb1-c511-82e5-40bf-56616a7a10cc', 'd8c9630e-4299-6767-e0c4-56616f979c7e'), ('db20a6c0-30b6-87d4-dd8f-577b8154c1b5', '2016-07-05 09:44:04', 0, 'c608ec6d-960e-eb4f-760d-577b81007df9', 'd9fed2e5-a303-e3d6-0c0c-577b814f9e4c'), ('de0951ca-9677-b28e-99a9-56616f275c90', '2017-04-06 12:32:45', 1, 'ce7c7bb1-c511-82e5-40bf-56616a7a10cc', 'ddc93703-d567-a464-22bc-56616f69224c'), ('e4c778d6-5edf-a815-afb4-58cf9bc573f8', '2017-03-20 09:10:57', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', 'e44fe420-a396-d951-cb7c-58cf9ba34f8a'), ('e61ea6cf-aafc-b1d8-f7d8-56616ff24565', '2017-04-06 12:32:45', 1, 'ce7c7bb1-c511-82e5-40bf-56616a7a10cc', 'e5ce5ab1-2e65-2235-400e-56616fb9f5f6'), ('e9c70b0c-f5d5-c08f-4249-58cf9a23ca90', '2017-03-20 09:03:40', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', 'e1ce0b22-74ab-11e8-b4c8-58cf9a86acf8'), ('ebe3092e-a344-00f4-8b5e-57728661f273', '2017-04-06 12:18:23', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', 'c3d209bb-0a2b-a6a9-f215-5772867b4603'), ('ee071730-fd54-a102-de1e-58cf9a9662fd', '2017-03-20 09:03:55', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', 'ed65a8a5-f409-b7f2-c171-58cf9a17cc85'), ('eee4ddd2-d929-838f-2527-58cf9bf35c6b', '2017-03-20 09:10:57', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', 'ee7c27b6-9739-e6d0-7749-58cf9b82a093'), ('f1470127-1225-5257-b1cc-58cf9bea895c', '2017-03-20 09:10:57', 1, '3d87bac4-49b0-3acb-3010-56684570afd9', 'e9f2030e-76f7-852e-3e7d-58cf9b407424'); -- -------------------------------------------------------- -- -- Struttura della tabella `tasks` -- CREATE TABLE IF NOT EXISTS `tasks` ( `id` char(36) NOT NULL, `name` varchar(50) DEFAULT NULL, `date_entered` datetime DEFAULT NULL, `date_modified` datetime DEFAULT NULL, `modified_user_id` char(36) DEFAULT NULL, `created_by` char(36) DEFAULT NULL, `description` text, `deleted` tinyint(1) DEFAULT '0', `assigned_user_id` char(36) DEFAULT NULL, `status` varchar(100) DEFAULT 'Not Started', `date_due_flag` tinyint(1) DEFAULT '0', `date_due` datetime DEFAULT NULL, `date_start_flag` tinyint(1) DEFAULT '0', `date_start` datetime DEFAULT NULL, `parent_type` varchar(255) DEFAULT NULL, `parent_id` char(36) DEFAULT NULL, `contact_id` char(36) DEFAULT NULL, `priority` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_tsk_name` (`name`), KEY `idx_task_con_del` (`contact_id`,`deleted`), KEY `idx_task_par_del` (`parent_id`,`parent_type`,`deleted`), KEY `idx_task_assigned` (`assigned_user_id`), KEY `idx_task_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; -- -- Dump dei dati per la tabella `tasks` -- INSERT INTO `tasks` (`id`, `name`, `date_entered`, `date_modified`, `modified_user_id`, `created_by`, `description`, `deleted`, `assigned_user_id`, `status`, `date_due_flag`, `date_due`, `date_start_flag`, `date_start`, `parent_type`, `parent_id`, `contact_id`, `priority`) VALUES ('15c65e64-83d5-e27e-9ded-56efc6034ec7', 'c1lesson1', '2016-03-21 10:02:12', '2017-04-06 12:18:23', '1', '1', NULL, 1, '1', 'Completed', 0, '2016-03-18 10:45:00', 0, '2016-03-18 10:00:00', NULL, '', '', 'High'), ('16ce0346-064f-c93e-19ca-5668427c30b4', 'c2lesson_first_completed', '2015-12-09 15:03:11', '2017-04-06 12:29:16', '1', '1', NULL, 0, '1', 'Completed', 0, '2015-12-10 11:00:00', 0, '2015-12-10 10:00:00', NULL, '', '', 'High'), ('18f60d90-0554-4880-760b-5668455dd961', 'c5lesson1', '2015-12-09 15:16:30', '2017-04-06 12:36:42', '1', '1', NULL, 0, '1', 'Not Started', 0, '2015-12-12 11:00:00', 0, '2015-12-12 10:00:00', NULL, '', '', 'High'), ('226c2475-16a3-e0af-efaa-5671a483f0e2', 'nocourse_lesson2', '2015-12-16 17:52:23', '2017-04-06 12:40:24', '1', '1', NULL, 0, '1', 'Not Started', 0, '2015-12-17 11:00:00', 0, '2015-12-17 10:00:00', NULL, '', '', 'High'), ('2996ca74-f2d5-a0bf-0c92-56616d7db8d4', 'c4lesson3', '2015-12-04 10:41:15', '2017-04-06 12:34:36', '1', 'c0aa6b17-16d0-baea-c4ae-566162ba3706', NULL, 0, 'c0aa6b17-16d0-baea-c4ae-566162ba3706', 'Completed', 0, '2015-10-05 09:30:00', 0, '2015-10-05 08:45:00', NULL, '', '', 'High'), ('2f19dd24-1c2f-a245-1856-566b214d7abd', 'c1lesson_last_completed', '2015-12-11 19:16:20', '2017-04-06 12:26:34', '1', '1', NULL, 0, '1', 'Completed', 0, '2015-12-16 11:00:00', 0, '2015-12-16 10:00:00', NULL, '', '', 'High'), ('39109517-1f24-8048-4fca-56616e12fc48', 'c4lesson4', '2015-12-04 10:45:59', '2017-04-06 12:35:11', '1', 'c0aa6b17-16d0-baea-c4ae-566162ba3706', NULL, 0, 'c0aa6b17-16d0-baea-c4ae-566162ba3706', 'Completed', 0, '2015-10-08 09:30:00', 0, '2015-10-08 08:45:00', NULL, '', '', 'High'), ('3b0e7a1e-543c-ea43-5a5c-565ee2d8a787', 'GWENT - VR', '2015-12-02 12:20:48', '2017-04-06 12:39:20', '1', 'e07880a3-a57d-a20c-9e25-565eb7af093f', NULL, 0, '36fcf0ba-7cd8-1195-2825-5655fd33eabd', 'Not Started', 0, '2015-10-14 11:30:00', 0, '2015-10-14 10:45:00', NULL, '', '', 'High'), ('3d62fc14-f606-a737-d76c-565ee38e767b', 'GWENT - VR', '2015-12-02 12:28:27', '2017-04-06 12:39:20', '1', 'e07880a3-a57d-a20c-9e25-565eb7af093f', NULL, 1, '36fcf0ba-7cd8-1195-2825-5655fd33eabd', 'Not Started', 0, '2015-10-23 11:30:00', 0, '2015-10-23 10:45:00', NULL, '', '', 'High'), ('4dd39006-f652-3ae1-d6a6-56718c46617e', 'maghull test 2', '2015-12-16 16:09:01', '2017-04-06 12:37:27', '1', '1', NULL, 1, '1', 'Not Started', 0, '2015-12-12 11:00:00', 0, '2015-12-12 10:00:00', NULL, '', '', 'High'), ('595a2e58-76bc-c134-3cef-58e64b59e8d5', 'c1lesson_last_completed', '2017-04-06 14:08:03', '2017-03-16 14:09:28', '1', '1', NULL, 0, '1', 'Completed', 0, '2015-12-16 11:00:00', 0, '2015-12-16 10:00:00', NULL, '', '', 'High'), ('5ba36af1-8f2b-075b-926f-58cfd87a83e7', 'c1lesson_notyetcompleted', '2017-03-20 13:26:40', '2017-04-06 12:27:12', '1', '1', NULL, 0, 'a691ed76-ef37-ad18-4450-561397563eee', 'Not Started', 1, NULL, 1, NULL, NULL, '', '', 'High'), ('6693cd37-0b74-1d97-c395-5672a343260d', 'nocourse_lesson1', '2015-12-17 11:59:11', '2017-04-06 12:39:59', '1', '1', NULL, 0, '1', 'Completed', 0, '2015-12-18 15:00:00', 0, '2015-12-18 14:00:00', NULL, '', '', 'High'), ('7488d168-758c-f760-ed28-57738b5565db', 'c1lesson1', '2016-06-29 08:47:35', '2017-04-06 12:15:28', '1', '1', NULL, 0, '1', 'Completed', 0, '2015-04-06 09:45:00', 0, '2015-04-06 09:00:00', NULL, '', '', 'High'), ('760f5ee8-6470-9291-6733-56718c949974', 'c5lesson2', '2015-12-16 16:09:30', '2017-04-06 12:37:50', '1', '1', NULL, 0, '1', 'Not Started', 0, '2015-12-14 11:00:00', 0, '2015-12-14 10:00:00', NULL, '', '', 'High'), ('80859612-d91f-bd91-8198-577b81c9dd09', 'c3lesson2', '2016-07-05 09:44:33', '2017-04-06 12:24:08', '1', '1', NULL, 0, '1', 'Completed', 1, NULL, 0, '2016-07-05 09:00:00', NULL, '', '', 'High'), ('8a635f3b-9e0f-16aa-5532-58e631257729', 'c1lesson_first_completed', '2017-04-06 12:16:49', '2017-04-06 12:27:36', '1', '1', NULL, 0, '1', 'Completed', 0, '2015-04-06 09:45:00', 0, '2015-04-06 09:00:00', NULL, '', '', 'High'), ('8c8404b6-4e53-5f2b-fcce-577b84f9dceb', 'c3lesson_last_completed', '2016-07-05 09:58:43', '2017-04-06 12:31:22', '1', '1', NULL, 0, '1', 'Completed', 1, NULL, 0, '2016-07-06 09:00:00', NULL, '', '', 'High'), ('92a4c747-b1b7-2949-bcf6-56616ee3b065', 'c4lesson2', '2015-12-04 10:43:35', '2017-04-06 12:33:52', '1', 'c0aa6b17-16d0-baea-c4ae-566162ba3706', NULL, 0, 'a691ed76-ef37-ad18-4450-561397563eee', 'Completed', 0, '2015-10-04 09:30:00', 0, '2015-10-04 08:45:00', NULL, '', '', 'High'), ('9ecdc18e-9187-da7e-54d9-58e635cddf77', 'c4lesson2', '2017-04-06 12:34:10', '2017-04-06 12:34:10', '1', '1', '', 0, 'a691ed76-ef37-ad18-4450-561397563eee', 'Not Started', 0, '2015-10-04 09:30:00', 0, '2015-10-04 08:45:00', NULL, NULL, NULL, 'High'), ('a2058842-e181-b794-6343-56616ef2e0b2', 'c4lesson4_last_completed', '2015-12-04 10:43:35', '2017-04-06 12:35:49', '1', 'c0aa6b17-16d0-baea-c4ae-566162ba3706', NULL, 0, 'a691ed76-ef37-ad18-4450-561397563eee', 'Not Started', 0, '2015-10-19 09:30:00', 0, '2015-10-19 08:45:00', NULL, '', '', 'High'), ('a6c97a12-c6b4-f178-acc1-567673523d06', 'c4lesson_first_completed', '2015-12-20 09:25:15', '2017-04-06 12:33:24', '1', '1', NULL, 0, '1', 'Completed', 0, '2015-07-02 09:00:00', 0, '2015-07-02 09:00:00', NULL, '', '', 'High'), ('b15c0722-19da-79bf-51b2-566aabefc417', 'c2lesson_last_completed', '2015-12-11 10:56:48', '2017-04-06 12:29:58', '1', '1', NULL, 0, '1', 'Completed', 0, '2015-12-16 11:00:00', 0, '2015-12-16 10:00:00', NULL, '', '', 'High'), ('d9fed2e5-a303-e3d6-0c0c-577b814f9e4c', 'c3lesson_first_completed', '2016-07-05 09:44:04', '2017-04-06 12:30:54', '1', '1', NULL, 0, '1', 'Completed', 1, NULL, 0, '2016-07-01 09:00:00', NULL, '', '', 'High'), ('fb94089f-57e9-0918-c98f-56756fa424d4', 'c1lesson2', '2015-12-19 14:55:56', '2017-04-06 12:17:29', '1', '1', NULL, 0, '1', 'Completed', 0, '2015-10-06 09:00:00', 0, '2015-10-06 09:00:00', NULL, '', '', 'High'); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 

With the following query, I'm able to get the list of all the 'completed' lessons, but I'm in trouble to get just the most recent one per each course… In practice I need the first row, for each course:

I'm not an SQL expert and I really appreciate any help. Thank you.
Piergiorgio

 SELECT pj001_courses.name AS Corso, pj001_courses.id AS id_corso, tasks.id AS idlez, tasks.name AS Lezione, tasks.date_modified AS date_modified, max_dates.max_date_start AS date_start FROM pj001_courses JOIN pj001_courses_tasks_c ON pj001_courses.id = pj001_courses_tasks_c.pj001_courses_taskspj001_courses_ida JOIN tasks ON pj001_courses_tasks_c.pj001_courses_taskstasks_idb = tasks.id JOIN ( SELECT pj001_courses_tasks_c.pj001_courses_taskspj001_courses_ida AS id_corso, MAX( tasks.date_start ) AS max_date_start FROM pj001_courses_tasks_c JOIN tasks ON pj001_courses_tasks_c.pj001_courses_taskstasks_idb = tasks.id WHERE pj001_courses_tasks_c.deleted = 0 AND tasks.deleted = 0 AND tasks.status = 'completed' GROUP BY id_corso ) max_dates ON max_dates.id_corso = pj001_courses.id AND max_dates.max_date_start = tasks.date_start WHERE pj001_courses.deleted = 0 ORDER BY Corso, id_corso, tasks.date_start DESC, tasks.date_modified desc; 

Please try...

SELECT pj001_courses.name AS Corso,
       pj001_courses.id AS id_corso,
       tasks.id AS idlez,
       tasks.name AS Lezione,
       tasks.date_modified AS date_modified,
       tasks.date_start AS date_start
FROM pj001_courses
JOIN pj001_courses_tasks_c ON pj001_courses.id = pj001_courses_tasks_c.pj001_courses_taskspj001_courses_ida
JOIN tasks ON pj001_courses_tasks_c.pj001_courses_taskstasks_idb = tasks.id
JOIN
(
    SELECT pj001_courses_tasks_c.pj001_courses_taskspj001_courses_ida AS id_corso,
           tasks.date_start AS max_date_start,
           MAX( tasks.date_modified ) AS max_date_modified
    FROM pj001_courses_tasks_c
    JOIN tasks ON pj001_courses_tasks_c.pj001_courses_taskstasks_idb = tasks.id
    WHERE ( pj001_courses_tasks_c.pj001_courses_taskspj001_courses_ida,
            tasks.date_start ) IN ( SELECT pj001_courses_tasks_c.pj001_courses_taskspj001_courses_ida AS id_corso,
                                           MAX( tasks.date_start ) AS max_date_start
                                    FROM pj001_courses_tasks_c
                                    JOIN tasks ON pj001_courses_tasks_c.pj001_courses_taskstasks_idb = tasks.id
                                    WHERE pj001_courses_tasks_c.deleted = 0
                                      AND tasks.deleted = 0
                                      AND tasks.status = 'completed'
                                    GROUP BY id_corso
                                  )
    GROUP BY id_corso
) max_dates_finder ON pj001_courses.id = max_dates_finder.id_corso
                  AND tasks.date_start = max_dates_finder.max_date_start
                  AND tasks.date_modified = max_dates_finder.max_date_modified
WHERE pj001_courses.deleted = 0
ORDER BY Corso,
         id_corso;

The following segment produces a list of units assigned to each course where that unit has been completed and has not been deleted from the course or in general. It then outputs each course's id and the most recent value of date_start for each course.

SELECT pj001_courses_tasks_c.pj001_courses_taskspj001_courses_ida AS id_corso,
       MAX( tasks.date_start ) AS max_date_start
FROM pj001_courses_tasks_c
JOIN tasks ON pj001_courses_tasks_c.pj001_courses_taskstasks_idb = tasks.id
WHERE pj001_courses_tasks_c.deleted = 0
  AND tasks.deleted = 0
  AND tasks.status = 'completed'
GROUP BY id_corso

The following segment produces a list of Courses and those units assigned to each course where each entry's course id and date_start appear in the list generated by the previous segment. This new list is then refined to just the Course id , most recent value of date_start for that course and the most recent value of date_modified corresponding to that value of date_start .

SELECT pj001_courses_tasks_c.pj001_courses_taskspj001_courses_ida AS id_corso,
       tasks.date_start AS max_date_start,
       MAX( tasks.date_modified ) AS max_date_modified
FROM pj001_courses_tasks_c
JOIN tasks ON pj001_courses_tasks_c.pj001_courses_taskstasks_idb = tasks.id
WHERE ( pj001_courses_tasks_c.pj001_courses_taskspj001_courses_ida,
        tasks.date_start ) IN ( SELECT pj001_courses_tasks_c.pj001_courses_taskspj001_courses_ida AS id_corso,
                                       MAX( tasks.date_start ) AS max_date_start
                                FROM pj001_courses_tasks_c
                                JOIN tasks ON pj001_courses_tasks_c.pj001_courses_taskstasks_idb = tasks.id
                                WHERE pj001_courses_tasks_c.deleted = 0
                                  AND tasks.deleted = 0
                                  AND tasks.status = 'completed'
                                GROUP BY id_corso
                              )
GROUP BY id_corso

This code is then JOIN ed with the other tables and refined to only those courses that have not been deleted to produce the code from the beginning of my Answer.

If you have any questions or comments, then please feel free to post a Comment accordingly.

@toonice some fields name in your last query were not correct. I fixed them, but anyway the results looks not consistent re. date_start and date_modified.I'm new here in Stack Overflow and not sure if I can attach a test database with just 30 / 40 records for query testing purpouse

 SELECT pj001_courses.name AS Corso, pj001_courses.id AS id_corso, tasks.id AS idlez, tasks.name AS Lezione, tasks.date_start AS date_start, MAX( tasks.date_modified ) AS date_modified FROM pj001_courses JOIN pj001_courses_tasks_c ON pj001_courses.id = pj001_courses_tasks_c.pj001_courses_taskspj001_courses_ida JOIN tasks ON pj001_courses_tasks_c.pj001_courses_taskstasks_idb = tasks.id WHERE tasks.deleted = 0 AND tasks.status = 'completed' AND pj001_courses.deleted = 0 GROUP BY id_corso ORDER BY Corso, id_corso, tasks.date_start DESC, tasks.id; 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM