Php 健全性检查:此SQL查询是否会按我所希望的方式加入?

Php 健全性检查:此SQL查询是否会按我所希望的方式加入?,php,mysql,sql,Php,Mysql,Sql,对于这个问题,我深表歉意,这是您的遗留代码。我基本上想检查我的代码是否合乎逻辑 本质上,我希望返回“signatures”表的所有行,其中“claim_id”=“claims”表上的“claim_id” 因此,我打算检查每个索赔的“signature_id”=null。如果有,那声明就没有相关的签名,对吗 $SQL=" SELECT `claims`.`claim_id`, CONCAT(`insurers`.`insurer_name`,IF((`insurers`.`insu

对于这个问题,我深表歉意,这是您的遗留代码。我基本上想检查我的代码是否合乎逻辑

本质上,我希望返回“signatures”表的所有行,其中“claim_id”=“claims”表上的“claim_id”

因此,我打算检查每个索赔的“signature_id”=null。如果有,那声明就没有相关的签名,对吗

$SQL="
SELECT
    `claims`.`claim_id`,
    CONCAT(`insurers`.`insurer_name`,IF((`insurers`.`insurer_branch`<>''),CONCAT(' - ',`insurers`.`insurer_branch`),'')) as 'insurer',
    `claims`.`claim_number` as 'claim_number',
    UNIX_TIMESTAMP(claims.overflow_date) as 'overflow_date',
    UNIX_TIMESTAMP(claims.reassigned_date) as 'reassigned_date',
    UNIX_TIMESTAMP(claims.reassigned_from_fr_date) as 'reassigned_from_fr_date',
    UNIX_TIMESTAMP(claims.date_of_first_contact) as 'date_of_first_contact',
    UNIX_TIMESTAMP(`claims`.`date_surveyor_made_contact`) as 'date_surveyor_made_contact',
    UNIX_TIMESTAMP(`claims`.`date_of_inspection`) as 'date_of_inspection',
    UNIX_TIMESTAMP(`claims`.`surveyor_completed`) as 'surveyor_completed',
    UNIX_TIMESTAMP( CASE 1 WHEN (claims.overflow_date>0) THEN claims.overflow_date WHEN (claims.reassigned_date>0) THEN claims.reassigned_date WHEN (claims.reassigned_from_fr_date>0) THEN claims.reassigned_from_fr_date ELSE claims.date_of_first_contact END ) as 'date_of_first_contact_debug',
    `claims`.`date_surveyor_made_contact` as 'date_surveyor_made_contact_debug',
    `claims`.`date_of_inspection` as 'date_of_inspection_debug',
    `claims`.`surveyor_completed` as 'surveyor_completed_debug',
    `claims`.`letter_of_findings`,
    `claims`.`int_settlement_reason`,
    `claims`.`ext_settlement_reason`,
    `claims`.`original_surveyor_id`,
    `claims`.`surveyor_id`,
    `claims`.`broker_name`,
    `insurers`.`insurer_type`,
    `insurers`.`insurer_id`,
    `signatures`.`signature_id`,
    `signatures`.`claim_id`
FROM
    (((`claims` claims INNER JOIN `insurers` insurers ON claims.`insurer_id` = insurers.`insurer_id`)
    INNER JOIN `users` users ON claims.surveyor_id = users.user_id) 
    LEFT JOIN `signatures` signatures on claims.claim_id = signatures.claim_id)
WHERE
    (`claims`.`claim_type` <> ".$conn->qstr(TYPE_DESKTOP).") AND 
    (`claims`.`claim_type` <> ".$conn->qstr(TYPE_AUDIT).") AND  
    (`claims`.`insurer_id` NOT IN ('".implode("','",$arrSURGE)."')) AND 
    (`users`.`status` = ".$conn->qstr(STATUS_LIVE).") AND
    (`claims`.`claim_cancelled_id` = 0) AND
    $where
