我已经准备好一个 PHP 代码,它将从 mysql 数据库中获取数据,该 PHP 代码还将以表格形式显示数据。
我想要实现的目标:
我有一个名为“stackoverflow”的虚拟数据库,其中有两个表“customer”和“receipt”这两个表都有一个名为“date”的字段,其数据类型也为日期。 full schema here
我希望从这些表中选择一些条目出现在 html 表中。条目应按日期升序排列。
我尝试过并取得的成就:
数据已成功获取并以表格形式显示,但日期排序尚未完成。
output of my result (without php code since jsfiddle doesn't support php)
我使用 PHP 比较每个表的日期之间的日期,然后显示相应的数据
<?php
while( $kb = mysql_fetch_assoc($customer) ){
customer_data($kb); //function which echos <tr>'s of customer table
while($cd = mysql_fetch_assoc($reciept)){ //function which echos <tr>'s of reciept table
if($cd['date'] <= $kb['date']){
reciept_data($cd);
break;
}
}
}
?>
我面临的问题:
排序与我想要的不完全一样。 (只有其中一些是按照日期递增的顺序)。
链接到我的整个项目文件,其中包含数据库架构和示例数据(只需导入到 phpmyadmin)以供引用:http://www.mediafire.com/?bcbvkn8uq89ya6n
如果您仍然对我想要获得什么样的输出感到困惑。我在 Excel 中制作了一个表格,这是图像:
几天来我一直在努力解决这个问题。我想这是因为我缺乏sql技能?任何帮助将不胜感激。
谢谢!
更新:
这是我使用 php 从表中获取数据的方法:
$customer = mysql_query("SELECT * FROM customer WHERE customer_name = '$name' ORDER BY date ASC ");
$reciept = mysql_query("SELECT * FROM reciept WHERE name = '$name' ORDER BY date ASC");
经过一番研究,我发现了 UNION 运算符,它连接两个 select 语句,并开发了这个查询:
SELECT DATE, customer_name, grand_total
FROM customer
WHERE customer_name = 'JHON'
UNION ALL
SELECT DATE, name, recd_amount
FROM reciept
WHERE name = 'JHON'
但我只能选择相等的否。两个 select 语句中的列数,以及如何按日期排序?
在 if 语句中应该使用“==”进行相等比较。 '=' 将为变量赋值
if($cd['date'] = $kb['date']){
到
if($cd['date'] == $kb['date']){
联合排序
$query = " (SELECT DATE, customer_name, grand_total
FROM customer
WHERE customer_name = 'JHON')
UNION ALL
(SELECT DATE, name, recd_amount
FROM reciept
WHERE name = 'JHON')
order by customer.Date desc"
帮助链接 MYSQL UNION ORDER BY
我是一名优秀的程序员,十分优秀!