Php 在所选数据库表列中查找所选标识符最后一项的输入
我的表格上有一列,用于返回我在某家公司工作的最后日期。 对于我的查询,我不认为我可以依赖时间戳,因为一些条目是预先输入系统的,例如,我今天可能在一家公司工作,下周就可以获得合同,我会在今天工作完成后更新这两份工作(今天和下周) 表1的格式为(按日期排列,不一定是填充的日期(时间戳)) 表2Php 在所选数据库表列中查找所选标识符最后一项的输入,php,mysql,Php,Mysql,我的表格上有一列,用于返回我在某家公司工作的最后日期。 对于我的查询,我不认为我可以依赖时间戳,因为一些条目是预先输入系统的,例如,我今天可能在一家公司工作,下周就可以获得合同,我会在今天工作完成后更新这两份工作(今天和下周) 表1的格式为(按日期排列,不一定是填充的日期(时间戳)) 表2 companyname | income | profit | avgmarkup | lastjob ===========================================
companyname | income | profit | avgmarkup | lastjob
==========================================================
Company A | | | |
Company B | | | |
目前,我能够填充收入和利润字段,但正在使用Avg Markup
和Last job
字段
填充表2的当前代码
<table id="client-table" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th class="client-id">ID</th>
<th>companyame</th>
<th>income</th>
<th>profit</th>
<th>avgmarkup</th>
<th>lastjob</th>
</tr>
</thead>
<tbody>
<?php
$sql = "SELECT `Table2`.*, SUM(`Table1`.`payment`) AS payment,
SUM(`Table1`.`payment` - `Table1`.`cost`) AS profit,
SUM(((`Table1`.`payment` - `Table1`.`cost`) / `Table1`.`cost`)*100) AS markup
FROM `Table2`
LEFT JOIN `Table1` ON `Table1`.`customer` = `Table2`.`Table2`
GROUP BY `Table2`.`id`";
$query = mysqli_query($conn, $sql);
if (mysqli_num_rows($query) > 0) {
// output data of each row
while($result = mysqli_fetch_assoc($query)) {
echo "<tr>
<td class='client-id'>".$result['id']."</td>
<td>".$result['company']."</td> <----- Pulled from database table
<td>".$result['payment']."</td>
<td>".$result['profit']."</td>
<td>".$result['markup']."</td> <-----Markup not giving correct answer
<td></td> <------Last job date should go here
</tr>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
</tbody>
</table>
所以拿着这个,我用了上面的-a
SUM(((`Table1`.`payment` - `Table1`.`cost`) / `Table1`.`cost`)*100) AS markup
这并不能给出一个真实的答案
然而,我的主要查询是基于上一个作业
我已将日期类型设置为date
,因此在数据库中应将其识别为
我有没有办法将每个CAO公司链接到表1中为其显示的最后一个日期,并在表2中显示该日期
抱歉,如果你的话太啰嗦了,我希望有人能帮忙:-)无论你在哪里加上英镑符号都没有关系
CREATE TABLE Table1
(`id` INT(1),
`company` varchar(9),
`job` varchar(4),
`date` date,
`payment` varchar(4),
`cost` varchar(3))
;
INSERT INTO Table1
(`id`, `company`, `job`, `date`, `payment`, `cost`)
VALUES
(1, 'Company A', 'JobA', '2019-01-09', '120', '100'),
(2, 'Company B', 'JobB', '2019-02-09', '120', '100'),
(3, 'Company A', 'JobC', '2019-03-09', '120', '100'),
(4, 'Company B', 'JobD', '2019-04-09', '120', '100'),
(5, 'Company A', 'JobE', '2019-05-09', '120', '100'),
(6, 'Company B', 'JobF', '2019-06-09', '120', '100'),
(7, 'Company A', 'JobG', '2019-07-09', '120', '100')
;
CREATE TABLE Table2
( `id` int,
`companyname` varchar(9))
;
INSERT INTO Table2
(`id`,`companyname`)
VALUES
(1,'Company A'),
(2,'Company B');
这是Select语句
SELECT
`Table2`.*
, SUM(`Table1`.`payment`) AS money_in
,SUM(`Table1`.`payment` - `Table1`.`cost`) AS profit
,SUM(`Table1`.`payment` - `Table1`.`cost`) / SUM(`Table1`.`cost`)*100 AS markup
,t1.`lastjob` `lastjob`
FROM `Table2`
LEFT JOIN `Table1` ON `Table1`.`company` = `Table2`.`companyname`
inner JOIN (SELECT MAX(`date`) `lastjob`, `company`
FROM `Table1`
GROUP BY `company`) t1 ON `Table1`.`company` = t1.`company`
GROUP BY Table2.`Companyname`,Table2.`id`;
获取以下结果
id companyname money_in profit markup lastjob
1 Company A 480 80 20 2019-07-09
2 Company B 360 60 20 2019-06-09
这道数学题行得通
最后一个工作日您必须在此处以t1的形式自动加入表1,以获得最后一个工作的正确日期在哪里添加磅号无关紧要
CREATE TABLE Table1
(`id` INT(1),
`company` varchar(9),
`job` varchar(4),
`date` date,
`payment` varchar(4),
`cost` varchar(3))
;
INSERT INTO Table1
(`id`, `company`, `job`, `date`, `payment`, `cost`)
VALUES
(1, 'Company A', 'JobA', '2019-01-09', '120', '100'),
(2, 'Company B', 'JobB', '2019-02-09', '120', '100'),
(3, 'Company A', 'JobC', '2019-03-09', '120', '100'),
(4, 'Company B', 'JobD', '2019-04-09', '120', '100'),
(5, 'Company A', 'JobE', '2019-05-09', '120', '100'),
(6, 'Company B', 'JobF', '2019-06-09', '120', '100'),
(7, 'Company A', 'JobG', '2019-07-09', '120', '100')
;
CREATE TABLE Table2
( `id` int,
`companyname` varchar(9))
;
INSERT INTO Table2
(`id`,`companyname`)
VALUES
(1,'Company A'),
(2,'Company B');
这是Select语句
SELECT
`Table2`.*
, SUM(`Table1`.`payment`) AS money_in
,SUM(`Table1`.`payment` - `Table1`.`cost`) AS profit
,SUM(`Table1`.`payment` - `Table1`.`cost`) / SUM(`Table1`.`cost`)*100 AS markup
,t1.`lastjob` `lastjob`
FROM `Table2`
LEFT JOIN `Table1` ON `Table1`.`company` = `Table2`.`companyname`
inner JOIN (SELECT MAX(`date`) `lastjob`, `company`
FROM `Table1`
GROUP BY `company`) t1 ON `Table1`.`company` = t1.`company`
GROUP BY Table2.`Companyname`,Table2.`id`;
获取以下结果
id companyname money_in profit markup lastjob
1 Company A 480 80 20 2019-07-09
2 Company B 360 60 20 2019-06-09
这道数学题行得通
最后一个工作日,您必须在此处以t1的形式自动加入表1,以便根据我们的对话获得最后一个工作的正确日期。这是对您的数据的查询
SELECT `Table2`.*, SUM(`Table1`.`payment`) AS money_in,
SUM(`Table1`.`payment` - `Table1`.`cost`) AS profit,
SUM(`Table1`.`payment` - `Table1`.`cost`) / SUM(`Table1`.`cost`)*100 AS markup,
MAX(`Table1`.`date`) AS `lastjob`
FROM `Table2`
LEFT JOIN `Table1` ON `Table1`.`company` = `Table2`.`companyname`
GROUP BY `Companyname`,`id`;
这是同样的理由
一定要更新php代码以在前端显示它
while($result = mysqli_fetch_assoc($query)) {
echo "<tr>
<td class='client-id'>".$result['id']."</td>
<td>".$result['company']."</td> <----- Pulled from database table
<td>".$result['payment']."</td>
<td>".$result['profit']."</td>
<td>".$result['markup']."</td> <-----Markup not giving correct answer
<td>".$result['lastjob']."</td> <------Last job date should go here
</tr>";
}
while($result=mysqli\u fetch\u assoc($query)){
回声“
“$result['id']”
“$result['company']”,根据我们的对话。这是您的数据查询
SELECT `Table2`.*, SUM(`Table1`.`payment`) AS money_in,
SUM(`Table1`.`payment` - `Table1`.`cost`) AS profit,
SUM(`Table1`.`payment` - `Table1`.`cost`) / SUM(`Table1`.`cost`)*100 AS markup,
MAX(`Table1`.`date`) AS `lastjob`
FROM `Table2`
LEFT JOIN `Table1` ON `Table1`.`company` = `Table2`.`companyname`
GROUP BY `Companyname`,`id`;
这是同样的理由
一定要更新php代码以在前端显示它
while($result = mysqli_fetch_assoc($query)) {
echo "<tr>
<td class='client-id'>".$result['id']."</td>
<td>".$result['company']."</td> <----- Pulled from database table
<td>".$result['payment']."</td>
<td>".$result['profit']."</td>
<td>".$result['markup']."</td> <-----Markup not giving correct answer
<td>".$result['lastjob']."</td> <------Last job date should go here
</tr>";
}
while($result=mysqli\u fetch\u assoc($query)){
回声“
“$result['id']”
“$result[‘公司’]”请共享一个Dfiddle,这样我们也可以根据示例数据提供帮助。@JitendraYadav Fiddle添加:-)将在办公室后检查:)@JitendraYadav那太好了,下面nbk的答案似乎与我想要的很接近,但我似乎无法将其用于我的表格设置,dude将检查请共享一个Dfiddle,这样我们也可以根据样本数据。@JitendraYadav Fiddle添加:-)将在办公室后检查:)@JitendraYadav那太好了,下面nbk的答案似乎与我想要的很接近,但我似乎无法让它与我的表格设置一起工作,dude将检查谢谢你的回答。尽管可能很简单,我无法将你的信息放在上面并转换我做了一把小提琴——为了展示我现在得到的东西,如果可能的话,任何帮助都会很好……而且,我不应该把
放在上面的表格中,这是一个错误。我用CSS添加了货币符号-。currency::before{content:”
。虽然我想知道,你在这里添加它的方式,这是一种更好的方式吗?整数的问题是它们没有分隔符,它们读的是<1000英镑,而不是<1000英镑。我确实更改了我的答案,它会给出正确的答案。谢谢,我上个星期一直在搞这个r并且无法在我自己的表中使用它…假设您设置了上一个作业标题-上一个作业日期
,并希望在行中填充“$result['lastjobdate']”。”
我将如何更改代码以实现此目的?因为这就是我对设置为的其余部分所做的操作,例如SUM('Table1.'payment'))作为付款,
填充“$result['profit']”
我不确定``t1.lastjob
lastjob
是否影响了事情?谢谢你的回答。虽然可能很简单,但我无法将上面的信息翻译成我需要的信息。我做了一把小提琴——为了展示我目前得到的信息,如果可能的话,任何帮助都将是巨大的……我也不应该将
放在上表中,这是一个错误。我使用CSS在{content:“;”}之前添加了货币符号-.currency::currency
。虽然我想知道,你在这里添加它的方式,这是一种更好的方式吗?整数的问题是它们没有分隔符,它们读的是<1000英镑,而不是<1000英镑。我确实更改了我的答案,它会给出正确的答案。谢谢,我上个星期一直在搞这个r并且无法在我自己的表中使用它…假设您设置了上一个作业标题-上一个作业日期
,并希望在行中填充“$result['lastjobdate']”。”
我将如何更改代码以实现此目的?因为这就是我对设置为的其余部分所做的操作,例如SUM('Table1.'payment'))作为付款,
它填充了“$result['price']”。
我不确定``t1.lastjob
lastjob
是否影响了事情?我能麻烦你再问一个问题吗…根据条件使用SUM()并从不同的表中获取…例如,表3有不同的信息,我正在尝试添加SUM(表3.variable='Y'然后(Sum(1.2*table1.payment))-Sum(table1.payment))作为总计
一定要给我发送链接。我已经尽可能地解释了。请也在注释中打印预期输出。预期输出将是80…4个值,每个值以(成本*1.2)计算'Y'-Cost我可以麻烦你再问一个问题吗…根据条件使用SUM()并从其他ta处获取