我正在工作的网站,列出了各种餐厅的目录,目前正在切换到一个较新的CMS。我遇到的问题是,两个CMSes表示餐馆数据的方式不同。
旧CMS
交叉引用数据库,因此它可以为这样的示例列出一个条目:
ID / FieldID / ItemID / data
3/1/6/123号福街
4/2/6/律师
引用FieldID 1为街道,FieldID 2为城市的引用表。
另一个引用表将ItemID 6引用为美味餐厅。
新CMS
当我设置一个示例列表时,数据库在新CMS上的方式是所有的直接行,没有交叉引用。因此,同一家餐厅的数据将是:
ID /姓名/街道/城市
3/美食餐厅/福街123号/酒吧
大约有2,000个餐厅列表,所以从SQL行数据大小来看,这并不是一个很大的数目,但是当然,它足以不考虑手工重新输入所有的餐厅列表。
我有一些想法,但这将是非常肮脏和需要一段时间,我不是一个MySQL专家,所以我在这里有一些想法,我应该如何处理它。
感谢那些能帮忙的人。
发布于 2009-10-20 02:17:52
您可以多次对数据表进行连接,以获得如下内容:
insert into newTable
select oldNames.ItemID,
oldNames.Name,
oldStreets.data,
oldCities.data
from oldNames
inner join oldData as oldStreets on oldNames.ItemID = oldStreets.ItemID
inner join oldData as oldCities on oldNames.ItemID = oldCities.ItemID
inner join oldFields as streetsFields
on oldStreets.FieldID = streetsFields.FieldID
and streetsFields.Name = 'Street'
inner join oldFields as citiesFields
on oldCities.FieldID = citiesFields.Field
and citiesFields.Name = 'City'你没有提供所有表的名字,所以我编了一些名字。如果您有更多需要提取的字段,扩展这种查询应该非常简单。
https://stackoverflow.com/questions/1592114
复制相似问题