it-swarm.com.de

Wie schreibe ich eine Insert Select-Anweisung?

Diese Methode zum Erstellen einer Unterabfrage mit JDatabase liefert einige gute Einblicke, und ich denke, es wäre vorteilhaft, eine vereinbarte Methode zur Unterabfrage dokumentieren zu lassen. Ich bin darauf gestoßen, weil ich das Gleiche tun möchte, aber als Insert-Anweisung. Der nächste, den ich jemals bekommen habe, war das Replizieren der gesamten Tabelle, weil ich aus irgendeinem Grund die Spalten immer wieder verliere.

$query = $db->getQuery(true);
$pre = $db->getQuery(true);

// Insert columns.
$columns = array('user_id', 'title', 'ordering', 'published', 'description');

$now = $query->currentTimestamp();
// Insert values.

$pre->insert($db->qn('#__table'))->columns($db->qn($columns));


// Prepare the insert query.
$query->select(array(
                    $db->q('') . ' AS id',
                    $db->qn('user_id'),
                    $db->qn('c.name', 'title'),
                    $db->q('1') . ' AS published',
                    $db->q('') . ' AS ordering',
                    $db->q('') . ' AS created_by',
                    $now .  ' AS created_on',
                    $db->q('') . ' AS modified_by',
                    $db->q('') . ' AS modified_on',
                    )
            )
            ->from($db->qn('#__other_table', 'c'));

    $query = $pre . $query ;

    // Set the query using our newly populated query object and execute it.
    $db->setQuery($query);

    $db->execute();
4
poproar

Obwohl dies eine alte Frage ist, könnte sie für andere hilfreich sein. Hier ist die Abfrage zum Einfügen durch Auswählen mit JDatabase.

Erstellen Sie eine Auswahlabfrage mit JDatabase

$querySelect = $db->getQuery(true)
  ->select('id, title')
  ->from('sometable');

Nun Ihre Einfügeabfrage

$queryInsert = $db->getQuery(true)
  ->insert('anothertable')
  ->columns($db->qn(array('id','title')))
  ->values($querySelect)

Hoffe das hilft.

2
Nagarjun

Sie müssen eingeben, welche Werte Sie einfügen möchten

$pre->insert($db->qn('#__table'))->columns($db->qn($columns))->values(here values);
4
turson