pos/migrations/up.sql
2022-11-02 09:40:49 +01:00

57 lines
1.6 KiB
SQL

-- Your SQL goes here
CREATE TABLE products (
id INTEGER PRIMARY KEY NOT NULL,
name TEXT UNIQUE NOT NULL,
price REAL NOT NULL,
owner TEXT NOT NULL,
created_at TEXT DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at TEXT DEFAULT CURRENT_TIMESTAMP NOT NULL
);
CREATE TABLE orders (
id INTEGER PRIMARY KEY NOT NULL,
created_at TEXT DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at TEXT DEFAULT CURRENT_TIMESTAMP NOT NULL
);
CREATE TABLE orders_products (
order_id INTEGER NOT NULL,
product_id INTEGER NOT NULL,
quantity INTEGER NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders(id),
FOREIGN KEY (product_id) REFERENCES products(id),
PRIMARY KEY (order_id, product_id)
);
INSERT INTO products (name, price, owner)
VALUES
("Pfadiburger", 5.1, "Pfadfinder"),
("Kuchen", 2, "Sportunion"),
("Apfelsaft", 1.5, "Sportunion"),
("Käsekrainer", 4, "Pfadfinder"),
("Süßes", 0.2, "Pfadfinder"),
("Capuccino", 3.5, "Deluke"),
("Espresso", 2.5, "Deluke");
INSERT INTO orders DEFAULT VALUES;
INSERT INTO orders_products (order_id, product_id, quantity)
VALUES
(1, 1, 3),
(1, 2, 1),
(1, 5, 1);
INSERT INTO orders DEFAULT VALUES;
INSERT INTO orders_products (order_id, product_id, quantity)
VALUES
(2, 4, 2),
(2, 6, 2),
(2, 2, 1);
CREATE VIEW totals_per_owner_and_order AS
SELECT id, owner, SUM(total_price) AS total FROM (
SELECT o.id, p.owner, p.price*op.quantity AS total_price FROM orders AS o
INNER JOIN orders_products AS op ON o.id = op.order_id
INNER JOIN products AS p ON p.id = op.product_id
)
GROUP BY id, owner;