当我分别执行这些查询时,我得到的结果如下 $sql1->first
2 列,$sql2->second
2 列:
$userid='AD0004';
$comp_code='AD';
$sql1 = "SELECT DISTINCT CCCOMPANY, CCCNTY
FROM D.TMTBCNTC
WHERE CCCOMPANY='$comp_code'";
// //gets USER & their counties
$sql2 = "SELECT DISTINCT UCCOMPANY, UCCNTY
FROM D.TMTBCNTU
WHERE UCUSERID='$userid'
AND UCCOMPANY='$comp_code'";
CCCOMPANY CCCNTY UCCNTY UCCOMPANY
AD AT
AD BB BB AD
AD BE BE AD
AD BR BR AD
AD CM CM AD
AD CO CO AD
AD DE DE AD
AD EB EB AD
AD EP EP AD
AD FB FB AD
AD GB
AD GU GU AD
AD GV GV AD
AD HA HA AD
AD KF KF AD
AD KN KN AD
AD MB MB AD
AD MG MG AD
AD PF PF AD
AD TA TA AD
AD UB UB AD
AD WI WI AD
我想做的是加入列 CCCOMPANY=UCCOMPANY && CCCNTY=UCCNTY
并在找不到匹配项时返回空白字段。
我遇到的问题是查询似乎会自行循环,这意味着我得到每个公司 22 个县和每个用户 20 个县,结果是 20x22=>440 个结果,我想要 22 个结果和一个查询。
编辑1:
$sql = "
SELECT DISTINCT c_t.CCCOMPANY, c_t.CCCNTY, (
CASE WHEN u_t.UCUSERID='$userid'
THEN 'exists here'
END
) AS UserOnSite
FROM D.TMTBCNTC as c_t
LEFT JOIN D.TMTBCNTU AS u_t ON u_t.UCCOMPANY = c_t.CCCOMPANY
WHERE c_t.CCCOMPANY = '$comp_code'";
输出:
AD | AT |
AD | BB |
AD | BE |
AD | BR |
AD | CM |
AD | CO |
AD | DE |
AD | EB |
AD | EP |
AD | FB |
AD | GB |
AD | GU |
AD | GV |
AD | HA |
AD | KF |
AD | KN |
AD | MB |
AD | MG |
AD | PF |
AD | TA |
AD | UB |
AD | WI |
AD | AT | exists here
AD | BB | exists here
AD | BE | exists here
AD | BR | exists here
AD | CM | exists here
AD | CO | exists here
AD | DE | exists here
AD | EB | exists here
AD | EP | exists here
AD | FB | exists here
AD | GB | exists here
AD | GU | exists here
AD | GV | exists here
AD | HA | exists here
AD | KF | exists here
AD | KN | exists here
AD | MB | exists here
AD | MG | exists here
AD | PF | exists here
AD | TA | exists here
AD | UB | exists here
AD | WI | exists here
编辑2:
$sql = "
SELECT DISTINCT c_t.CCCOMPANY, c_t.CCCNTY, (
CASE WHEN u_t.UCUSERID='$userid'
THEN 'exists here'
END
) AS UserOnSite
FROM D.TMTBCNTC as c_t
LEFT JOIN D.TMTBCNTU
AS u_t
ON u_t.UCCOMPANY = c_t.CCCOMPANY
WHERE c_t.CCCOMPANY = '$comp_code'
AND u_t.UCCNTY = c_t.CCCNTY";
AD | AT |
AD | BB | exists here
AD | BB |
AD | BE | exists here
AD | BE |
AD | BR | exists here
AD | BR |
AD | CM | exists here
AD | CM |
AD | CO | exists here
AD | CO |
AD | DE | exists here
AD | DE |
AD | EB | exists here
AD | EB |
AD | EP | exists here
AD | EP |
AD | FB | exists here
AD | FB |
AD | GB |
AD | GU | exists here
AD | GU |
AD | GV | exists here
AD | GV |
AD | HA | exists here
AD | HA |
AD | KF | exists here
AD | KF |
AD | KN | exists here
AD | KN |
AD | MB | exists here
AD | MB |
AD | MG | exists here
AD | MG |
AD | PF | exists here
AD | PF |
AD | TA | exists here
AD | TA |
AD | UB | exists here
AD | UB |
AD | WI | exists here
AD | WI |
最佳答案
试试这个查询:
$sql = "
SELECT DISTINCT c_t.CCCOMPANY, c_t.CCCNTY, (
CASE WHEN u_t.UCUSERID='$userid'
THEN 'exists here'
END
) AS UserOnSite
FROM D.TMTBCNTC as c_t
LEFT JOIN D.TMTBCNTU AS u_t ON u_t.UCCOMPANY = c_t.CCCOMPANY
WHERE c_t.CCCOMPANY = '$comp_code'
AND u_t.UCCNTY = c_t.CCCNTY "; // additional where clause
列和表的命名并没有真正使它变得更容易..但这应该会给你你正在寻找的结果
这应该输出如下:
CCCOMPANY CCCNTY UserOnSite
AD | AT | NULL
AD | BB | exist here
AD | BE | exist here
AD | BR | exist here
AD | CM | exist here
AD | CO | exist here
AD | DE | exist here
AD | EB | exist here
AD | EP | exist here
AD | FB | exist here
第二次更好的尝试:已编辑
$sql = "
SELECT DISTINCT c.CCCOMPANY, c.CCCNTY, (
SELECT (
CASE WHEN u.UCUSERID='$userid'
THEN 'exists here'
END
)
FROM D.TMTBCNTU as u
WHERE u.UCUSERID = '$userid'
AND u.UCCOMPANY = c.CCCOMPANY
AND u.UCCNTY = c.CCCNTY
LIMIT 1
) AS UserOnSite
FROM D.TMTBCNTC AS c
WHERE c.CCCOMPANY = '$comp_code'";
这应该会更好
关于Mysql查询,比较表结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28817357/