Skip to main content

SQL Journey: Blog #8

Challenge: FriendBook

Given:

CREATE TABLE persons (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    fullname TEXT,
    age INTEGER);
    
INSERT INTO persons (fullname, age) VALUES ("Bobby McBobbyFace", "12");
INSERT INTO persons (fullname, age) VALUES ("Lucy BoBucie", "25");
INSERT INTO persons (fullname, age) VALUES ("Banana FoFanna", "14");
INSERT INTO persons (fullname, age) VALUES ("Shish Kabob", "20");
INSERT INTO persons (fullname, age) VALUES ("Fluffy Sparkles", "8");

CREATE table hobbies (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    person_id INTEGER,
    name TEXT);
    
INSERT INTO hobbies (person_id, name) VALUES (1, "drawing");
INSERT INTO hobbies (person_id, name) VALUES (1, "coding");
INSERT INTO hobbies (person_id, name) VALUES (2, "dancing");
INSERT INTO hobbies (person_id, name) VALUES (2, "coding");
INSERT INTO hobbies (person_id, name) VALUES (3, "skating");
INSERT INTO hobbies (person_id, name) VALUES (3, "rowing");
INSERT INTO hobbies (person_id, name) VALUES (3, "drawing");
INSERT INTO hobbies (person_id, name) VALUES (4, "coding");
INSERT INTO hobbies (person_id, name) VALUES (4, "dilly-dallying");
INSERT INTO hobbies (person_id, name) VALUES (4, "meowing");

CREATE table friends (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    person1_id INTEGER,
    person2_id INTEGER);

INSERT INTO friends (person1_id, person2_id)
    VALUES (1, 4);
INSERT INTO friends (person1_id, person2_id)
    VALUES (2, 3);

Step 1

We've created a database for a friend networking site, with a table storing data on each person, a table on each person's hobbies, and a table of friend connections between the people. In this first step, use a JOIN to display a table showing people's names with their hobbies.

Code:
SELECT persons.fullname,hobbies.name FROM persons JOIN hobbies ON persons.id = hobbies.person_id;

Query results:

fullnamename
Bobby McBobbyFacedrawing
Bobby McBobbyFacecoding
Lucy BoBuciedancing
Lucy BoBuciecoding
Banana FoFannaskating
Banana FoFannarowing
Banana FoFannadrawing
Shish Kabobcoding
Shish Kabobdilly-dallying
Shish Kabobmeowing
***Notice that Fluffy Sparkles is not displayed in the first column because this is an (inner) JOIN not an outer join.


Step 2

Now, use another SELECT with a JOIN to show the names of each pair of friends, based on the data in the friends table.

Code:

SELECT a.fullname, b.fullname FROM friends
    JOIN persons a
    ON friends.person1_id = a.id
    JOIN persons b
    ON friends.person2_id = b.id;

Query results:

fullnamefullname
Bobby McBobbyFaceShish Kabob
Lucy BoBucieBanana FoFanna


Comments

Popular posts from this blog

Privacy Policy of ShinStats: descriptives calc

Privacy Policy Shin Nix built the ShinStats app as an Ad Supported app. This SERVICE is provided by Shin Nix at no cost and is intended for use as is. This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service. If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy. The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which are accessible at ShinStats unless otherwise defined in this Privacy Policy. Information Collection and Use For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information. The information that I request will be retaine...

Gears Update

It has been a while since my last post and many things have happened since then. For one, I decided to upgrade my laptop as I saw it fit for the direction I am moving towards particularly on data analytics. It's been almost 10 years since I bought "Julian", my first work laptop, and there were so many milestones that we shared together. I bought my first laptop during my second job in Taguig City. It served as an extension of myself as I work to earn for my family particularly in helping my siblings with their education as I am the eldest and breadwinner of the family. That laptop was able to create a joint personnel reporting system excel file which was used by the Philippine Army to be able to account their personnel on a national level during my stint as an Engineer / Researcher in the aforementioned organization. Julian was my laptop when I finished my Master's degree at the Ateneo de Davao University where I also created the Programmable Logic Controller Trainer ...

Coursehero: The Comments that I received from Students all over the world (2022)

What's up Nixers! I was inspired to do a blog today since I was supposed to watch some netflix videos but figured why not pass by here for a while. I recently visited my account and found that my latest answer was tagged as helpful by the student with a custom-made message with a heart. For those of you who do not know, there are three things that you get to receive from students when answering questions in Coursehero.  (1) Unhelpful which means your answer may either be incorrect, was no longer needed by the student (since the submission of the assignment has already lapsed and you were too late to answer the question) or they just don't feel connected to your solution. You see, in this platform, you really cannot please everybody. I find it a hard and bitter pill to swallow. After all, I did my part. I dedicated brain cells to answer the question and yet, it was unhelpful? Worst of all, I won't get paid for that time I spent answering the question. But yeah, one thing tha...