将具有公共外键的两个表合并为第三个表的主键,将其合并为mysql中的单个行

时间:2014-01-23 07:16:38

标签: mysql

我有以下三个表格。

表1:mymaster

id     name       age
--------------------
123    fiesta     0
124    figo       0 
125    classic    0

表2:mychild1

id   mymaster_id   item   itemvalue   date_time
----------------------------------------------
 1    123         classic   800000      null
 2    125         classic   800000      null
 5    123         fiesta    1100000     null

表3:mychild2

id   mymaster_id  item  itemvalue date_time
-------------------------------------------
1    123          dzire  800000     null
2    124          sx4    100000     null
3    123          dzire  500000     null

mymaster_idmychild1mychild2表的外键,它是mymaster表的主键。这是我想要的输出表。

mymaster_id  id   item   itemvalue   date_time   id   item   itemvalue  date_time
--------------------------------------------------------------------------------
  123        1  classic   800000      null       1    dzire   800000     null
  123        5  fiesta    110000      null       3    dxire   500000     null
  124        null null    null        null       2    sx4    100000      null
  125        2  classic   800000      null       null null    null       null

我尝试使用一些查询(如下所示),但它没有提供我需要的输出表。

select mm.id,mm.name,mc1.item,mc1.itemvalue,mc2.item,mc2.itemvalue  
 from mymaster mm 
  left join mychild1 mc1 on mc1.mymaster_id=mm.id
  left join mychild2 mc2 on mc2.mymaster_id=mm.id;

2 个答案:

答案 0 :(得分:0)

尝试在GROUP BY查询

中添加SELECT
GROUP BY mm.mymaster_id

您的查询将类似于

select mm.id,mm.name,mc1.item,mc1.itemvalue,mc2.item,mc2.itemvalue 
FROM mymaster mm 
LEFT JOIN mychild1 mc1 ON mc1.mymaster_id=mm.id 
LEFT JOIN mychild2 mc2 on mc2.mymaster_id=mm.id
GROUP BY mm.mymaster_id;

答案 1 :(得分:0)

或只是:
SELECT mm.id,mm.name,mc1.item,mc1.itemvalue,mc2.item,mc2.itemvalue
FROM mymaster mm
WHERE mc1.mymaster_id=mm.id AND mc2.mymaster_id=mm.id