20

I have two tables A & B.

Table A

id | name | num

Table B

id | date | roll

id in table B is a foreign key which relates to the id in table A.

I want to get the contents of table B where id is given and also along with that data, I need the name whose id is given from table A.

NOTE: cannot use multiple queries separated by commas; need to do both the SELECTs in one query.

1
  • 1
    How can a question with 177k views be closed in favor of a question with 3k views? Commented Dec 10, 2020 at 10:55

4 Answers 4

25

Joining tables is a fundamental principle of relational databases. In your case, A and B are related with the id column, which means that you can use a syntax similar to this one:

SELECT a.id, a.name, a.num, b.date, b.roll
FROM a
INNER JOIN b ON a.id=b.id;

INNER JOIN means that you'll only see rows where there are matching records in A and B. If you want all the rows in A and matching records in B, you could change INNER JOIN to LEFT JOIN. Conversely, if you want all the records from B and only the matching ones from A, use RIGHT JOIN. Finally, if you need everything from both tables, matching or not, you can use FULL JOIN.

1
4

For getting the result from the two table associated with the foreign key, you need to join the tables.

Find below query as like you want the result:

SELECT name, date, roll
FROM A
INNER JOIN B
ON A.id = B.id;
1
  • sweet and simple. thanks
    – user270295
    Commented Mar 9, 2023 at 6:51
3

You need to join these tables to get the result that you want.

SELECT b.*, a.name FROM tableB AS b INNER JOIN tableA as A ON (b.id=a.id);

This query will return everything from Table B and name from Table A where the ID from Table B is the same as the ID from Table A.

0

To retrieve data from both table associated with foreign key i.e(common column) you have to join both the tables.

if you matching data from both table then use INNER JOIN.

> SELECT A.List_Of_columns,B.List_Of_columns  FROM Table1 AS A   INNER
> JOIN Table2 as B   ON A.ID=B.ID (Here Id is Common in both table).

If you want matching data from both table along with all records from table1 then use left join instead of Inner Join. if you want all records from table2 use right join.

Not the answer you're looking for? Browse other questions tagged or ask your own question.