私はこのようなクエリを持って作成するために、MySQLでプロシージャを作成します。各選択クエリ
SELECT
a.CREATED,
a.FIRST_REVISION,
a.SECOND_REVISION ,
a.THIRD_REVISION ,
a.FOURTH_REVISION,
a.FIFTH_REVISION
FROM tb_master_repair_estimate a
WHERE a.REPAIR_ESTIMATE_ID = 91
を、私はこのようになりました:
+---------------------+----------------+-----------------+----------------+-----------------+----------------+
| CREATED | FIRST_REVISION | SECOND_REVISION | THIRD_REVISION | FOURTH_REVISION | FIFTH_REVISION |
+---------------------+----------------+-----------------+----------------+-----------------+----------------+
| 2016-09-26 04:32:22 | 2016-09-25 | 2016-09-25 | 2016-09-25 | NULL | NULL |
+---------------------+----------------+-----------------+----------------+-----------------+----------------+
1 row in set (0.00 sec)
は、私はこのようなロジックを持つプロシージャを作成することはできますか?
I will check in field FIRST_REVISION,
if null, I used data CREATED to another query
break;
I will check IN field SECOND_REVISION
if null, I use data FIRST_REVISION to another query
break
I will check IN field THIRD_REVISION
if null, I use data SECOND_REVISION to another query
break
私はそれを管理するための手順のようなものがありますか?
例を挙げて、私はmysqlで関数やプロシージャを作成する初心者です。
CREATE FUNCTION F_CHECK_LAST_REVISED
RETURNS DATE
BEGIN
/* LIKE THIS ONE */
END;
私はこのようなプロシージャを作成:
DROP PROCEDURE IF EXISTS P_CHECK_LAST_REVISED;
DELIMITER //
CREATE PROCEDURE P_CHECK_LAST_REVISED(id_cari int(10))
BEGIN
DECLARE pre varchar(50);
DECLARE one varchar(50);
DECLARE two varchar(50);
DECLARE three varchar(50);
DECLARE four varchar(50);
DECLARE five varchar(50);
DECLARE last_revision varchar(50);
SELECT CREATED, FIRST_REVISION, SECOND_REVISION, THIRD_REVISION, FOURTH_REVISION, FIFTH_REVISION
INTO one, two,three, four, five
FROM tb_master_repair_estimate a
WHERE a.REPAIR_ESTIMATE_ID = id_cari;
IF one IS NULL THEN
SELECT b.* FROM tb_repair_detail b
WHERE b.REPAIR_ESTIMATE_ID = id_cari;
ELSEIF two IS NULL THEN
SELECT c.* FROM tb_repair_detail_first_revision c
WHERE c.REPAIR_ESTIMATE_ID = id_cari;
ELSEIF three IS NULL THEN
SELECT d.* FROM tb_repair_detail_second_revision d
WHERE d.REPAIR_ESTIMATE_ID = id_cari;
ELSEIF four IS NULL THEN
SELECT e.* FROM tb_repair_detail_third_revision e
WHERE e.REPAIR_ESTIMATE_ID = id_cari;
ELSEIF five IS NULL THEN
SELECT f.* FROM tb_repair_detail_fourth_revision f
WHERE f.REPAIR_ESTIMATE_ID = id_cari;
ELSE
SELECT g.* FROM tb_repair_detail_fifth_revision g
WHERE gx.REPAIR_ESTIMATE_ID = id_cari;
END IF;
END;
//
だから、call P_CHECK_LAST_REVISED(92)
、私はこのようなエラーを得た:こんにちはかもしれ
The used select statment hav a different number columns
はい、非常に簡単にIF'ブロック'として選択ヴァルスにあなたは、推定IDなど – Drew
のようなprocに渡すべきparamsを決めるでしょう。 –
私はここにいると思います。あなたは180の質問と5つの受け入れられた答えを持っています。 idk。 – Drew