FAQ: Subqueries - Non-Correlated Subqueries II

This community-built FAQ covers the “Non-Correlated Subqueries II” exercise from the lesson “Subqueries”.

Paths and Courses
This exercise can be found in the following Codecademy content:

SQL: Table Transformation

FAQs on the exercise Non-Correlated Subqueries II

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

How is the airports table connected to the flights table?


SELECT * FROM flights
WHERE origin in (
	SELECT code FROM airports
  WHERE faa_region = 'ASO'
);

In this example, we use code to associate the flight with the airport.
Why does this code work only with code column and not other columns for example id?

I am trying to understand how is the relationship formed between the two tables

4 Likes

I have the exact same question. I’m not sure how returning a “code” in the filter for the airports table links up with an “origin” from the flights table. Any feedback would be much appreciated.

thank you

1 Like

Guys, there is no relationship between two tables as it said in the chapter’s description:

A non-correlated subquery is a subquery that can be run independently of the outer query and as we saw, can be used to complete a multi-step transformation.

The subquery just gives us a list with appropriate codes which then are being processed by IN statement.

P.S.
The field flights.origin contains the same data as airports.code because they both probably get it from the third table that contains airport codes.

2 Likes

Ok, so if the text in flights.origin and airports.code is the same, I am no longer confused lol. Is that what we’re getting at?

thanks for replying!!

1 Like

But then shouldn’t it mentioned in the course? It’s very confusing.

2 Likes

I had the same question. But if airports.code and flights.origin have the same data, can’t be this done with a join?

2 Likes

Yes, it can be done with a join. I got the same result.

select * from flights f join
airports a on f.origin = a.code
where a.city = ‘LOS ANGELES’;

The JOIN query takes approximately 20 ms longer than the query with IN statement.

4 Likes

I’m wondering why “in”, within the following:

SELECT *
FROM flights
WHERE origin in (
  SELECT code
  FROM airports
  WHERE faa_region = "ASO");

… isn’t capitalized, like so:

SELECT *
FROM flights
WHERE origin IN (
  SELECT code
  FROM airports
  WHERE faa_region = "ASO");

I understand that the actual SQL isn’t case-sensitive, but it seems like it would make sense.

2 Likes

How do we determine the column name to be used with the SELECT statement for the nested query?
Why does not the query fetch any results when we use columns other than ‘code’? Why doesn’t ‘airports.id’ works in place of ‘code’?

I’ve read through the replies to this topic and it still makes no sense to me. The list of ‘code’ s is not found anywhere in the flights table. How are the 'code’s being used as a filter?

So, I think you’re making the right point, but for people who are still confused, it’s not quite accurate to say that the two columns (flights.origin and airports.code) contain the same data. It’s clearly not true–flights.origin is all letters and airports.code has letters and numbers.

It looks like flights.origin is a SUBSET of airports.code , and that’s how the two tables are connected.

If anyone has a better explanation, please correct me!!

1 Like

I have the same question

I come into the conclusion this might behave as a join

after:

SELECT * FROM flights
WHERE origin in......

My perspective;

SELECT * FROM flights
join airports on flights.origin = .airports.code