2016-12-05 5 views
-1

データをテーブルからコピーして再度挿入し、オーナー名とルート名のみを変更する必要があります。行う。私のコーディングは、今私は、エンティティ名がルートであることを、すべてのデータをコピーして別のエンティティ名と所有者名データをコピーしていくつかのエンティティを置き換えて再クエリするSqlクエリ

でそれを再挿入したいことは、このよう

id | root | subname | type | owner 
------|------|---------|------|---------- 
1  | AB | subS0 | file | peter 
2  | CB | null | txt | peter 
3  | DF | ast  | doc | mike 
4  | AB | ghst | cmd | peter 
5  | OF | wmel | inc | john 

データベースに保存されたPHP

であります

私は後に、それはその後、ルート名がABであることを、すべてのテーブルからこの

id | root | subname | type | owner 
------|------|---------|------|---------- 
1  | AB | subS0 | file | peter 
2  | CB | null | txt | peter 
3  | DF | ast  | doc | mike 
4  | AB | ghst | cmd | peter 
5  | OF | wmel | inc | john 
6  | JK | subS0 | file | james 
7  | JK | ghst | cmd | james 

上記結果のコピーのようになります挿入し、お互いにそれを挿入ルート名JKと所有者名も変更してください。 どうすれば私のためにこれを行うSQLクエリを実行するのですか?ここで

は、私はあなたがサブ選択、インサートの内部の定数を使用して

INSERT INTO filelist (root, subname, type, owner) 
SELECT 'JK', subname, type, 'james' FROM filelist 

中の一部として必要なデータを変更することができ

<?php 
    $db->prepare(" 
    INSERT INTO filelist(name, owner, date, Description, PrivacyType, tags, Type) 
    VALUES(:name, :owner, date, Description, PrivacyType, tags, :Type) 
    SELECT name, owner, date, Description, PrivacyType, tags, Type 
//OR this way 
    SELECT :name, :owner, date, Description, PrivacyType, tags, :Type 
    FROM filelist 
    WHERE name = :copyfromHere 
    "); 
       $db->bind(':name', 'JK'); 
       $db->bind(':owner', 'james'); 
       $db->bind(':copyfromHere', 'AB'); 
       $db->bind(':Type', 'TT'); 
    ?> 
+0

をあなたの言ったロジックが本当にとてもではありません明らかです。もっと明確にする – Rahul

+0

@Rahul何をしようとしているのかのサンプルクエリを更新しました –

+0

@Rahul私は助けが必要です。私はクエリに近づいていますが、pdoでそれを使用する方法は私の問題です。それはSQLで、しかし、私は私のプロジェクトでそれを実装するときは –

答えて

0

別名でそれを試してみてください:あなたの最初の質問の

回答:

INSERT INTO `filelist` (root, subname, type, owner) 
SELECT 'JK', t.subname, t.type, 'James' FROM `filelist` as t WHERE t.root='AB' 

そして、あなたのPDO-例と同じ:

<?php 
    $db->prepare(" 
    INSERT INTO filelist(name, owner, date, Description, PrivacyType, tags, Type) 
    SELECT :name, :owner, t.date, t.Description, t.PrivacyType, t.tags, :Type 
    FROM filelist AS t 
     WHERE t.name = :copyfromHere 
"); 
      $db->bind(':name', 'JK'); 
      $db->bind(':owner', 'james'); 
      $db->bind(':copyfromHere', 'AB'); 
      $db->bind(':Type', 'TT'); 
?> 
0

を実行しようとしました何のサンプルコードですPHPで値を制御したい場合は、おそらく最も簡単です。$ variableに置き換えてください。

+0

サンプルクエリの私のケースではない 'VALUES(:ルート、:サブタイプ、:タイプ、:所有者)'を追加する必要はありません再び選択部分でphp pdoを使用しています私はこのようにします 'SELECT:JK、subname、type、:owner FROM filelist'?私はちょうど私の質問を更新 –

関連する問題