在我的工作场所,我偶然发现了以下需要解决的问题.尽管不是绝对必要的,但优选解决方案.
有一个包含一组故事的数据库,每个故事都有一组与之相关的主题.主题存储在表单(storyid,topicid)的单独表中.
问题是如何理想地选择5个主题(或至少2个,如果5个是不可能的),使得每个主题具有2个故事(或1,如果2是不可能的话),其在任何其他所选主题中不重复.该算法还必须返回与每个主题相关的"正确"故事.
这实际上是一个NP完全问题,没有有效的解决方案,超出了所有可能性的简单枚举,还是有一个有效的解决方案?
如果它没有有效的解决方案,请尝试证明它(虽然不是绝对必要).
如果它确实有一个有效的解决方案,请善待并发布.
假设我有以下两个表:
STUDENT
studentid lastname firstname
1 Smith John
2 Drew Nancy
STUDENT_STORY
studentid dateline storyid status
1 1328313600 10 2
1 1328313601 9 1
2 1328313602 14 2
2 1328313603 12 1
Run Code Online (Sandbox Code Playgroud)
现在,我需要一个SQL查询,在学生故事表中选择每个学生以及该学生的最新故事.
我在尝试这个:
SELECT s.*, ss.*
FROM student AS s
LEFT JOIN (
SELECT *
FROM student_story
WHERE student_story.studentid = s.studentid
ORDER BY dateline DESC LIMIT 1
) AS ss ON (ss.studentid = s.studentid)
Run Code Online (Sandbox Code Playgroud)
但是,此查询不起作用.它抱怨s.studentid是子查询的where子句中的未知字段.
请建议我如何实现我想要做的事情.
谢谢.
我正在寻找一个平面文件(或无服务器)数据库,我可以连接到C#Silverlight应用程序.
必须有一个,但我找不到任何东西.
编辑: SQLite是一个平面文件数据库的例子.我视图中的平面文件数据库是任何不需要服务器的数据库.不幸的是,SQLite不适用于Silverlight.
我想要实现的是能够存储,更新和删除数据库中的条目.在我的应用程序中,有一个包含扇区和节点的图表.我希望能够编辑扇区并将其设置存储在数据库中,我希望能够在图表上添加/检索/编辑/删除节点.
数据库需要免费用于教育目的.
编辑:我需要在手机上使用这个数据库.所以听不到任何服务.当我说"无服务器"时,我的意思是无服务器,我甚至不能使用localhost服务器.它需要从文件中读取数据并写入文件.
谢谢.
在速度和内存使用方面复制大型MySQL表的最佳方法是什么?
选项1.使用PHP,从旧表中选择X行并将其插入新表中.继续执行select/insert的下一次迭代,直到复制完所有条目.
选项2.使用INSERT INTO ... SELECT没有行限制的MySQL .
选项3.使用MySQL INSERT INTO ... SELECT,每次运行复制有限数量的行.
编辑:我不打算使用mysqldump.我的问题的目的是找到编写数据库转换程序的最佳方法.有些表已经改变,有些表没有改变.我需要自动执行整个复制/转换过程,而不必担心手动转储任何表.因此,如果您能够回答上述哪个选项最佳,那将会很有帮助.