0

次のように2つの異なるクエリがあります-

SELECT s.serialno, s.productid, s.description, s.in_quantity, s.uom, 
s.shiptype,s.receiveddate, s.project_id, IF(EXISTS(SELECT so.serialno 
FROM stockout so WHERE so.serialno = s.serialno),1,0) AS movementHistory
FROM stockin s WHERE s.productid = 'UKL40114/11HP'

制限が 0,5 の上記のクエリのサンプル結果

mysql> SELECT s.serialno, s.productid, s.description, s.in_quantity, s.uom,
    ->     s.shiptype,s.receiveddate, s.project_id, IF(EXISTS(SELECT so.serialno

    ->     FROM stockout so WHERE so.serialno = s.serialno),1,0) AS movementHist
ory
    ->     FROM stockin s WHERE s.productid = 'UKL40114/11HP' LIMIT 0, 5;
+------------+---------------+--------------------------+-------------+------+--
--------+---------------------+------------+-----------------+
| serialno   | productid     | description              | in_quantity | uom  | s
hiptype | receiveddate        | project_id | movementHistory |
+------------+---------------+--------------------------+-------------+------+--
--------+---------------------+------------+-----------------+
| A23001YKG5 | UKL40114/11HP | RADIO UNIT/RAU2 13/11 HP | 1           |    4 |
      3 | 2008-08-27 00:00:00 |          1 |               1 |
| A230024FUV | UKL40114/11HP | RADIO UNIT/RAU2 13/11 HP | 1           |    4 |
      2 | 2008-11-17 00:00:00 |          1 |               1 |
| A230024NHT | UKL40114/11HP | RADIO UNIT/RAU2 13/11 HP | 1           |    4 |
      2 | 2009-03-17 00:00:00 |          1 |               1 |
| A230024KQT | UKL40114/11HP | RADIO UNIT/RAU2 13/11 HP | 1           |    4 |
      2 | 2009-03-17 00:00:00 |          1 |               1 |
| A230024UR4 | UKL40114/11HP | RADIO UNIT/RAU2 13/11 HP | 1           |    4 |
      2 | 2009-03-17 00:00:00 |          1 |               1 |
+------------+---------------+--------------------------+-------------+------+--
--------+---------------------+------------+-----------------+
5 rows in set (0.01 sec)

SELECT so.out_quantity, so.serialno, so.siteid, so.employee_id, 
so.deliverytime, so.receivername 
FROM stockout so WHERE so.serialno = 'A23001RK3N'

上記のクエリのサンプル結果-

mysql> SELECT so.out_quantity, so.serialno, so.siteid, so.employee_id, so.delive
rytime, so.receivername                           FROM stockout so WHERE so.seri
alno = 'TU8D322820';
+--------------+------------+-----------+-------------+---------------------+---
-----------+
| out_quantity | serialno   | siteid    | employee_id | deliverytime        | re
ceivername |
+--------------+------------+-----------+-------------+---------------------+---
-----------+
| 1            | TU8D322820 | 001BDS011 |          38 | 2008-06-26 10:25:00 | 0
           |
+--------------+------------+-----------+-------------+---------------------+---
-----------+
1 row in set (0.00 sec)

の場合movementHistory == 1、PHP ページで 2 番目のクエリを実行しています。しかし、このクエリを最初のクエリとインラインで実行したいと思います。私は次のクエリのように考えています-

SELECT s.serialno, s.productid, s.description, s.in_quantity, s.uom, s.shiptype, 
s.receiveddate, s.project_id, IF(EXISTS(SELECT so.serialno FROM stockout so WHERE
so.serialno = s.serialno),1,0) AS movementHistory
CASE movementHistory
WHEN '1' THEN (SELECT so.out_quantity, so.serialno, so.siteid, so.employee_id,
so.deliverytime, so.receivername 
FROM stockout so WHERE so.serialno = 'TU8D322820')
WHEN '0' THEN 0
END AS Policy
FROM stockin s WHERE s.productid = 'UKL40114/11HP'

どうすれば達成できますか?

4

2 に答える 2