[英]Two mysql queries and 2 $results. Can I get the same 2 $results using only one mysql query?
Have html input (user enters in html form) like this 具有这样的html输入(用户以html形式输入)
row_id | debit | credit |
---------------------------
1 |2610 | 2380
2 |2620 | 2310
3 |5310 | 2621
Have mysql table like this 有这样的mysql表
TrackPayments | AccountNumber
---------------------------
1 |2610
1 |2310
0 |2380
1 |2620
1 |2621
1 |5310
Want to get value of column TrackPayments
for each debit
and credit
想要获取每个
debit
和credit
TrackPayments
列的值
At first create arrays $debit
and $credit
like that: 首先,像这样创建数组
$debit
和$credit
:
foreach ($_POST['row_id'] as $i => $row_id) {
$debit[] = $_POST['debit'][$i];
}
foreach ($_POST['row_id'] as $i => $row_id) {
$credit[] = $_POST['credit'][$i];
}
Then execute 2 queries 然后执行2个查询
$stmt1 = $db->prepare('SELECT TrackPayments FROM users WHERE AccountNumber= ?');
$stmt1->execute( $debit );
$result1 = $stmt1->fetch(PDO::FETCH_ASSOC);
$stmt2 = $db->prepare('SELECT TrackPayments FROM users WHERE AccountNumber= ?');
$stm2->execute( $credit );
$result2 = $stmt1->fetch(PDO::FETCH_ASSOC);
And get 并得到
$result1
= array("1", "1", "1");
$result1
= array("1", "1", "1");
and 和
$result2
= array("0", "1", "1");
$result2
= array("0", "1", "1");
Code is rather long and I do 2 mysql queries. 代码相当长,我可以执行2个mysql查询。 Is it possible to get same result using one mysql query (to use less resources of system)?
是否可以使用一个mysql查询获得相同的结果(以使用较少的系统资源)?
You can do something like this 你可以做这样的事情
SELECT debit, u.TrackPayments track_debit,
credit, u2.TrackPayments track_credit
FROM
(
SELECT 2610 debit, 2380 credit UNION ALL
SELECT 2620, 2310 UNION ALL
SELECT 5310, 2621
) q JOIN users u
ON q.debit = u.AccountNumber JOIN users u2
ON q.credit = u2.AccountNumber
Sample output: 样本输出:
| DEBIT | TRACK_DEBIT | CREDIT | TRACK_CREDIT | |-------|-------------|--------|--------------| | 2620 | 1 | 2310 | 1 | | 2610 | 1 | 2380 | 0 | | 5310 | 1 | 2621 | 1 |
or 要么
SELECT AccountNumber, TrackPayments, 'debit' type
FROM users
WHERE AccountNumber IN(2610, 2620, 5310)
UNION ALL
SELECT AccountNumber, TrackPayments, 'credit' type
FROM users
WHERE AccountNumber IN(2380, 2310, 2621);
Sample output: 样本输出:
| ACCOUNTNUMBER | TRACKPAYMENTS | TYPE | |---------------|---------------|--------| | 2610 | 1 | debit | | 2620 | 1 | debit | | 5310 | 1 | debit | | 2310 | 1 | credit | | 2380 | 0 | credit | | 2621 | 1 | credit |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.