【发布时间】:2018-03-03 15:43:04
【问题描述】:
我想将子查询的结果包含在我的 SELECT 语句中,但我一直不知道如何使用我的 SQL 语句来做到这一点。当子查询返回一个结果时,我的语句似乎可以正常工作,但是当它返回多于一行时,它就会成为一个问题。下面是我的 SQL 语句的结构:
function get_client ($client_ec_no){
include 'connection.php';
$sql = 'SELECT cs.*,
(SELECT ss.s_name
FROM ss, mcs
WHERE mcs.mcs_s_id = ss.s_id
AND mcs.mcs_client_ec_no = ?)
FROM cs, ss, mcs
WHERE cs.client_ec_no = ?';
try {
$results = $db->prepare($sql);
$results->bindValue(1, $client_ec_no, PDO::PARAM_STR);
$results->bindValue(2, $client_ec_no, PDO::PARAM_STR);
$results->execute();
} catch (Exception $e) {
echo "Error!: " . $e->getMessage() . "<br />";
return false;
}
return $results->fetch();
}
我收到错误:
错误!:SQLSTATE[21000]:基数违规:1242 子查询返回 超过 1 行
【问题讨论】:
-
$client_cs_no的内容是什么? -
错误信息说明了一切。你想要什么?改为执行 LEFT JOIN。顺便说一句,您的查询似乎错过了一些连接条件。
-
外部查询中
cs, ss, mcs的连接条件在哪里?你有一个笛卡尔积! -
@OptimusCrime 这是一个单词字符串