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