MYSQL - Daten von einer Tabelle in eine ander kopieren

Gast #4411544
Hallo,
ich versuche gerade vergeblich einer Tabelle eine neue Zeile 
hinzuzufügen, die aus einer Konstanten (PHP-Variable) und 2 Einträgen 
einer anderen Tabelle besteht.

Mein Versuch in PHPMyAdmin:
1
INSERT INTO `daydata`
2
  ( 
3
    `Date` , `Offset` , `Gain`
4
  )
5
SELECT
6
  (
7
    '2015-12-29' , `Offset` FROM `parameters`, `Gain` FROM `parameters`
8
  )

Fehlermeldung:
#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 'FROM `parameters`, `Gain` FROM `parameters`
         )' at line 7

Die Tabelle 'parameters' besteht derzeit nur aus einer Zeile, weshalb 
die Abfrage
1
SELECT `Offset` FROM `parameters`
auch nur einen Wert zurückliefert.

Wie geht es richtig?

Michael
Gast #4411576
Hallo,
leider werde ich aus Euren Antworten und der verlinkten Seite nicht 
schlau.

So funktionierts auch nicht:
1
INSERT INTO `daydata`
2
  ( 
3
    `Date` , `Offset` , `Gain`
4
  )
5
SELECT
6
  (
7
    '2015-12-29' , `Offset`,`Gain` FROM `parameters`
8
  )
und so auch nicht:
1
INSERT INTO `daydata`
2
  ( 
3
    `Date` , `Offset` , `Gain`
4
  )
5
SELECT
6
  (
7
    '2015-12-29' , SELECT `Offset`,`Gain` FROM `parameters`
8
  )
Wie Ihr seht, bin ich blutiger Anfänger

Und wo brauche ich ein Semikolon? Habe ich noch bei keiner MySQL-Anfrage 
benötigt.

Michael
Gast #4411578
Bitte lies die Fehlermeldungen!
Ich wette, die lauten jetzt anders, richtig?

Ich sehe sofort, dass
1
SELECT
2
  (
3
    '2015-12-29' , SELECT `Offset`,`Gain` FROM `parameters`
4
  )

nicht funktionieren kann. Da ist ein SELECT zuviel.
Gast #4411587
Aber Mysql-Wichtigtuer hat schon gewissermaßen trotzdem Recht:

Die Klammern sind überflüssig. Siehe unter obigem Link!
Lediglich im INSERT-Statement werden sie benötigt, um die Spaltennamen 
anzugeben.
Gast #4411593
Lies mal unter obigem Link den Post von "Haakon Meland Eriksen"!
Er beschreibt ganz gut, wie dieses Statement funktioniert.

(Es reicht, die ersten 9 Zeilen zu lesen. Ohne Leerzeilen...)
Gast #4411596
Thomas schrieb:
> Lies mal unter obigem Link den Post von "Haakon Meland Eriksen"!
> Er beschreibt ganz gut, wie dieses Statement funktioniert.
>
> (Es reicht, die ersten 9 Zeilen zu lesen. Ohne Leerzeilen...)

Das funktioniert ja auch, wenn ich wirklich alle 3 Werte kopieren will.
Ich kriegs aber nicht hin, nur 2 Werte zu kopieren und den 3. als 
Konstante/PHP-Variable reinzuschreiben.

Michael
Gast #4411597
Thomas schrieb:
> Aber Mysql-Wichtigtuer hat schon gewissermaßen trotzdem Recht:
>
> Die Klammern sind überflüssig. Siehe unter obigem Link!
> Lediglich im INSERT-Statement werden sie benötigt, um die Spaltennamen
> anzugeben.

Das wars, danke!

Wer kommt denn da drauf, dass man zu viele Klammern setzen kann :-)
In allen mir bisher bekannten Programmiersprachen kann man eigentlich 
nie zu viel Klammern setzen (C, PHP, Javascript, Pascal, Python, ...)

Michael

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.