亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

UNION ALL 與 INNER JOIN 一起使用

UNION ALL 與 INNER JOIN 一起使用

PHP
達令說 2024-01-19 09:59:12
我正在嘗試使用 UNION ALL 連接 3 個表。我嘗試了以下代碼。并給出無效參數編號的錯誤:綁定變量的數量與標記的數量不匹配。$codeArray = explode(',', $code);$inQuery = implode(',', array_fill(0, count($codeArray), '?'));    $full_dt = date('Y-m-d H:i:s');$query =  "SELECT * FROM                 (                    SELECT                       a.*                    FROM pat_info a                        INNER JOIN                          pat_medication b                           ON a.id = b.pat_id                     WHERE                      a.status != 2 AND b.status != 2                       AND '$full_dt' BETWEEN b.start_date AND b.end_date                       AND a.location_code IN ($inQuery)                      AND b.stock_status != '2'                       AND (b.total_qty - (b.given + b.not_taken)) < 12                    UNION ALL                   SELECT                   a.*                FROM pat_info a                    INNER JOIN                      prn_medication b                       ON a.id = b.pat_id                 WHERE                  a.status != 2 AND b.status != 2                   AND '$full_dt' BETWEEN b.start_date AND b.end_date                   AND a.location_code IN ($inQuery)                  AND b.stock_status != '2'                   AND (b.total_qty - (b.given + b.not_taken)) < 12                ) x                GROUP BY a.id ORDER BY a.id DESC";$statement = $con->prepare($query);$statement->execute($codeArray);
查看完整描述

1 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

由于代碼中存在in兩次該子句,因此需要將值綁定兩次。

execute()執行此操作的一個簡單方法是在...之前復制數據。

$codeArray = array_merge($codeArray, $codeArray);

你還需要改變

GROUP BY a.id ORDER BY a.id DESC

GROUP BY x.id ORDER BY x.id DESC

因為a別名位于子選擇中,而不是整個選擇中。


查看完整回答
反對 回復 2024-01-19
  • 1 回答
  • 0 關注
  • 148 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號