我是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}.*代替*
谢谢
这应该可以实现您的目标:
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表时.
| 归档时间: |
|
| 查看次数: |
3647 次 |
| 最近记录: |