我正在使用MySQL查询检查2个表中是否有不到30天的结果。
我有表1'供应商银行详细信息'和表2'供应商发票'
我想要做的是,如果从表1中找到结果,则回显出结果的类型,即
Result from Table 1 echo{some data from table} echo{some data from table}
或者如果结果来自表2,则回显以下内容:
Result from Table 2 echo{some data from table} echo{some data from table}
否则,如果在两个回显中都发现了结果,那么结果多次出现在表1和表2中
即:
Result from Table 1 echo{some data from table} echo{some data from table}
Result from Table 2 echo{some data from table} echo{some data from table}
Result from Table 1 echo{some data from table} echo{some data from table}
Result from Table 1 echo{some data from table} echo{some data from table}
Result from Table 2 echo{some data from table} echo{some data from table}
我正在尝试按日期组织这些。否则如果没有找到结果显示没有找到结果。我的问题是它不工作,没有显示结果,也没有回应我没有找到的结果。这是我的代码,请有人告诉我我哪里出错了,谢谢
<?php require_once 'config.php'; ?>
<?php
$tbl_name1 = 'supplier_bank_details';
$tbl_name2 = 'supplier_invoices';
$query3 = "select * from $tbl_name2 as $tbl_name2, $tbl_name1 as $tbl_name1 WHERE $tbl_name2.date > NOW() - INTERVAL 30 DAY AND $tbl_name1.date > NOW() - INTERVAL 30 DAY AND $tbl_name2.user_id = '{$_SESSION['id']}' AND $tbl_name1.user_id = '{$_SESSION['id']}' GROUP BY $tbl_name2.user_id ORDER BY $tbl_name2.date AND $tbl_name1.date DESC";
$result3 = mysql_query($query3) or die( mysql_error() );
while($row3 = mysql_fetch_assoc($result3)){
$datetime1 = new DateTime(); // Today's Date/Time
$datetime2 = new DateTime($row3['date']);
$interval = $datetime1->diff($datetime2);
$s = $interval->format('%d days ago');
if($s === '0 days ago') {
$z = 'amended today';
}else{
$z = 'amended about '.$s.'';
}
$account_number = '****'.substr($row3['account_number'], -4);
if(mysql_num_rows($result3) > 0) {
// your unique column for Bank Details
if( !is_null($row3['sort_code'])) {
echo '<div class="contracts_area"><div class="table_header"></div>';
echo '<div class="request"><p>result from table 1</p><p>'.$row3['sort_code'].'</p><p>'.$account_number.'</p><p>'.$z.'</p></div>';
echo '</div>';
}
// your unique column for Invoice Details
if( !is_null($row3['reference'])) {
echo '<div class="contracts_area"><div class="table_header"></div>';
echo '<div class="request"><p>result from table 2</p><p>'.$row3['reference'].'</p><p>'.$row3['status'].'</p><p>'.$z.'</p></div>';
echo '</div>';
}
}else{
echo 'No Recent Activity';
}
} ?>
答案 0 :(得分:0)
问题在于,在查询中,您不是要求“表1中的行或表2中的行”独立满足条件。您要求“表1中的行以及表2中的匹配行”,每个行符合相同的条件(它们具有匹配的ID)。
你可能想要的更像是UNION。这基本上需要两个不同的查询(table1中符合条件的行和符合条件的table2中的行)并将它们组合为一个统一的结果列表。
您没有指定架构以确保其有效,但查询可能类似于
SELECT * from $tbl1_name where date > NOW() - INTERVAL 30 DAY and user_id = '{$_SESSION['id']}'
UNION
SELECT * from $tbl2_name where date > NOW() - INTERVAL 30 DAY and user_id = '{$_SESSION['id']}'
ORDER BY date DESC;
请记住,现在这将更改存在哪些列。同样,你没有给我们架构,但是在你从表2中有列后跟表1中的列之前,所有在同一行中,现在你将有行跟随行,所有这些行都使用相同的行列。因此,您需要调整以后的评估来处理这个问题。