心のこもったご挨拶。
MySQL でクエリを実装する方法について疑問があります。申し訳ありませんが長すぎます。
今:私は、(さまざまなアイテムと数量の)製品のパックを持っているサイトを持っています.
アイテムは、2 つのフィールド (IdItem と NameItem) を持つItemTblという名前のテーブルに格納されます。
CREATE TABLE ItemTbl (
IdItem VARCHAR(16) UNIQUE NOT NULL,
NameItem VARCHAR(32) NOT NULL
);
INSERT INTO ItemTbl (IdItem, NameItem) VALUES
('Item00','Item 00'),
('Item01','Item 01'),
('Item02','Item 02'),
('Item03','Item 03'),
('Item04','Item 04'),
('Item05','Item 05');
パックは、2 つのフィールド (IdPack と NamePack) を持つPackTblという名前のテーブルに格納されます。
CREATE TABLE PackTbl (
IdPack VARCHAR(16) UNIQUE NOT NULL,
NamePack VARCHAR(32) NOT NULL
);
INSERT INTO PackTbl (IdPack, NamePack) VALUES
('Pack00','Pack 00'),
('Pack01','Pack 01'),
('Pack02','Pack 02'),
('Pack03','Pack 03');
サイトは、2 つのフィールド (IdSite と NameSite) を持つSiteTblという名前のテーブルに格納されます。
CREATE TABLE SiteTbl (
IdSite VARCHAR(16) UNIQUE NOT NULL,
NameSite VARCHAR(32) NOT NULL
);
INSERT INTO SiteTbl (IdSite, NameSite) VALUES
('Site00','Site 00'),
('Site01','Site 01');
パックは、3 つのフィールド (IdItem、IdPack、QtyIP) を持つItemPackTblという名前のテーブルを使用してアイテムに関連付けられます。
CREATE TABLE ItemPackTbl (
IdItem VARCHAR(16) NOT NULL,
IdPack VARCHAR(16) NOT NULL,
QtyIP INT NOT NULL
);
INSERT INTO ItemPackTbl (IdItem, IdPack, QtyIP) VALUES
('Item00', 'Pack00', '90'),
('Item01', 'Pack00', '81'),
('Item02', 'Pack00', '72'),
('Item03', 'Pack01', '63'),
('Item04', 'Pack01', '54'),
('Item05', 'Pack01', '50'),
('Item01', 'Pack02', '61'),
('Item04', 'Pack02', '72'),
('Item03', 'Pack03', '83'),
('Item02', 'Pack03', '94');
サイトは、3 つのフィールド (IdPack、IdSite、QtyPS) を持つPackSiteTblという名前のテーブルを使用してパックに関連付けられています。
CREATE TABLE PackSiteTbl (
IdPack VARCHAR(16) NOT NULL,
IdSite VARCHAR(16) NOT NULL,
QtyPS INT NOT NULL
);
INSERT INTO PackSiteTbl (IdPack, IdSite, QtyPS) VALUES
('Pack00', 'Site00', '5'),
('Pack03', 'Site00', '4'),
('Pack01', 'Site01', '8'),
('Pack02', 'Site01', '1');
これで、 QuotTblという名前のテーブルがあり、価格と日付を含むアイテムのみの異なる見積もり (パックまたはサイトが計算されるため) が含まれています。
CREATE TABLE QuotTbl (
IdQuot VARCHAR(16) UNIQUE NOT NULL,
IdItem VARCHAR(16) NOT NULL,
QtCost INT NOT NULL,
QtDate DATE NOT NULL
);
INSERT INTO QuotTbl (IdQuot, IdItem, QtCost, QtDate) VALUES
('Quot00', 'Item00', '90', '1983-12-30'),
('Quot01', 'Item00', '72', '2004-09-09'),
('Quot02', 'Item01', '63', '2013-02-01'),
('Quot03', 'Item01', '50', '2012-05-09'),
('Quot04', 'Item02', '61', '1983-12-30'),
('Quot05', 'Item02', '27', '2004-09-09'),
('Quot06', 'Item03', '38', '2013-02-01'),
('Quot07', 'Item03', '49', '2012-05-09'),
('Quot08', 'Item04', '90', '1983-12-30'),
('Quot09', 'Item04', '72', '2004-09-09'),
('Quot10', 'Item05', '63', '2013-02-01'),
('Quot11', 'Item05', '50', '2012-05-01');
私は2つのことをしたい:
アイテムの履歴書を含む SiteTblのエントリのリストを取得するためのクエリが何であるかを知る必要があります(追加を行います)。
Site00には次のものがあります。
ItemId, Qty Item00, 450 Item01, 405 Item02, 736 Item03, 332
Site01には次のものがあります。
ItemId, Qty Item01, 61 Item03, 504 Item04, 504 Item05, 400
QuotTbl テーブルとすべてのアイテム リストに従って、最も安い (または最新の) 見積もりを見つけます。
Site00 最 安:
ItemId, Qty Cost Total Item00, 450 72 32400 Item01, 405 50 20250 Item02, 736 27 19872 Item03, 332 38 12616
Site01 最 安:
ItemId, Qty Cost Total Item01, 61 50 3050 Item03, 504 38 19152 Item04, 504 72 36288 Item05, 400 50 20000
Site00 最新:
ItemId, Qty Cost Total Item00, 450 72 32400 Item01, 405 63 25515 Item02, 736 27 19872 Item03, 332 38 12616
Site01 最新:
ItemId, Qty Cost Total Item01, 61 63 3843 Item03, 504 38 19152 Item04, 504 72 36288 Item05, 400 63 25200
貴重なご協力ありがとうございます。
よろしくお願いします。