1

ついにクエリをコードに挿入する準備ができましたが、クエリ全体を実行するとエラーが発生します。ドロップテーブル機能と関係があると思います。私はもともとそれらをインラインにしていて、それを削除してクエリの最初に次のように追加する必要があることを読みました。

    $query = $this->db->query("DROP TABLE IF EXISTS resultx;");
    $query = $this->db->query("DROP TABLE IF EXISTS resulty;");

$query = $this->db->query("
 CREATE TEMPORARY TABLE resultx AS
 select *, CONCAT(Credit,'_',OrderStat) as consol from (..........

2つの一時テーブルを作成し、最後のクエリでそれらを結合しています。その2番目のDROP一時テーブルを完全なクエリに戻す方法、またはそれが正しい方法であるかどうかはわかりません。私が得ているエラーは次のとおりです。

A Database Error Occurred
Error Number: 1064
You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use 
near 'CREATE TEMPORARY TABLE resulty AS select packetDeet,Sales,SaleDate, UserID,Lead' at line 15

クエリ:

CREATE TEMPORARY TABLE resultx AS 
    select 
        *,
        CONCAT(Credit,'_',OrderStat) as consol 
    FROM 
        ( select 
              packetDetailsId, GROUP_CONCAT(Credit) AS Credit,
              GROUP_CONCAT(AccountNum) AS AccountNum,
              GROUP_CONCAT(OrderStat) AS OrderStat 
          FROM 
             ( SELECT 
                   pd_extrafields.packetDetailsId, 
                   CASE WHEN 
                       pd_extrafields.ex_title LIKE ('%Credit%') 
                       THEN pd_extrafields.ex_value 
                       ELSE NULL 
                   END as Credit, 
                  CASE WHEN 
                       pd_extrafields.ex_title LIKE ('%Account%') 
                       THEN pd_extrafields.ex_value 
                       ELSE NULL 
                  END as AccountNum, 
                 CASE WHEN 
                       pd_extrafields.ex_title LIKE ('%Existing%') 
                       THEN pd_extrafields.ex_value 
                       ELSE NULL 
                 END as OrderStat 
               FROM pd_extrafields 
             ) AS myalias 
          GROUP BY packetDetailsId 
        )as TempTab; 
CREATE TEMPORARY TABLE resulty AS select packetDeet,Sales,SaleDate, .........

これが理にかなっている場合、または質問をより多くの情報で更新する必要がある場合は、お知らせください。

4

1 に答える 1

2

1 回の呼び出しで両方のクエリを実行しようとしている場合$this->db->query()、問題はおそらく、データベース ライブラリが複数のクエリを許可していないことです。

それが問題かどうかを確認するには、それらを 2 つの個別のクエリに分割する必要があります。

于 2013-03-13T21:14:01.590 に答える