Php 如果本年度数据不可用,则显示上一年度
我创建了一个查询来显示本年度的数据,而本年度数据不存在的行显示上一年度的数据,但现在的问题是,拥有本年度数据的公司也显示上一年度的数据 数据库公司年度数据Php 如果本年度数据不可用,则显示上一年度,php,mysql,Php,Mysql,我创建了一个查询来显示本年度的数据,而本年度数据不存在的行显示上一年度的数据,但现在的问题是,拥有本年度数据的公司也显示上一年度的数据 数据库公司年度数据 +--id--+---company_id----+----year-----+----number_of_shares_issued----+ + 1 + 20 + 2011 + 425 + + 2 + 21
+--id--+---company_id----+----year-----+----number_of_shares_issued----+
+ 1 + 20 + 2011 + 425 +
+ 2 + 21 + 2011 + 425 +
+ 3 + 22 + 2011 + 425 +
+ 4 + 23 + 2011 + 425 +
+ 5 + 21 + 2012 + 425 +
+ 6 + 20 + 2012 + 425 +
+ 7 + 23 + 2012 + 425 +
+ 8 + 20 + 2013 + 425 +
公司
+--id--+---company_name----+----category-----+
+ 20 + Company 1 + 2 +
+ 21 + Company 2 + 2 +
+ 22 + Company 3 + 2 +
+ 23 + Company 4 + 5 +
这是我的问题
$sql = mysqli_query($connect, "SELECT * FROM companies WHERE category = '36'");
$total_count = mysqli_num_rows($sql);
$companies = array();
while($row = mysqli_fetch_assoc($sql)) {
$companies[] = $row['id'];
}
$ids = join(', ', $companies);
$sql1 = mysqli_query($connect, "SELECT year FROM companies_annual_data WHERE company_id IN ($ids) ORDER BY year DESC LIMIT 0, $total_count");
$total_count1 = mysqli_num_rows($sql1);
$year = array();
$prev_val = null;
while($total_year = mysqli_fetch_assoc($sql1)) {
if($total_year['year'] != $prev_val) {
$year[] = $total_year['year'];
}
$prev_val = $total_year['year'];
}
$years = join(', ', $year);
$sql2 = mysqli_query($connect, "SELECT DISTINCT number_of_shares_issued, year, company_id FROM companies_annual_data WHERE company_id IN ($ids) AND year IN ($years)");
$prev_val_y = null;
while($share_num = mysqli_fetch_assoc($sql2)) {
if($share_num['year'] != date('Y')) {
echo "Number Of Shares : " . $share_num['number_of_shares_issued'];
echo " Year : " . $share_num['year'];
echo " Company Id : " . $share_num['company_id'];
echo "<br />";
}
}
这是错误的,输出应该是这样的
Number Of Shares : 284125000 Year : 2015 Company Id : 348
Number Of Shares : 100000000 Year : 2015 Company Id : 351
Number Of Shares : 152098334 Year : 2016 Company Id : 356
Number Of Shares : 283500000 Year : 2016 Company Id : 366
如果我理解这个问题,谁能帮我解决这个问题 这将返回所提供的每家公司最近一年的记录数据 类别是36
SELECT CAD.num_of_Shares_Issued, CAD.`Year`, CAD.Company_ID
FROM Companies C
INNER JOIN (SELECT max(`year`) MYear, Company_ID
FROM company_Annual_data
GROUP BY Company_ID) SUB
on SUB.CompanyID = C.Company_ID
LEFT JOIN Company_Annual_data CAD
on C.ID = CAD.Company_ID
and SUB.MYear = CAD.`year`
WHERE C.Category = 36
在我看来,如果你按股数和公司ID最大化年度和组数,你就会得到你想要的结果。我不明白为什么你有3个查询,而1使用连接就足够了。是因为你想按公司行业汇总数据,比如获取1个行业内的公司数据,我不知道如何进行查询,所以为了简单起见,我提出了这个查询:@xQbert你能帮我吗?查看关于连接你得到了正确的答案,但我有一个错误mysqli_fetch_assoc希望参数1是mysqli_result,布尔值是什么,因为使用了caps等?我在PHP方面很弱;SQL语言能力强。我们能否先确保SQL在DB查询窗口中获得正确的结果,然后跳转到PHP中?其他人可能需要帮助PHPgreat它对我有用知道,谢谢你非常感谢你能解释一下你到底做了什么吗
SELECT CAD.num_of_Shares_Issued, CAD.`Year`, CAD.Company_ID
FROM Companies C
INNER JOIN (SELECT max(`year`) MYear, Company_ID
FROM company_Annual_data
GROUP BY Company_ID) SUB
on SUB.CompanyID = C.Company_ID
LEFT JOIN Company_Annual_data CAD
on C.ID = CAD.Company_ID
and SUB.MYear = CAD.`year`
WHERE C.Category = 36