1

他の複数のテーブルのデータをまとめて、テーブルを作成しようとしています。この新しいテーブルには 4 つの情報 (日付、金額、人、説明) が必要です。ソース テーブルの一部については、簡単です。次のように使用できます。

$example = mysql_query("
INSERT INTO bigtable (Date, Amount, Person, Description)
   SELECT PayDate, Amount, Payee, Description
   FROM Payments
   WHERE Payee=Bob  
");

ただし、それらの一部には Description フィールドが存在しませんが、この特定のクエリを介して追加されたすべてのアイテムに同じ値を使用するだけで作成できます。問題は次のとおりです。値を使用して単一のレコードを挿入する方法は知っていますが、一部のフィールドが他のテーブルから動的に取り出され (上記のように)、他のフィールドが指定した値になるように、プログラムで一連のレコードを挿入するにはどうすればよいですか (例:ストリーム A からの収入)。私の不完全な努力は以下のとおりです。

$combiner3 = mysql_query("
INSERT INTO ".$name."accttemptable (Date, Amount)
SELECT PayDate, Cash 
FROM IncomeStreamA  
");

何か助けはありますか?

4

1 に答える 1

0

あなたが正しく理解しているなら、あなたは使うことができますUNION ALL

INSERT INTO bigtable (`Date`, Amount, Person, Description)
SELECT PayDate, Amount, Payee, Description
  FROM Payments
 WHERE Payee='Bob' 
 UNION ALL
SELECT PayDate, Cash, 'Bob', 'Your description'
  FROM IncomeStreamA
 UNION ALL
SELECT SomeDate, SomeAmount, Firstname, 'Description'
  FROM Table3
...

2 番目の select は単なる例であり、すべての要素がIncomeStreamABob に関連していると想定しています。適宜変更してください。

を使用して、存在しない値をその場で構築できますCASE WHEN。例えば

SELECT SomDate,
       SomeAmount,
       CASE somecolumn 
           WHEN 1 THEN 'Bob' 
           WHEN 2 THEN 'Jhon' 
           ELSE 'Other'
       END Person, 
       'Your description' Description
 FROM SomeTable

目標を達成するために必要な数の選択を連鎖させることができます。

于 2013-02-27T03:26:37.597 に答える