From e8cf005044a5d388d833b9a56e170751d6ac5804 Mon Sep 17 00:00:00 2001 From: Steve Date: Fri, 7 Sep 2018 12:03:27 -0400 Subject: [PATCH 1/2] tables setup --- queries.sql | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 queries.sql diff --git a/queries.sql b/queries.sql new file mode 100644 index 0000000..1b1a24f --- /dev/null +++ b/queries.sql @@ -0,0 +1,43 @@ +CREATE TABLE organization ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + title VARCHAR(128), +); + +CREATE TABLE channel ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + title VARCHAR(128), + organization_id INTEGER, + FOREIGN KEY(organization_id) REFERENCES organization(id) +); + +CREATE TABLE user ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + title VARCHAR(128), +); + +CREATE TABLE user_channels ( + userid INTEGER, + channel_id INTEGER, + FOREIGN KEY(userid) REFERENCES user(id), + FOREIGN KEY(channel_id) REFERENCES channel(id) +); + +CREATE TABLE message ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + content VARCHAR(128), + post_time DATETIME('now') + channel_id INTEGER + author_id INTEGER + FOREIGN KEY(channel_id) REFERENCES channel(id) + FOREIGN KEY(author_id) REFERENCES user(id) +); + +INSERT INTO organization (title) VALUES ("Lambda School"); + +INSERT INTO user (title) VALUES ("Alice"); +INSERT INTO user (title) VALUES ("Bob"); +INSERT INTO user (title) VALUES ("Chris"); + +INSERT INTO channel (title, organization_id) VALUES ("#general", 1); +INSERT INTO channel (title, organization_id) VALUES ("#random", 1); + From edd0040318256dddeaae066c2de72c1ecbcf335e Mon Sep 17 00:00:00 2001 From: Steve Date: Fri, 7 Sep 2018 13:37:03 -0400 Subject: [PATCH 2/2] sprint complete --- queries.sql | 87 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 72 insertions(+), 15 deletions(-) diff --git a/queries.sql b/queries.sql index 1b1a24f..ca241e7 100644 --- a/queries.sql +++ b/queries.sql @@ -1,18 +1,26 @@ +PRAGMA foreign_keys = ON; + +DROP TABLE IF EXISTS organization; +DROP TABLE IF EXISTS channel; +DROP TABLE IF EXISTS user; +DROP TABLE IF EXISTS user_channels; +DROP TABLE IF EXISTS message_table; + CREATE TABLE organization ( id INTEGER PRIMARY KEY AUTOINCREMENT, - title VARCHAR(128), + name VARCHAR(128) ); CREATE TABLE channel ( id INTEGER PRIMARY KEY AUTOINCREMENT, - title VARCHAR(128), + name VARCHAR(128), organization_id INTEGER, FOREIGN KEY(organization_id) REFERENCES organization(id) ); CREATE TABLE user ( id INTEGER PRIMARY KEY AUTOINCREMENT, - title VARCHAR(128), + name VARCHAR(128) ); CREATE TABLE user_channels ( @@ -22,22 +30,71 @@ CREATE TABLE user_channels ( FOREIGN KEY(channel_id) REFERENCES channel(id) ); -CREATE TABLE message ( +CREATE TABLE message_table ( id INTEGER PRIMARY KEY AUTOINCREMENT, - content VARCHAR(128), - post_time DATETIME('now') - channel_id INTEGER - author_id INTEGER - FOREIGN KEY(channel_id) REFERENCES channel(id) + content TEXT, + post_time DATETIME, + channel_id INTEGER, + author_id INTEGER, + FOREIGN KEY(channel_id) REFERENCES channel(id), FOREIGN KEY(author_id) REFERENCES user(id) ); -INSERT INTO organization (title) VALUES ("Lambda School"); +INSERT INTO organization (name) VALUES ("Lambda School"); + +INSERT INTO user (name) VALUES ("Alice"); +INSERT INTO user (name) VALUES ("Bob"); +INSERT INTO user (name) VALUES ("Chris"); + +INSERT INTO channel (name, organization_id) VALUES ("#general", 1); +INSERT INTO channel (name, organization_id) VALUES ("#random", 1); + +INSERT INTO user_channels (userid, channel_id) VALUES (1, 1); +INSERT INTO user_channels (userid, channel_id) VALUES (1, 2); +INSERT INTO user_channels (userid, channel_id) VALUES (2, 1); +INSERT INTO user_channels (userid, channel_id) VALUES (3, 2); + +INSERT INTO message_table (content, channel_id, author_id) VALUES ("message", 1, 1); +INSERT INTO message_table (content, channel_id, author_id) VALUES ("message", 1, 2); +INSERT INTO message_table (content, channel_id, author_id) VALUES ("message", 1, 3); +INSERT INTO message_table (content, channel_id, author_id) VALUES ("message", 2, 1); +INSERT INTO message_table (content, channel_id, author_id) VALUES ("message", 2, 1); +INSERT INTO message_table (content, channel_id, author_id) VALUES ("message", 2, 1); +INSERT INTO message_table (content, channel_id, author_id) VALUES ("message", 2, 1); +INSERT INTO message_table (content, channel_id, author_id) VALUES ("message", 2, 3); +INSERT INTO message_table (content, channel_id, author_id) VALUES ("message", 2, 3); +INSERT INTO message_table (content, channel_id, author_id) VALUES ("message", 2, 3); + +SELECT * FROM organization; +SELECT * FROM channel; + +SELECT channel.name FROM channel, organization + WHERE channel.organization_id = organization.id AND organization.name = "Lambda School"; + +SELECT message_table.content FROM message_table, channel + WHERE message_table.channel_id = channel.id AND channel.name = "#general" + ORDER BY post_time; + +SELECT channel.name FROM channel, user_channels, user + WHERE user_channels.userid = user.id AND + user_channels.channel_id = channel.id AND + user.name = "Alice"; + +SELECT user.name FROM channel, user_channels, user + WHERE user_channels.userid = user.id AND + user_channels.channel_id = channel.id AND + channel.name = "#general"; -INSERT INTO user (title) VALUES ("Alice"); -INSERT INTO user (title) VALUES ("Bob"); -INSERT INTO user (title) VALUES ("Chris"); +SELECT message_table.content FROM message_table, user + WHERE message_table.author_id = user.id AND user.name = "Alice"; -INSERT INTO channel (title, organization_id) VALUES ("#general", 1); -INSERT INTO channel (title, organization_id) VALUES ("#random", 1); +SELECT message_table.content FROM message_table, user, channel + WHERE message_table.author_id = user.id AND + message_table.channel_id = channel.id AND + user.name = "Bob" AND + channel.name = "#random"; +SELECT name AS "User Name", COUNT(*) AS "Message Count" FROM message_table, user + WHERE message_table.author_id = user.id + GROUP BY author_id + ORDER BY user.name DESC;