PHP VLookup(条件匹配)替代方案?

标签 php mysql conditional-statements

如何返回 provision_id 列的结果,以便它们以每行的 contracts.id 为条件?现在,我在每一行都得到相同的结果。所需的效果有点像 Excel 中的 VLookup。虽然不确定如何使用 if else/sql 值在 PHP 中实现它。

相关代码:

<?php
global $wpdb;
$contents = $wpdb->get_results( $wpdb->prepare("SELECT id, name, remaining, contract_value FROM salaries"));
$contracts = $wpdb->get_results( $wpdb->prepare("SELECT contracts.id,source,provision,provision_id FROM contracts LEFT JOIN salaries ON contracts.id = salaries.id"));

 ?>

   [table header stuff...]

foreach ($contents as $content) {
    ?>   
         <tr>
                <td><?php echo $content->name ?></td>
                <td><?php echo $content->remaining ?></td>
                <td><?php echo $content->contract_value ?></td>
                <td><?php foreach ($contracts as $contract) { echo $contract->provision_id }; ?> 
               </td>

电流输出

Name               Remaining         Contract_Value    Provision_ID
--------------     ---------------   --------------    --------------
Adam               100               300               A1 B1 C1
Bill               200               400               A1 B1 C1
Chad               200               400               A1 B1 C1

期望的输出

Name               Remaining         Contract_Value    Provision_ID
--------------     ---------------   --------------    --------------
Adam               100               300               A1
Bill               200               400               B1
Chad               200               400               C1

其中 A1、B1、C1 分别代表一个存储的数据单元格,对应于第 1 列中的人名。我正在尝试根据 Adam、Bill 和 Chad 的 ID(而不是名称)使 provision_id 有条件,但我不希望在 php 输出中显示该 ID。

基本上,我希望 PHP“查找”ID(又名成员 ID)并打印相应的 provision_id。在这种情况下,连接表格可能不起作用,因为我还从表格中提取“工具提示”作为 A1、B1、C1 等的鼠标悬停效果。

附录 1 - 也就是发生了什么。我没有解释(为了保持简单)Adam Bill 和 Chad 每个人都有一个以上的供应 ID。 Adam 具有供应 ID:例如 A1、A2 和 A3。我正在努力避免下面的问题(GROUP_CONCAT 可以工作,但我不认为它可以工作,因为我对每个条款都有一个鼠标悬停工具提示)。

Name               Remaining         Contract_Value    Provision_ID
--------------     ---------------   --------------    --------------
Adam               100               300               A1
Adam               100               300               A2
Adam               100               300               A3
Bill               200               400               B1
Bill               200               400               B2
Chad               200               400               C1

最佳答案

尝试以下查询。然后,您只需向数据库发出一个请求即可完成所有操作。

SELECT salaries.id AS salaries_id, salaries.name, salaries.remaining, 
salaries.contract_value, contracts.provision_id AS provision_id 
FROM salaries LEFT JOIN contracts ON contracts.id=salaries.id

关于PHP VLookup(条件匹配)替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1154590/

相关文章:

php paypal 服务器端 REST 集成失败

mysql - 从 Access VBA 中的查询创建表

mysql - 查找并列出脚本中访问的所有 MySQL 表

javascript - 带有 OR 语句的正则表达式来检查类似情况

list - 方案过滤器 - "wrong value to apply: #f"

php - 哪里喜欢在 php 中查询多维数组

php - Laravel、Docker 和 Nginx : 404 for all files in/public folder

php - 我可以制作 PHP "macro"(如 #define)来为函数调用提供参数吗?

Mysql数据截断: Data truncation: Out of range value for column 'agentID' at row 4

javascript - 我该如何设置这个条件? (Jquery/javascript)