:
我不得不说我远不是 PHP 和 MySQL 方面的专家,所以我不知道如何提出我的问题。这解释了标题的模糊性。我有两张写得不好但不允许更改的表。他们唯一共享的是一个名为 url 的字段。它们没有主键或索引。这是它们的结构:
Shareholder ||| tags
url1 | value1 ||| url1 | tag1 tag2 tag350 tag 400
url2 | value2 ||| url2 | tag8 tag400 tag350
url3 | value1 ||| url3 | tag2 tag1
url4 | value1 ||| url4 | tag5 tag 600
url5 | value2 ||| url5 | tag 60 tag8
从这些表中,我必须找到按股东划分的平均标签数,例如,股东是 value1、value2。
例如,预期的输出是股东1(价值1)
使用临时数组通过 url 计算标签的数量相当容易。然后我认为我必须将这些价值添加到相关股东中,但我迷路了。我不知道如何解决这个问题,甚至不知道如何形式化这种类型的 PHP/SQL 问题。我做了一个自然失败的尝试。尽管如此,我还是将其粘贴在下面。有人能帮我吗?
$sqlprim = "SELECT DISTINCT content FROM shareholder";
$deletedtermsprim = mysql_query ($sqlprim);
while ($rowprim = mysql_fetch_array($deletedtermsprim))
{
$tagsbyshareholder = array();
foreach ($rowprim as $keys1 => $values1)
{
$sql = "SELECT url FROM shareholder WHERE content like \"$values1\"";
$output1 = mysql_query($sql);
$deletedterms = array("tags", "[", "]", ":");
while ($row = mysql_fetch_array($output1)) {
foreach ($row as $columnName => $columnUrl) {
$sql2 = "SELECT content
FROM tags WHERE url like\"$columnUrl\"";
$deletedterms = mysql_query($sql2);
while ($row2 = mysql_fetch_array($deletedterms))
{
foreach ($row2 as $keys2 => $columntags);
{
$preparedtags = str_replace($deletedterms, "", $columntags);
$temporaryarray = explode(" ", $preparedtags);
$temporaryarray = array_values(array_filter($temporaryarray));
$countedtagsbyurl = count($temporaryarray);
array_push($tagsbyshareholder, $countedtagsbyurl);
}
}
}
}
}
foreach ($tagsbyshareholder as $countitems => $numberoftagsbyshareholder);
echo $values1. ";". $numberoftagsbyshareholder;
echo "<br />";
}