我试图对一本工程杂志的API提供的信息进行分类。我已将下列信息摘录到一个表格中:
ID (integer),
Journal Entry Name (Text),
Description (Text),
Page Length (integer),
Has Media (boolean)每个“日记条目”只有一个与其相关的ID。每个ID还具有API不返回的其他特性,但我想使用这些特性进行排序。它们是:
我创建了第二个表格,格式如下:
ID (integer),
Category (text),
Boolean1 (bool),
Boolean2 (bool),
Boolean3 (bool)由于每个ID可以有多个类别,因此当发生这种情况时,将向此表中添加另一行。任何给定的行都只有一个ID和一个类别。
我想做的是:
我的计划是创建一个新的表,其中数字1到10位于第一列,然后用前十大类填充第二列。然后,我可以使用一个类似于分页的进程,在这个过程中,第n页只显示来自原始值的相应类别的值。然而,我似乎无法进入这十大列表/矩阵,也不知道是否有更好的方法。
不幸的是,我不是一个MySQL或PHP编码器的交易,并得到了这么多到目前为止,很多谷歌。我已经完全找不到像我想要的导航方法的任何指南。由于我不知道合适的术语,我只是尝试随机搜索谷歌在这一点。
这是最好的办法吗?还是创建第三张表格更好呢?是否有更简单的方法可以使用我已经编写的PHP和MySQL代码来完成这个任务呢?
发布于 2013-02-21 12:59:02
我不确定我真的理解您在这里要做什么,但我最好的猜测是,您可能希望将两个初始表组合在一起,并将类别设置为一个集合,而不是一个单独的术语,这样您就可以在每个唯一ID中有一个条目。
然后,你只需要根据需要为你的十大发现中的每一个写电话。由于每个id可以有一个未知的类别数,我将从限制为10开始,然后处理从顶部匹配开始的返回,抓取其类别,如果有10次以上抓取前10次,如果有少于10次抓取,更新您正在寻找的数量(如果有4次,那么现在您正在寻找6),然后继续进行下一次最佳匹配。
也许是这样的:
categories = null;
$delimeter = ',';
$count = 1;
$top10 = array();
$result = mysql_query("
SELECT *
FROM table_name
ORDER BY page_length DESC
LIMIT 10");
while($row = mysql_fetch_array($result) && $count <=10)
{
$categories = $row['categories'];
$id = $row['id'];
$splitcontents = explode($delimeter, $catagories);
foreach($splitcontents as $category){
if (!in_array($catagory,$top10)){
$top10[$count] = array(
'category'=>$category,
'journal_id'=>$id
);
$count++;
}
}
}https://stackoverflow.com/questions/15001284
复制相似问题