На работе я должен выполнить бизнес-требование к системе, которую я создаю. Это стартап, поэтому я ношу несколько шляп. Это не моя сильная сторона.
Среди многих других API-интерфейсов есть один, в котором мы должны сделать HTTP-запрос к API-интерфейсам данных для базы данных MySQL 5.7 для системы Point of Sale.
Есть некоторые заминки:
API не включает много сообщений об ошибках, таких как синтаксические ошибки. Я получаю 521, если, например, пытаюсь добавить в результат ключи с тем же именем.
API практически не документирован.
Нам нужны продажи всех заказанных товаров, которые были закрыты в заданную дату Close_Date. Эта информация размещена в нескольких таблицах:
orders
: содержит все заказы, невыполненные (Closed=0
) или завершенные (Closed=1
), а также дату закрытия кассы (Close_Date
). Он не знает, что это за заказы, но имеет промежуточный итог, налоговую информацию и другие данные, которые здесь не актуальны.
orders_item
: содержит все позиции, которые были заказаны и связаны с заказом в поле `orders_item.Order_ID = orders.ID.
-
itemID
присваивается элементу при его заказе. Как указано выше, заказ состоит из элементов по `itemID. Каждый товар связан с заказом по его идентификатору заказа. Строка, представляющая элемент, имеет уникальный идентификатор itemPLU. Это обязательная информация. В этой таблице ничего не известно об изменениях («ингредиентах» или «опциях»), связанных с заказанным товаром.
orders_options
: содержит параметры, которые есть с ди sh, какой суп, какой десерт. Опция связана с элементом, заказанным в поле itemID
. Опции имеют дополнительную стоимость, и, поскольку они solid предметов, должны быть учтены в инвентаре, поэтому мы должны знать.
orders_ingredients
: содержит вещи, которые вы можете добавить к ди sh, например, дополнительный сыр или начинка в пицце или острый майонез в бутерброде с кубано вместо обычного. Ингредиент, который был заказан, связан с заказанным товаром с помощью поля itemID
.
Строка в допустимом результате будет выглядеть так, как будто состоит из товара, заказанного в дату, указанную Close_Date. Значения в возвращаемых столбцах дают полную запись проданного предмета, уникальные идентификаторы ('**** PLU') для предметов, опций и ингредиентов будут сопоставлены с предметами в базе данных инвентаризации клиента на нашей платформе, после некоторого парсинг. Эти предметы имеют долларовую стоимость и представляют собой инвентарь, который необходимо учитывать.
Частичная схема
Вот сам код:
#MySQL 5.7.12
#please drop objects you've created at the end of the script
#or check for their existance before creating
#'\\' is a delimiter
select version() as 'mysql version';
#
# TABLE STRUCTURE FOR: orders
#
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders` (
`ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Date` datetime NOT NULL,
`DateClose` datetime NOT NULL,
`DatePreorder` datetime DEFAULT NULL,
`Table_ID` smallint(4) unsigned NOT NULL DEFAULT 0,
`Client_ID` smallint(4) unsigned NOT NULL,
`User_ID` smallint(5) unsigned NOT NULL,
`Delivery_ID` mediumint(5) unsigned NOT NULL,
`SubTotal` decimal(13,4) NOT NULL,
`Tax1` decimal(13,4) NOT NULL,
`Tax2` decimal(13,4) NOT NULL,
`Tax3` decimal(13,4) NOT NULL,
`Tax4` decimal(13,4) NOT NULL,
`Tax5` decimal(13,4) NOT NULL,
`Tax6` decimal(13,4) NOT NULL,
`NonTaxable` decimal(13,4) NOT NULL,
`NonSale` decimal(13,4) NOT NULL,
`Tax_Rounding` decimal(13,4) NOT NULL,
`Total` decimal(13,4) NOT NULL,
`Device` tinyint(2) unsigned NOT NULL DEFAULT 0,
`Client_Name` varchar(48) COLLATE utf8mb4_unicode_ci NOT NULL,
`Profile_ID` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
`Bill` tinyint(1) unsigned NOT NULL DEFAULT 0,
`Completed` tinyint(1) unsigned NOT NULL DEFAULT 0,
`Closed` tinyint(1) unsigned NOT NULL DEFAULT 0,
`Prepared` tinyint(1) unsigned NOT NULL,
`Close_Date` datetime DEFAULT NULL,
`Note` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
`Reason` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
`Void_By` smallint(5) unsigned NOT NULL,
`IP` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Deleted` tinyint(1) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`),
KEY `Closed` (`Closed`,`Deleted`,`Completed`),
KEY `DateClose` (`DateClose`,`Deleted`,`Completed`),
KEY `Table_ID` (`Table_ID`,`Deleted`,`Completed`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='All Order information'
PARTITION BY RANGE (`ID`)
(PARTITION `pYear` VALUES LESS THAN (5) ENGINE = InnoDB,
PARTITION `pCurrent` VALUES LESS THAN MAXVALUE ENGINE = InnoDB);
INSERT INTO `orders` (`ID`, `Date`, `DateClose`, `DatePreorder`, `Table_ID`, `Client_ID`, `User_ID`, `Delivery_ID`, `SubTotal`, `Tax1`, `Tax2`, `Tax3`, `Tax4`, `Tax5`, `Tax6`, `NonTaxable`, `NonSale`, `Tax_Rounding`, `Total`, `Device`, `Client_Name`, `Profile_ID`, `Bill`, `Completed`, `Closed`, `Prepared`, `Close_Date`, `Note`, `Reason`, `Void_By`, `IP`, `Deleted`) VALUES (1, '2019-08-10 14:13:48', '2020-06-08 04:25:15', '2019-08-08 07:38:29', 55, 0, 0, 0, '1620.9100', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', 0, 'fli', '', 0, 0, 1, 0, '2020-06-13 22:04:35', 'Odio minima et blanditiis sunt numquam.', '', 0, 255, 0);
INSERT INTO `orders` (`ID`, `Date`, `DateClose`, `DatePreorder`, `Table_ID`, `Client_ID`, `User_ID`, `Delivery_ID`, `SubTotal`, `Tax1`, `Tax2`, `Tax3`, `Tax4`, `Tax5`, `Tax6`, `NonTaxable`, `NonSale`, `Tax_Rounding`, `Total`, `Device`, `Client_Name`, `Profile_ID`, `Bill`, `Completed`, `Closed`, `Prepared`, `Close_Date`, `Note`, `Reason`, `Void_By`, `IP`, `Deleted`) VALUES (2, '2019-10-11 14:14:52', '2019-08-01 16:12:46', '2020-03-10 17:23:23', 20, 0, 0, 0, '2099.8200', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', 0, 'xslt', '', 0, 0, 1, 0, '2019-12-24 17:08:24', 'Impedit facere culpa autem libero.', '', 0, 255, 0);
INSERT INTO `orders` (`ID`, `Date`, `DateClose`, `DatePreorder`, `Table_ID`, `Client_ID`, `User_ID`, `Delivery_ID`, `SubTotal`, `Tax1`, `Tax2`, `Tax3`, `Tax4`, `Tax5`, `Tax6`, `NonTaxable`, `NonSale`, `Tax_Rounding`, `Total`, `Device`, `Client_Name`, `Profile_ID`, `Bill`, `Completed`, `Closed`, `Prepared`, `Close_Date`, `Note`, `Reason`, `Void_By`, `IP`, `Deleted`) VALUES (3, '2020-06-12 04:51:41', '2020-03-01 23:53:55', '2019-07-13 12:40:22', 46, 0, 0, 0, '224.7000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', 0, 'twds', '', 0, 0, 1, 0, '2020-02-03 17:32:05', 'Et dolorem eum consequatur et vitae sed. ', '', 0, 255, 0);
INSERT INTO `orders` (`ID`, `Date`, `DateClose`, `DatePreorder`, `Table_ID`, `Client_ID`, `User_ID`, `Delivery_ID`, `SubTotal`, `Tax1`, `Tax2`, `Tax3`, `Tax4`, `Tax5`, `Tax6`, `NonTaxable`, `NonSale`, `Tax_Rounding`, `Total`, `Device`, `Client_Name`, `Profile_ID`, `Bill`, `Completed`, `Closed`, `Prepared`, `Close_Date`, `Note`, `Reason`, `Void_By`, `IP`, `Deleted`) VALUES (4, '2019-10-05 16:20:34', '2019-10-14 17:10:30', '2020-05-23 21:10:45', 6, 0, 0, 0, '791.7700', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', 0, 'sitx', '', 0, 0, 1, 0, '2019-12-17 22:56:45', 'Et quidem perferendis .', '', 0, 255, 0);
INSERT INTO `orders` (`ID`, `Date`, `DateClose`, `DatePreorder`, `Table_ID`, `Client_ID`, `User_ID`, `Delivery_ID`, `SubTotal`, `Tax1`, `Tax2`, `Tax3`, `Tax4`, `Tax5`, `Tax6`, `NonTaxable`, `NonSale`, `Tax_Rounding`, `Total`, `Device`, `Client_Name`, `Profile_ID`, `Bill`, `Completed`, `Closed`, `Prepared`, `Close_Date`, `Note`, `Reason`, `Void_By`, `IP`, `Deleted`) VALUES (5, '2019-07-25 06:14:04', '2019-09-07 16:22:43', '2019-08-10 23:09:17', 13, 0, 0, 0, '197.5300', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', 0, 'wcm', '', 0, 0, 1, 0, '2020-06-13 22:04:35', 'Magnam facilis magni .', '', 0, 255, 0);
INSERT INTO `orders` (`ID`, `Date`, `DateClose`, `DatePreorder`, `Table_ID`, `Client_ID`, `User_ID`, `Delivery_ID`, `SubTotal`, `Tax1`, `Tax2`, `Tax3`, `Tax4`, `Tax5`, `Tax6`, `NonTaxable`, `NonSale`, `Tax_Rounding`, `Total`, `Device`, `Client_Name`, `Profile_ID`, `Bill`, `Completed`, `Closed`, `Prepared`, `Close_Date`, `Note`, `Reason`, `Void_By`, `IP`, `Deleted`) VALUES (6, '2020-06-06 09:53:50', '2019-08-14 16:13:30', '2020-03-03 03:04:10', 12, 0, 0, 0, '1360.5000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', 0, 'wm', '', 0, 0, 1, 0, '2019-07-16 19:29:05', 'Odio aut voluptatem ', '', 0, 255, 0);
INSERT INTO `orders` (`ID`, `Date`, `DateClose`, `DatePreorder`, `Table_ID`, `Client_ID`, `User_ID`, `Delivery_ID`, `SubTotal`, `Tax1`, `Tax2`, `Tax3`, `Tax4`, `Tax5`, `Tax6`, `NonTaxable`, `NonSale`, `Tax_Rounding`, `Total`, `Device`, `Client_Name`, `Profile_ID`, `Bill`, `Completed`, `Closed`, `Prepared`, `Close_Date`, `Note`, `Reason`, `Void_By`, `IP`, `Deleted`) VALUES (7, '2019-09-12 09:29:49', '2019-09-25 13:15:44', '2020-03-16 10:09:15', 37, 0, 0, 0, '1574.0400', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', 0, 'torrent', '', 0, 0, 0, 0, '2019-08-18 15:44:07', 'Quia veniam fugit necessitatibus laboriosam accusamus nihil. Reiciendis delectus repellendus minus.', '', 0, 255, 0);
INSERT INTO `orders` (`ID`, `Date`, `DateClose`, `DatePreorder`, `Table_ID`, `Client_ID`, `User_ID`, `Delivery_ID`, `SubTotal`, `Tax1`, `Tax2`, `Tax3`, `Tax4`, `Tax5`, `Tax6`, `NonTaxable`, `NonSale`, `Tax_Rounding`, `Total`, `Device`, `Client_Name`, `Profile_ID`, `Bill`, `Completed`, `Closed`, `Prepared`, `Close_Date`, `Note`, `Reason`, `Void_By`, `IP`, `Deleted`) VALUES (8, '2020-03-18 11:10:46', '2019-11-12 19:37:15', '2020-02-02 19:59:45', 10, 0, 0, 0, '628.2900', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', 0, 'sv4crc', '', 0, 0, 1, 0, '2019-09-08 23:21:28', 'Repellat possimus quod excepturi.', '', 0, 255, 1);
INSERT INTO `orders` (`ID`, `Date`, `DateClose`, `DatePreorder`, `Table_ID`, `Client_ID`, `User_ID`, `Delivery_ID`, `SubTotal`, `Tax1`, `Tax2`, `Tax3`, `Tax4`, `Tax5`, `Tax6`, `NonTaxable`, `NonSale`, `Tax_Rounding`, `Total`, `Device`, `Client_Name`, `Profile_ID`, `Bill`, `Completed`, `Closed`, `Prepared`, `Close_Date`, `Note`, `Reason`, `Void_By`, `IP`, `Deleted`) VALUES (9, '2019-09-14 19:16:31', '2020-02-19 14:04:16', '2020-02-18 18:13:03', 14, 0, 0, 0, '2067.1800', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', 0, 'h263', '', 0, 0, 0, 0, '2020-03-29 10:20:48', 'Aut quis nemo provident dolorum numquam rerum explicabo. ', '', 0, 255, 1);
INSERT INTO `orders` (`ID`, `Date`, `DateClose`, `DatePreorder`, `Table_ID`, `Client_ID`, `User_ID`, `Delivery_ID`, `SubTotal`, `Tax1`, `Tax2`, `Tax3`, `Tax4`, `Tax5`, `Tax6`, `NonTaxable`, `NonSale`, `Tax_Rounding`, `Total`, `Device`, `Client_Name`, `Profile_ID`, `Bill`, `Completed`, `Closed`, `Prepared`, `Close_Date`, `Note`, `Reason`, `Void_By`, `IP`, `Deleted`) VALUES (10, '2019-12-28 20:13:14', '2020-04-04 13:48:34', '2020-04-04 17:41:15', 19, 0, 0, 0, '2063.3100', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', 0, 'sid', '', 0, 0, 1, 0, '2020-06-13 22:04:35', 'Aliquam dolores voluptates repellendus voluptatem omnis sit doloribus explicabo.', '', 0, 255, 0);
#
# TABLE STRUCTURE FOR: orders_ingredient
#
DROP TABLE IF EXISTS `orders_ingredient`;
CREATE TABLE `orders_ingredient` (
`ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Item_ID` int(11) unsigned NOT NULL DEFAULT 0,
`Ingredient_uid` int(10) unsigned NOT NULL,
`Change_uid` int(10) unsigned NOT NULL,
`Account` int(10) unsigned NOT NULL,
`Name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`Price` decimal(13,4) NOT NULL,
`Tax_Type` tinyint(2) unsigned NOT NULL DEFAULT 31,
`Qty` smallint(4) NOT NULL DEFAULT 1,
`Modifier` tinyint(2) unsigned NOT NULL,
`Modified` datetime NOT NULL DEFAULT current_timestamp(),
`Deleted` tinyint(1) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`),
KEY `Account` (`Account`,`Deleted`),
KEY `Item_ID` (`Item_ID`,`Modifier`,`Deleted`,`Price`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='individual item per order'
PARTITION BY RANGE (`ID`)
(PARTITION `pYear` VALUES LESS THAN (2) ENGINE = InnoDB,
PARTITION `pCurrent` VALUES LESS THAN MAXVALUE ENGINE = InnoDB);
INSERT INTO `orders_ingredient` (`ID`, `Item_ID`, `Ingredient_uid`, `Change_uid`, `Account`, `Name`, `Price`, `Tax_Type`, `Qty`, `Modifier`, `Modified`, `Deleted`) VALUES (1, 1, 800, 0, 2, 'a', '1.5600', 31, 20, 0, '2019-07-12 20:17:09', 0);
INSERT INTO `orders_ingredient` (`ID`, `Item_ID`, `Ingredient_uid`, `Change_uid`, `Account`, `Name`, `Price`, `Tax_Type`, `Qty`, `Modifier`, `Modified`, `Deleted`) VALUES (2, 2, 1130, 0, 3, 'e', '4.6300', 31, 1, 0, '2019-08-15 15:29:30', 0);
INSERT INTO `orders_ingredient` (`ID`, `Item_ID`, `Ingredient_uid`, `Change_uid`, `Account`, `Name`, `Price`, `Tax_Type`, `Qty`, `Modifier`, `Modified`, `Deleted`) VALUES (3, 3, 948, 0, 8, 'v', '0.9100', 31, 17, 0, '2020-02-25 20:47:51', 0);
INSERT INTO `orders_ingredient` (`ID`, `Item_ID`, `Ingredient_uid`, `Change_uid`, `Account`, `Name`, `Price`, `Tax_Type`, `Qty`, `Modifier`, `Modified`, `Deleted`) VALUES (4, 4, 987, 0, 5, 'e', '3.4800', 31, 12, 0, '2019-07-14 01:06:13', 0);
INSERT INTO `orders_ingredient` (`ID`, `Item_ID`, `Ingredient_uid`, `Change_uid`, `Account`, `Name`, `Price`, `Tax_Type`, `Qty`, `Modifier`, `Modified`, `Deleted`) VALUES (5, 5, 856, 0, 3, 'x', '2.1600', 31, 5, 0, '2020-01-11 19:28:40', 0);
INSERT INTO `orders_ingredient` (`ID`, `Item_ID`, `Ingredient_uid`, `Change_uid`, `Account`, `Name`, `Price`, `Tax_Type`, `Qty`, `Modifier`, `Modified`, `Deleted`) VALUES (6, 6, 1098, 0, 2, 'y', '1.0300', 31, 3, 0, '2019-09-27 15:54:23', 0);
INSERT INTO `orders_ingredient` (`ID`, `Item_ID`, `Ingredient_uid`, `Change_uid`, `Account`, `Name`, `Price`, `Tax_Type`, `Qty`, `Modifier`, `Modified`, `Deleted`) VALUES (7, 7, 1102, 0, 7, 'c', '2.8000', 31, 21, 0, '2020-06-04 13:15:17', 0);
#
# TABLE STRUCTURE FOR: orders_item
#
DROP TABLE IF EXISTS `orders_item`;
CREATE TABLE `orders_item` (
`ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Order_ID` int(11) unsigned NOT NULL DEFAULT 0,
`Item_uid` int(10) unsigned NOT NULL,
`Account` int(10) unsigned NOT NULL,
`Name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`Qty` smallint(4) NOT NULL DEFAULT 1,
`Unit_Qty` decimal(13,4) NOT NULL DEFAULT 1.0000,
`Unit_Type` tinyint(2) unsigned NOT NULL DEFAULT 0,
`Price` decimal(13,4) NOT NULL,
`Tax_Type` tinyint(2) unsigned NOT NULL DEFAULT 31,
`SplitID` int(11) unsigned NOT NULL DEFAULT 0,
`SplitBy` tinyint(2) unsigned NOT NULL DEFAULT 1,
`Category` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`Combo` int(11) unsigned NOT NULL DEFAULT 0,
`Service` tinyint(3) unsigned NOT NULL DEFAULT 0,
`Type` tinyint(1) unsigned NOT NULL DEFAULT 0,
`Printed` tinyint(1) unsigned NOT NULL DEFAULT 0,
`PrintDate` datetime NOT NULL,
`Bill` tinyint(1) unsigned NOT NULL DEFAULT 0,
`Note` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
`Reason` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
`Void_By` smallint(5) unsigned NOT NULL,
`Modified` datetime NOT NULL DEFAULT current_timestamp(),
`Deleted` tinyint(1) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`),
KEY `Combo` (`Combo`) USING BTREE COMMENT 'IMPORTANT GetComboItems',
KEY `Order_ID` (`Order_ID`,`Type`,`Deleted`,`Price`) USING BTREE,
KEY `Account` (`Account`,`Deleted`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='individual item per order'
PARTITION BY RANGE (`ID`)
(PARTITION `pYear` VALUES LESS THAN (23) ENGINE = InnoDB,
PARTITION `pCurrent` VALUES LESS THAN MAXVALUE ENGINE = InnoDB);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (1, 1, 3621, 90, '#009933', 20, '1.0000', 0, '2450.1800', 31, 0, 1, '9', 0, 0, 0, 0, '2019-07-23 05:35:33', 0, 'dicta', '', 0, '2020-03-16 23:05:47', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (2, 2, 1568, 0, '#00bb77', 3, '4.0000', 0, '936.3600', 31, 0, 1, '1', 0, 0, 0, 0, '2019-07-07 18:35:31', 0, 'consectetur', '', 0, '2019-08-14 15:27:05', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (3, 3, 9859, 2995758, '#00ff33', 7, '0.0000', 0, '1549.5800', 31, 0, 1, '4', 0, 0, 0, 0, '2020-06-17 04:05:57', 0, 'dolores', '', 0, '2019-12-23 09:07:34', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (4, 4, 5846, 8, '#00eeff', 14, '0.0000', 0, '1893.3800', 31, 0, 1, '7', 0, 0, 0, 0, '2020-05-03 07:36:27', 0, 'aut', '', 0, '2019-11-11 11:30:45', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (5, 5, 510, 55, '#0099bb', 1, '4.0000', 0, '1108.7100', 31, 0, 1, '1', 0, 0, 0, 0, '2019-11-10 03:00:26', 0, 'eligendi', '', 0, '2019-11-27 00:08:59', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (6, 6, 2351, 9420, '#007799', 14, '2.0000', 0, '1556.5000', 31, 0, 1, '9', 0, 0, 0, 0, '2020-04-07 16:30:04', 0, 'nam', '', 0, '2020-02-08 08:42:30', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (7, 7, 1466, 820, '#00cc77', 2, '5.0000', 0, '847.8000', 31, 0, 1, '9', 0, 0, 0, 0, '2019-10-30 16:22:48', 0, 'dolores', '', 0, '2019-08-08 08:03:33', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (8, 8, 8385, 807043258, '#0000ff', 7, '3.0000', 0, '291.0200', 31, 0, 1, '1', 0, 0, 0, 0, '2019-10-04 22:45:04', 0, 'aut', '', 0, '2019-10-29 01:09:58', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (9, 9, 2881, 21212542, '#009900', 17, '2.0000', 0, '1534.5200', 31, 0, 1, '6', 0, 0, 0, 0, '2019-10-27 03:26:07', 0, 'omnis', '', 0, '2020-03-05 01:17:56', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (10, 10, 3370, 648377, '#00ffcc', 14, '3.0000', 0, '2194.2900', 31, 0, 1, '4', 0, 0, 0, 0, '2020-02-09 13:08:07', 0, 'praesentium', '', 0, '2019-08-03 01:21:33', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (11, 1, 9632, 13229430, '#0022aa', 3, '4.0000', 0, '1481.0600', 31, 0, 1, '3', 0, 0, 0, 0, '2020-05-11 11:25:09', 0, 'magnam', '', 0, '2019-10-23 06:04:10', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (12, 2, 3025, 4796898, '#001122', 23, '0.0000', 0, '245.7700', 31, 0, 1, '2', 0, 0, 0, 0, '2019-06-27 13:08:55', 0, 'quod', '', 0, '2019-11-06 09:02:43', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (13, 3, 3658, 792, '#006677', 21, '0.0000', 0, '2151.8600', 31, 0, 1, '8', 0, 0, 0, 0, '2020-04-28 18:58:46', 0, 'ut', '', 0, '2019-10-05 02:12:20', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (14, 4, 590, 139, '#0077cc', 24, '0.0000', 0, '2328.8900', 31, 0, 1, '7', 0, 0, 0, 0, '2020-06-04 14:00:04', 0, 'et', '', 0, '2020-06-11 07:34:12', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (15, 5, 2551, 0, '#005599', 24, '4.0000', 0, '1370.6000', 31, 0, 1, '6', 0, 0, 0, 0, '2020-06-03 04:39:05', 0, 'quo', '', 0, '2019-12-29 07:27:46', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (16, 6, 447, 4573, '#008811', 14, '5.0000', 0, '161.5300', 31, 0, 1, '9', 0, 0, 0, 0, '2020-02-02 03:33:55', 0, 'facilis', '', 0, '2019-11-08 01:46:56', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (17, 7, 3342, 9994, '#00aabb', 5, '2.0000', 0, '839.2600', 31, 0, 1, '6', 0, 0, 0, 0, '2019-10-12 21:05:22', 0, 'non', '', 0, '2020-04-08 17:05:52', 0);
INSERT INTO `orders_item` (`ID`, `Order_ID`, `Item_uid`, `Account`, `Name`, `Qty`, `Unit_Qty`, `Unit_Type`, `Price`, `Tax_Type`, `SplitID`, `SplitBy`, `Category`, `Combo`, `Service`, `Type`, `Printed`, `PrintDate`, `Bill`, `Note`, `Reason`, `Void_By`, `Modified`, `Deleted`) VALUES (18, 8, 189, 0, '#003311', 6, '3.0000', 0, '1895.1300', 31, 0, 1, '7', 0, 0, 0, 0, '2019-08-14 03:41:34', 0, 'quaerat', '', 0, '2020-05-16 10:10:44', 0);
#
# TABLE STRUCTURE FOR: orders_option
#
DROP TABLE IF EXISTS `orders_option`;
CREATE TABLE `orders_option` (
`ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Item_ID` int(11) unsigned NOT NULL DEFAULT 0,
`Option_uid` int(10) unsigned NOT NULL,
`Account` int(10) unsigned NOT NULL,
`Index_ID` tinyint(2) unsigned NOT NULL,
`Value` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`Price` decimal(13,4) NOT NULL,
`Tax_Type` tinyint(2) unsigned NOT NULL DEFAULT 31,
`Qty` smallint(4) NOT NULL,
`Type` tinyint(2) unsigned NOT NULL,
`Modified` datetime NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`ID`),
KEY `Item_ID` (`Item_ID`,`Price`) USING BTREE,
KEY `Account` (`Account`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='individual item per order'
PARTITION BY RANGE (`ID`)
(PARTITION `pYear` VALUES LESS THAN (2) ENGINE = InnoDB,
PARTITION `pCurrent` VALUES LESS THAN MAXVALUE ENGINE = InnoDB);
INSERT INTO `orders_option` (`ID`, `Item_ID`, `Option_uid`, `Account`, `Index_ID`, `Value`, `Price`, `Tax_Type`, `Qty`, `Type`, `Modified`) VALUES (1, 1, 352, 4, 0, 'r', '9.8400', 31, 16, 0, '2019-10-23 18:07:03');
INSERT INTO `orders_option` (`ID`, `Item_ID`, `Option_uid`, `Account`, `Index_ID`, `Value`, `Price`, `Tax_Type`, `Qty`, `Type`, `Modified`) VALUES (2, 2, 238, 9, 0, 'c', '4.8900', 31, 2, 0, '2020-06-18 07:08:15');
INSERT INTO `orders_option` (`ID`, `Item_ID`, `Option_uid`, `Account`, `Index_ID`, `Value`, `Price`, `Tax_Type`, `Qty`, `Type`, `Modified`) VALUES (3, 3, 189, 8, 0, 'y', '10.7900', 31, 2, 0, '2019-08-18 06:51:29');
INSERT INTO `orders_option` (`ID`, `Item_ID`, `Option_uid`, `Account`, `Index_ID`, `Value`, `Price`, `Tax_Type`, `Qty`, `Type`, `Modified`) VALUES (4, 4, 425, 6, 0, 's', '14.5500', 31, 4, 0, '2020-03-26 08:59:29');
INSERT INTO `orders_option` (`ID`, `Item_ID`, `Option_uid`, `Account`, `Index_ID`, `Value`, `Price`, `Tax_Type`, `Qty`, `Type`, `Modified`) VALUES (5, 5, 200, 3, 0, 'n', '13.9000', 31, 17, 0, '2020-01-29 11:05:18');
# Close_Date sorted Descending
SELECT Close_Date,
Count(*)
FROM orders
GROUP BY close_date
ORDER BY close_date DESC;
# Closed Orders
SELECT ID,
Closed,
Deleted,
Close_Date
FROM orders
WHERE Closed = 1
AND DELETED = 0
GROUP BY id;
# Closed Orders on Most Recent Close_Date
SELECT ID,
Closed,
Deleted,
Close_Date
FROM orders
WHERE Closed=1
AND Deleted=0
AND Close_Date = (SELECT MAX(Close_Date)
FROM orders)
ORDER BY Close_Date DESC;
SELECT *
FROM (SELECT *
FROM (SELECT items.ID AS itemID,
items.Order_ID AS itemOrderID,
items.Item_uid AS itemPLU,
items.Name AS itemName,
items.Price AS itemPrice,
items.Qty AS itemQty,
items.Category,
ingredients.Item_ID AS ingredientItemID,
ingredients.Ingredient_uid AS ingredientPLU,
ingredients.Name AS ingredientName,
ingredients.Qty AS ingredientQty,
ingredients.Price AS ingredientPrice
FROM orders_item AS items
LEFT JOIN orders_ingredient AS ingredients
ON items.ID = ingredients.Item_ID) AS
itemsIngredients
LEFT JOIN (SELECT Item_ID AS optionItemID,
Option_uid AS optionPLU,
Price AS optionPrice,
Value AS optionName,
Qty AS optionQty
FROM orders_option) AS options
ON itemsIngredients.itemID = options.optionItemID) AS
itemsIngredientsOptions
LEFT JOIN (SELECT ID AS orderID,
Table_ID AS tableID,
Closed AS isClosed,
Deleted AS isDeleted,
Close_Date as closeDate
FROM orders
WHERE Closed = 1
AND Deleted = 1
AND Close_Date = (SELECT Max(Close_Date)
FROM orders)) AS closedOrders
ON orderID = closedOrders.orderID;
Посторонние таблицы и столбцы в БД
В итоге результат, который я получаю, полон дыр, в которых мне нужны данные. Псевдоним становится немного запутанным, и мне трудно отслеживать, откуда я выбираю.