";
$SQL=”
挑选
`索赔`.`索赔id`,
CONCAT(`insurers`.`insurer\'u name`,IF(`insurers`.`insurer\'u branch`),CONCAT('-',`insurers`.`insurer\'u branch`),作为'insurer',
`索赔`.`索赔编号`为'索赔编号',
UNIX_时间戳(claims.overflow_date)为“overflow_date”,
UNIX_时间戳(claims.reassigned_date)为“reassigned_date”,
UNIX\u时间戳(声明。从\u fr\u日期重新分配\u)为“从\u fr\u日期重新分配\u”,
UNIX\u时间戳(声明:首次联系人的日期)为“首次联系人的日期”,
UNIX\u时间戳(`claims`.`date\u surveyor\u Make\u contact`)为`date\u surveyor\u Make\u contact`,
UNIX\u时间戳(`claims`.`date\u of \u inspection`)为`date\u of \u inspection`,
UNIX_时间戳(`Claimes`.`surveyor_completed`)为`surveyor_completed`,
UNIX_时间戳(案例1 WHEN(claims.overflow_date>0)然后claims.overflow_date WHEN(claims.reassigned_date>0)然后claims.reassigned_from_fr_date ELSE claims.date_of_first_contact END)作为“日期_of first_contact_”,
`索赔`.`date\u surveyor\u Make\u contact`作为`date\u surveyor\u Make\u contact\u debug',
`索赔“检验日期”为“检验调试日期”,
`索赔`.`验船师完成`作为'验船师完成`调试',
`索赔`.`调查结果函`,
`索赔`.`国际结算`原因`,
`索赔`.`ext\u Solution\u reason`,
`索赔`.`原始验船师id`,
`索赔`.`验船师id`,
`索赔`.`broker\u name`,
`保险人`.`保险人类型`,
`保险人`.`保险人id`,
`签名`.`signature\u id`,
`签名`.`索赔id`
从…起
(('claims'索赔'Insurances'承保人索赔。'Insurancer\u id`=承保人。'Insurancer\u id`)
内部联接'users'索赔上的用户。勘测员\u id=用户。用户\u id)
LEFT JOIN`signatures`索赔签名。索赔id=签名。索赔id)
哪里
(`claims`.`claim_type`.$conn->qstr(type_DESKTOP)。)和
(`claims`.`claims_type`.'$conn->qstr(type_AUDIT.))和
(`claims`.`Insurance_id`不在('.”。内爆('','',美元)。”)和
(`users`.`status`='$conn->qstr(status_LIVE.))和
(`claims`.`claims\u cancelled\u id`=0)和
美元在哪里
";
我添加的代码是
签名
。选择器和
左键在claims.claim\u id=signatures.claims\u id)
行上加入“签名”签名

claim_id是claims表上的主键,signature_id是signatures表上的主键


谢谢

空检查将仅显示带有签名的项目。如果您将null签出保留在图片之外,则签名不存在的项目将获得null


选中此复选框

空复选框将仅显示带有签名的项目。如果您将null签出保留在图片之外,则签名不存在的项目将获得null


勾选此项

此问题似乎与主题无关,因为它与a有关。可以这样看。我更多的是在寻找关于左连接函数的方式以及它是否会返回所需结果的帮助,而不是为了改进我知道有效的代码。你有没有理由不能亲自测试以检查结果是否符合你的要求?这个问题似乎与主题无关,因为它是关于a的。可以这样看。我更多的是寻找关于左连接函数的方法,以及它是否会返回所需结果的帮助,而不是改进我知道有效的代码。你有没有理由不能自己测试它以检查结果是否符合你想要的?这就是我一直在寻找的东西。非常有帮助,谢谢。图像很好。这是从哪里来的?请引用您的来源。:-)这就是我一直在寻找的东西。非常有帮助,谢谢。图像很好。这是从哪里来的?请引用您的来源。:-)