Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在所选数据库表列中查找所选标识符最后一项的输入_Php_Mysql - Fatal编程技术网

Php 在所选数据库表列中查找所选标识符最后一项的输入

Php 在所选数据库表列中查找所选标识符最后一项的输入,php,mysql,Php,Mysql,我的表格上有一列,用于返回我在某家公司工作的最后日期。 对于我的查询,我不认为我可以依赖时间戳,因为一些条目是预先输入系统的,例如,我今天可能在一家公司工作,下周就可以获得合同,我会在今天工作完成后更新这两份工作(今天和下周) 表1的格式为(按日期排列,不一定是填充的日期(时间戳)) 表2 companyname | income | profit | avgmarkup | lastjob ===========================================

我的表格上有一列,用于返回我在某家公司工作的最后日期。 对于我的查询,我不认为我可以依赖时间戳,因为一些条目是预先输入系统的,例如,我今天可能在一家公司工作,下周就可以获得合同,我会在今天工作完成后更新这两份工作(今天和下周)

表1的格式为(按日期排列,不一定是填充的日期(时间戳))

表2

 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处获取