gpt4 book ai didi

PHP MySQL - 仅当不为空时才进行内部连接

转载 作者:行者123 更新时间:2023-11-29 01:29:05 25 4
gpt4 key购买 nike

我有一个使用内部联接的 mysqli SELECT 查询,我注意到一个大问题:它不选择条件列值为空的行(因为第二个表中不存在 NULL)。这是我的代码:

<?php

$sql = mysqli_connect(/* CONNECTION */);

$query = "SELECT " .
"e.EQUIPMENT_ID, " .
"e.CUSTOMER_ID, " .
"e.DESCRIPTION, " .
"e.LOCATION, " .
"e.JOB_SITE, " .
"e.PROJECT_NAME, " .
"jb.DESCRIPTION AS JOB_SITE_NAME " .
"FROM equipments e " .
"INNER JOIN jobsites jb ON jb.JOBSITE_ID = e.JOB_SITE " .
"WHERE e.CUSTOMER_ID = 1 ".
"ORDER BY e.EQUIPMENT_ID ASC";

$results = mysqli_query($sql, $query);

if(!isset($data)) $data = array(); $cc = 0;

while($info = mysqli_fetch_array($results, MYSQLI_ASSOC)){

if(!isset($data[$cc])) $data[$cc] = array();

///// FROM TABLE equipments /////
$data[$cc]['EQUIPMENT_ID'] = $info['EQUIPMENT_ID'];
$data[$cc]['DESCRIPTION'] = $info['DESCRIPTION'];
$data[$cc]['LOCATION'] = $info['LOCATION'];
$data[$cc]['PROJECT_NAME'] = $info['PROJECT_NAME'];
$data[$cc]['JOB_SITE_ID'] = $info['JOB_SITE'];

///// FROM TABLE jobsites /////
$data[$cc]['JOB_SITE'] = $info['JOB_SITE_NAME'];

$cc++;
}

print_r($data);

?>

所以,正如我所说,代码返回值,但前提是“equipments”内的列“JOB_SITE”具有工作地点 ID(非空)。丑陋的解决方案是在表“jobsites”中创建一个名为“empty”的 jobsite_id 的行,但如果我可以跳过这个,我会的。

有没有办法只在 e.JOB_SITE 不为 null 时加入?

最佳答案

您可以在 SQL 查询中使用 LEFT JOIN

$query =    "SELECT " .
"e.EQUIPMENT_ID, " .
"e.CUSTOMER_ID, " .
"e.DESCRIPTION, " .
"e.LOCATION, " .
"e.JOB_SITE, " .
"e.PROJECT_NAME, " .
"jb.DESCRIPTION AS JOB_SITE_NAME " .
"FROM equipments e " .
"LEFT JOIN jobsites jb ON jb.JOBSITE_ID = e.JOB_SITE " .
"WHERE e.CUSTOMER_ID = 1 ".
"ORDER BY e.EQUIPMENT_ID ASC";

如果在 jb.JOBSITE_ID 中没有 row 匹配,则此查询将为列 JOB_SITE_NAME 返回 NULL VALUE 设备

关于PHP MySQL - 仅当不为空时才进行内部连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23114426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com