Python 简化SQL语句--多对多关系
在从具有许多关系的表中选择记录时,我遇到了一个一般性问题 假设我有如下两个表作为示例:Python 简化SQL语句--多对多关系,python,sql,database,sqlite,Python,Sql,Database,Sqlite,在从具有许多关系的表中选择记录时,我遇到了一个一般性问题 假设我有如下两个表作为示例: MainTable: id <-- Primary key description DataTable: id <-- Primary key data1 data2 data3 description FOREIGN KEY of Table(MainTable) 有没有办法删除这个for循环,并使用一个sql语句来执行这个操作 我想将DataTable中的所
MainTable:
id <-- Primary key
description
DataTable:
id <-- Primary key
data1
data2
data3
description FOREIGN KEY of Table(MainTable)
有没有办法删除这个for循环,并使用一个sql语句来执行这个操作
我想将DataTable中的所有记录打包,以获得所有可用的描述和数据
将它们存储在代码中。
这样我就有了这样的东西:
map[description]=数据表中该描述的每一行
试着像这样使用join
:
SELECT MT.description, group_concat(DT.data1)
FROM DataTable DT JOIN MainTable MT ON (DT.description = MT.description)
GROUP BY MT.description
ORDER BY MT.description
在DataTable.description=MainTable.description where DataTable.description=item上从DataTable JOIN MainTable中选择data1与您的问题无关,但您的数据库设计可能会更好。具体来说,在datatable中删除description字段,并将其替换为MainTableID。这将是您的外键。是的,这与我想要的非常接近,我唯一的问题是返回的值如下所示:(description1 | data1),(description1 | data2),(description1 | data3)。有没有一种方法可以将它们连接起来,这样我就可以得到类似于(description1 | data1,data2,data3,data4…)(description2 | data1,data2,data3…)我在一个程序中使用sql,在这个程序中,我必须迭代所有返回的值,就像上面的查询一样,这将是大量减少数据库值的值。哇!!从来都不知道有这样的事情存在。是的,这正是我想要的:)非常感谢
SELECT MT.description, group_concat(DT.data1)
FROM DataTable DT JOIN MainTable MT ON (DT.description = MT.description)
GROUP BY MT.description
ORDER BY MT.description