Spalte in andere Tabelle verschieben und vorher doppelte entfernen

Elfchen

Grünschnabel
Hallo !

Ich habe da so ein kleines Problem.

Ich habe es nun geschafft meine Newsletterabonennten in eine SQL-Tabelle einzulesen.

Nun habe ich da:

Tabelle: abos
Spalte: email

user1@nirgendwo.de
user2@irgendwo.com
user3@garnicht.at
... usw.

Gleichzeitig habe ich in der Datenbank eine weitere Tabelle:

Tabelle: system

mit den Spalten:

mailid
email
vorname
nachname
passwort
aktiv

Nun zu meinem Problemchen. Zunächst möchte ich aus der Tabelle abos, Spalte email alle doppelten Einträge entfernen.

Anschliessend möchte ich die Tabelle abos, Spalte email in die Tabelle system, Spalte email einfügen. Die nicht vorhandenen Spalten mailid muss das System irgendwie als index selbst anlegen, die spalte vorname soll einfach mit "vorname" gefüllt werden, die Spalte "nachname" einfach mit nachname, die Spalte aktiv einfach mit 1.

Die Spalte Passwort entweder mit einer zufällig generierten Buchstabenkombination oder zu Not halt eben auch mit "Passwort".

Ich möchte das ganze irgendwie auf der Shell Ebene machen.

Da ich eine Frau bin und dazu noch blond wäre eine Step by Step Anleitung wohl ideal.

:rolleyes: - falls das jemand kann ........

Kim
 
Elfchen hat gesagt.:
Hallo !

Ich möchte das ganze irgendwie auf der Shell Ebene machen.

Da ich eine Frau bin und dazu noch blond wäre eine Step by Step Anleitung wohl ideal.

:rolleyes: - falls das jemand kann ........

Kim

Ok dann mal 3 Fachfragen zurück

A) biste solo wenn ja > PM :-)

B) welche DB

C) wenn du Mysql hast und die Reihenfolge der Schritte getauscht werden dürfen:

Überpüfen ob die Spalte mailid auf autoincrement steht

erstelle die id und erzeuge pro emailadresse ein Datenbsatz
insert into system(email) select email from abos group by email

fülle den rest mit den Standartwerten auf
update system vorname='vorname',nachname='nachname',password='password',aktiv='1'

überprüfen ob die neue Tabelle ok ist denn jetzt wird gelöscht
truncate abos

und nun wiederherstellen der ursprungsdaten aber gekürzt
insert into abos(email) select email from system

und dat wars :-)
 
Zuletzt bearbeitet:
Hallo,
Ich wollte nur fragen, ob das bei meinem Problem auch so funktioniert.
Ich habe bei einem Datenimport wohl das Problem gehabt, das die Importtabelle 2x durchlaufen wurde, somit habe ich nun Datensätze doppelt.
a) Kann ich die wie oben beschrieben so rausbekommen d.h. nur noch einzelne Einträge habe?
b) Kann ich Blockweise einige Datensätze von Position ID 1000-1500 nach pos 500-1000 "verschieben" um Lücken aufzufüllen? Sonst habe ich einen leeren Block zun ca 500 Datensätzen, wenn ich die doppelten alle entferne.

Gruß
Alex
 
du könntest deine daten (ohne doppelte einträge) in eine neue tabelle kopieren
Code:
create table xy_distinct select distinct * from xy;
und wenns passt dann deine alte tabelle löschen und die neue umbenennen (auf den alten namen)
 
Ganz so trivial ist es leider nicht...
Ich habe folgenden Syntax :
SELECT A.inv As xinv,
A.serial
-- alternativ: DELETE
FROM inventar As A
Where A.INV NOT IN
(SELECT MIN(X.INV)
FROM inventar As X
GROUP BY X.serial)

bekomme aber die Fehlermeldung :
You have an Error in your SQL Syntax [...] use near 'SELECT MIN(X.INV)
from inventar As X
GROUP by X.seria at
 
ninguno hat gesagt.:
du könntest deine daten (ohne doppelte einträge) in eine neue tabelle kopieren
Code:
create table xy_distinct select distinct * from xy;
und wenns passt dann deine alte tabelle löschen und die neue umbenennen (auf den alten namen)

Bei der Abfrage kommt die gleiche Anzahl Datensätze zurück wie in der alten Tabelle.
 
Hi,
Es gibt Felder, wie z.B. Serial die sind identisch in beiden Datensätzen. Ich habe aber inzwischen herausgefunden, dass es blockweise doppelte gibt.. id 1117-1253 war der erste Import, 1254 - 1390 war der zweite Import. Wie kann ich nun den überflüssigen Block entfernen, dass mir beim blättern keine Lücke von 137 IDs entsteht? Die IDs haben lediglich fortlaufenden Charakter, haben also keine Relevanz für die Daten.
Wie kann ich also den 2. Block "ausschneiden" und die restlichen Daten weiter vorziehen, dass sie nahtlos an die anderen anschließen ?
 
Zurück