Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
Alt 02.02.2009, 14:09 Nach oben    #1
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 432
Standard Mysql Daten portieren

Hallo,

Ich hab da eine kleine SQL-Frage..

Ich habe 2 verschiedene Tabellen, muss aber aus designgründen eine komplette Splate von tabelle 1 nach tabelle 2 kopieren - allerdings müssen die foreign_keys passen.

Struktur der Tabellen.

sf_guard_user:
id
email
...

sf_guard_user_profile:
id
user_id (foreign key, reference sf_guard_user.id)
email (empty)


Nun möchte ich die komplette spalte Email von sf_guard_user in die jeweils zugehörigen (noch leeren) Emailfelder in sf_guard_user_profile kopieren.

Es wäre furchtbar schön, wenn es dafür eine Möglichkeit mit SQL gibt, denn dann würde ich mir die Arbeit ein Script zu schreiben, das die Daten portiert, sparen.

Mein bisheriger Ansatz ging über INSERT INTO SELECT FROM..
Allerdings INSERTed der ja nur. Update kann er nicht.
Meine Recherchen nach einer äquivalenten Lösung mit UPDATE INTO liefen lieder ins bodenlose..

Um es mal in Code auszudrücken, was ich mir in etwa vorstelle:

Code:
update sf_guard_user_profile (email) 
  select su.email
  from sf_guard_user AS su, 
         sf_guard_user_profile AS sp 
    where su.id = sp.user_id;
Gibt es sowas überhaupt?
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.02.2009, 14:59 Nach oben    #2
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 432
Standard

Auch, wenn ich das nun doch über die php-Variante gelöst habe, da ich noch einige mehr Änderungen am Model vornehmen musste (mehrere Daten aus anderen Feldern noch dazuholen) würde ich mich über eure Ideen diesbezüglich freuen.

Fände es auf jeden Fall interessanter das mit SQL zu lösen!
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.02.2009, 19:51 Nach oben    #3
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 696
Standard

Hmmm, vielleicht nach dem Prinzip:
PHP-Code:
INSERT INTO `tabelle_1` (spalte_tabelle_1)
 
SELECT `spalte_tabelle_2FROM `tabelle_2
Wobei aber die User-ID noch stimmen muss ... was man sicher mit WHERE noch angeben muss.

[Update]

Falls in beiden Tabellen die ID zur User-ID gehört, dann müssen die Einträge ja stimmen, und dann geht kein INSERT

PHP-Code:
UPDATE sf_guard_user_profile AS p SET
p
.email = (SELECT email FROM sf_guard_user WHERE p.user_id id
mal testen ...

Geändert von CIX88 (02.02.2009 um 20:26 Uhr)
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.02.2009, 01:37 Nach oben    #4
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 432
Standard

Ich werde das morgen oder übermorgen mal testen, wäre auf jeden Fall eine tolle Methode. Bei mir handelte es sich nur um knapp 1000 Datensätze, aber bei mehr wir das mit foreach-isierten queries doch kritisch.
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.02.2009, 12:44 Nach oben    #5
Erfahrener Benutzer
 
Registriert seit: 16.08.2008
Ort: Mecklenburg-Vorpommern
Beiträge: 314
Standard

Warum liest du nicht einfach alle Datensätze aus, schreibst sie in ein PHP - Array, baust dann ein INSERT Statement mit dem Value Prinzip zusammen

z.B.
Code:
INSERT INTO tbl_name (spalte1,spalte2,spalte3) VALUES(1,2,3),(4,5,6),(7,8,9);
und speicherst das dann in die neue Tabelle und deklarierst im Nachhinein erst den Primary Key?

ANMERKUNG:
VALUES(1,2,3),(3,4,5)...
Jede Datenzeile wird in Klammern gesetzt und von einer anderen Zeile mit Hilfe von Kommas zwischen den Klammerpaaren getrennt
Sekundentakt ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.02.2009, 17:22 Nach oben    #6
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 432
Standard

Hallo Sekundentakt,

im Endeffekt habe ich es auf einem änlichen Weg auch gemacht. Ich hatte allerdings eine reine SQL-Lösung gesucht gehabt, da das viel Arbeit gespart hätte.

Bin leider noch immer nicht dazu gekommen, das zu testen. CIX, hast du schon was herausgefunden?
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Hardware-RAID-Lösung robo47 Plauderecke 29 26.12.2007 04:49
ZDnet: Sechs Schritte zum Schutz vertraulicher Daten in MySQL Lars Literatur 1 10.08.2006 21:15
[JAVA] Wie man aus Java mit einem PHP-Script kommuniziert sparrow Tutorials 0 25.03.2006 22:24
MySQL 5.1 kommt in die Beta-Phase Ben Nachrichten 1 02.03.2006 14:31
[PHP] Wie übergebe ich Daten per URL? Ben Tutorials 0 05.12.2004 14:36


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47