简体   繁体   中英

MySQL select multiple row on table 2 with two differents Id from table 1 result in one row as two differents fields

Is it possible in only one MySQL query to get the desired result (below) returned into one row ?

Where id=1 in Table 1

Table 1

|------|----------|----------|
| id   | refIdOne | refIdTwo |
|------|----------|-----------
| 1    | 1        | 2        |
|------|----------|-----------

Columns "refIdOne" & "refIdTwo" refer Table 2 "id" column

Table 2

|------|------------------|
| id   | text             |
|------|------------------|
| 1    | cheese           |
| 2    | made with milk   |
|------|------------------|

Desired result returned in ONE ROW with custom AS columns named "subject" and "description" :

|----------|-----------------|
| subject  | description     |
|----------|-----------------|
| cheese   | made with milk  |

? Many thanks for help

* EDIT : Answer is *

select t21.text as subject, t22.text as description
from Table1 as t1
join Table2 as t21 on t1.refidone = t21.id
join Table2 as t22 on t1.refidtwo = t22.id
where t1.id = 1

Table2 has to joined twice to Table1.

select t21.text as subject, t22.text as description
from table1 t1
join table2 t21 on t1.refidone = t21.id
join table2 t22 on t1.refidtwo = t22.id

You need to perform Self join . Join Table2 . ID twice with Table1 . refIdOne and Table1 . refIdTwo

select t2.text as subject, t3.text as description 
from Table1  t1 
Left join Table2 t2 on t1.refIdOne = t2.id
Left join Table2 t3 on t1.refIdTwo = t2.id

without joins

SELECT
(SELECT text FROM Table2 WHERE id = (SELECT refIdOne FROM Table1 WHERE id = 1) ) AS name,
(SELECT text FROM Table2 WHERE id = (SELECT refIdTwo FROM Table1 WHERE id = 1) ) AS description

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM