有了这个配置,关系模型明智:
A --- * C * --- B
Run Code Online (Sandbox Code Playgroud)
C因此是a和之间的n到n表b.
鉴于这C有以下领域:aID, bID, cValue
并B具有以下内容:bID, bName
我怎样才能选择所有的条目A与n所有列B,与应用aID?
例如,select将返回以下列
aID - bName1 - bName2 - bName3
1 - cValue1 - cvalue2 - cvalue3
2 - cValue4 - cvalue5 - cvalue6
Run Code Online (Sandbox Code Playgroud)
由于A中的不同条目可能与B中的所有条目匹配,也可能不匹配,因此某些列可以为空.
单个查询无法做到这一点.
SQL语言对于在查询编译时知道列的数量和类型有非常严格的要求.查询数据确定列的数量或类型(例如使用此问题)是不可能的.甚至SELECT *查询仍然可以从表模式中获得固定的列信息.
相反,您必须分三步完成:
即便如此,在客户端系统中转换此数据通常被认为是更好的做法.
可能还有另一种可能性.如果您可以提前对A <=> B连接的数量进行合理的限制,您可以多次在A和B之间(通过C)进行LEFT JOIN,每次可能的连接一次,最终可能在结果中有很多NULL值.这也可能是一个非常浪费的查询.
| 归档时间: |
|
| 查看次数: |
38 次 |
| 最近记录: |