Anzeige: united-domains - Die ganze Welt der Domains
Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.
Jetzt Domain-Check bei united-domains!
Tabelle ergänzen
Autor: manya
Datum: 23.06.2011 23:28:53
Hallo nochmal,
Ich hänge schon wieder fest. :-(
Ich möchte die Tabelle "temp_kunden" um die Telefon-Nummer ergänzen, die ich aus der  Tabelle "telefonliste" heraushole.
Mein query
INSERT INTO 6_2_temp_kunden
(telefon)
SELECT telefon_nr FROM 6_1_telefonliste,  6_2_temp_kunden
WHERE kunden_nr = kd_nr
ist zwar syntaktisch in Ordnung, aber er bewirkt, daß die Telefonnummern ohne Bezug zur Kundennummer in der Tabelle "temp_kunden" hintendrangehangen werden.
http://manya.ma.funpic.de/sql/tabelle-ergaenzen-1.png
Kann mir bitte jemand erklären, was ich hier falsch gemacht habe?
Gruß
manya
PS
Meine Abfrage habe ich aus diesem Kapitel
http://www.teialehrbuch.de/Kostenlose-Kurse/SQL/14721-INSERT-mit-SELECT.html
anscheinend nicht ganz richtig abgeleitet
Re: Tabelle ergänzen
Autor: manya
Datum: 24.06.2011 09:59:29
> Mein query
>
> INSERT INTO 6_2_temp_kunden
> (telefon)
> SELECT telefon_nr FROM
> 6_1_telefonliste, 6_2_temp_kunden
> WHERE kunden_nr = kd_nr
>
> ist zwar syntaktisch in Ordnung, aber er bewirkt,
> daß die Telefonnummern ohne Bezug zur
> Kundennummer in der Tabelle "temp_kunden"
> hintendrangehangen werden.
Da habe ich mich wohl etwas verrannt. :-/
INSERT fügt ja eine komplette Zeile ein, und nicht nur einen Wert in einem Feld.
Also ein neuer Versuch mit UPDATE:
Wenn ich jetzt den query aus dem Bild als subquery benutze,
UPDATE 6_2_temp_kunden
SET telefon =
(SELECT kd_nr, nachname, vorname, telefon_nr
    FROM 6_1_telefonliste, 5_1_kunden
    WHERE kunden_nr = kd_nr)
bekomme ich die Fehlermeldung:
#1241 - Operand should contain 1 column(s)
Die Erklärung aus der Doku
http://dev.mysql.com/doc/refman/5.1/de/subquery-errors.html
sagt mir leider auch nichts. :-(
Ich würde mich freuen, wenn mir einer der SQL-Kundigen da weiterhelfen könnte. :-)
Gruß
manya
Re: Tabelle ergänzen
Autor: T.Jung
Datum: 24.06.2011 13:28:21
> Also ein neuer Versuch mit UPDATE:
> Wenn ich jetzt den query aus dem Bild als
> subquery benutze,
>
> UPDATE 6_2_temp_kunden
> SET telefon =
Du willst _ein_ Feld updaten, nämlich 'telefon'...
>  (SELECT kd_nr, nachname, vorname, telefon_nr
> FROM 6_1_telefonliste, 5_1_kunden
> WHERE kunden_nr = kd_nr)
... aber selektierst _vier_ Felder.
Wie soll MySQL wissen, _welches_ der vier Ergebnisse (kd_nr, nachname, vorname, telefon_nr) in das Feld 'telefon' geschrieben werden soll?
Ich habe Dein Beispiel jetzt nicht komplett durchdacht, der folgende Query ist also nur ein »Schnellschuss«, aber evtl. klappt es in etwa so:
UPDATE 6_2_temp_kunden SET telefon =
(SELECT telefon_nr FROM 6_1_telefonliste WHERE `6_1_telefonliste`.`kunden_nr`=`6_2_temp_kunden`.`kd_nur`)
HTH,
Tobias
Re: Tabelle ergänzen
Autor: manya
Datum: 24.06.2011 14:47:19
> Du willst _ein_ Feld updaten, nämlich
> 'telefon'...
>
>
> > (SELECT kd_nr, nachname, vorname,
> telefon_nr
> > FROM 6_1_telefonliste, 5_1_kunden
> > WHERE kunden_nr = kd_nr)
>
> ... aber selektierst _vier_ Felder.
Oh wie blöd von mir!
Du hast recht! :-)
Bei der Fehlermeldung
#1241 - Operand should contain 1 column(s)
habe ich nur auf die SET-Anweisung geschaut, und gedacht:
"Was will der nur, es ist doch genau nur EINE Spalte".
Vielen Dank wieder mal!  :-)
Gruß
manya