动态连接表MySQL

Air*_*ful 5 mysql jointable

我是MySQL新手.我不确定我是对的.需要帮忙.

我有一个表格survey,其中包含以下列:

id, source_type, source_id, survey_date_time.

其他两个表是:

education哪个有id, col1, col2, col3列.

games哪个有id, col4, col5, col6列.

survey表格中的数据:

id       source_type    source_id    survey_date_time
--------------------------------------------------------
100      education         1         2013-07-25 00:00:00
101      games             1         2013-07-25 00:00:00
102      games             2         2013-07-26 00:00:00
103      education         2         2013-07-26 00:00:00
Run Code Online (Sandbox Code Playgroud)

education表中的数据

id    col1          col2          col3      
--------------------------------------------
1     col1_data1    col2_data1    col3_data1
2     col1_data2    col2_data2    col3_data2
Run Code Online (Sandbox Code Playgroud)

games表中的数据

id    col4          col5          col6      
--------------------------------------------
1     col4_data1    col5_data1    col6_data1
2     col4_data2    col5_data2    col6_data2
Run Code Online (Sandbox Code Playgroud)

我想动态读取数据,如:

select * from survey left join {survey.sorce_type} on {survey.sorce_type}.id=survey.source_id where survey.id={given_id}

您可以在此处找到架构

提前致谢.

更新: 选择语句将survey.*, {survey.sorce_type}.*代替*

谢谢

Mar*_*tin 6

这应该可以实现您的目标:

SELECT *
  FROM survey s
    LEFT JOIN eduction e ON s.source_type = 'education' AND e.id = s.source_id
    LEFT JOIN games g ON s.source_type = 'games' AND g.id = s.source_id
Run Code Online (Sandbox Code Playgroud)

SQL Fiddle就在这里.

从本质上讲,这是基于的加入适当的表source_type.所以当它education加入到eduction表中时(你可能会有拼写错误),当games它加入games表时.