selfhtml.de - Alles für den Webmaster!

 

Anzeige: united-domains - Die ganze Welt der Domains

united domains - jetzt Wunsch-Domain sichern!

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