Zum Inhalt springen

Massenwiederholungen Konversion


chriss136

Empfohlene Beiträge

Hallo,

ich habe folgendes Prob:

in der Datenbank sind 2 Tabellen betroffen einmal die "dummy" mit lauter "Kundendaten" in dieser Tabelle gibt es eine Spalte category wo Branchen abgelegt sind, leider nicht als ID aus der anderen Tabelle (categories,die Spalte hier heißt name), sondern in Textform.

Jetzt müßte ich eine update Funktion schreiben, worin die Tabellenfelder verglichen werden und dann die ID von der categories in die Spalte category von der Tabelle dummy ersetzt wird.

Dementsprechend natürlich zu der passenden Kategorie mit übereinstimmung.

Ich hatte schon folgendes versucht:

UPDATE dummy.category FROM dummy.d1,

categories.d2 WHERE d2.id = d1.id AND d2.name = 'fehler' AND d1.category = 'OK' SET category

Weiss jemand Rat ?

Grüße

Christian

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das müßte die Server Version: 5.0.51a sein. SQL

Wird denn dann die Tabelle verglichen und die Branche z.B Abbrucharbeiten gegen die ID von der anderen Tabelle ausgetauscht die dort ja schon vorhanden ist ?

Es gibt schon eine ID zu dieser Branche nur leider nicht in dieser Tabelle, welches ersetzt werden muß von der anderen durch Vergleich.

Was müßte ich denn da einsetzten bei Conditionen von where ?

Also ...:

UPDATE dummy SET category=categories,name WHERE <Condition> ??

Grüße

Christian

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das müßte die Server Version: 5.0.51a sein. SQL

SQL ist eine Sprache! SQL ? Wikipedia

Ich hatte nach dem DBMS gefragt !

Schau Dir bei Wiki die DML einmal an ggf. solltest Du zunächst die Grundlagen von SQL lernen, denn Dein Statement ist wirklich sehr einfach. Der genaue SQL Syntax ist ggf von Deinem DBMS abhängig

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

DBMS ? Heißt das nicht Datenbank Management System ?

Ist das nicht die Server Version ? Was anderes hab ich da nicht stehen ?!

und damit wir uns da nicht falsch verstehen, es darf nicht gegen irgendwelche ID ausgetauscht werden, es muß verglichen werden und gegen die gleiche ausgetauscht werden.

DML ?? Ich habs nicht so mit Abkürzungen :-(

Und so einfach kann das nicht sein, ich hab auch schon andere gefragt die (nicht bloss) Netzwerk Admins sind und nicht wirklich helfen konnten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

DML ?? Ich habs nicht so mit Abkürzungen :-(

Wie wäre es, wenn Du Google oder Wikipedia verwendest: Data Manipulation Language ? Wikipedia

Ich setze aber solche Dinge im Bereich der Datenbanken voraus!

Und so einfach kann das nicht sein, ich hab auch schon andere gefragt die (nicht bloss) Netzwerk Admins sind und nicht wirklich helfen konnten.

Ich denke nicht dass es ein Problem darstellt, wenn man das hier liest: MySQL Datenbankhandbuch

sollte man dann auch zu so etwas ähnlichem kommen:


update dummy set category=(select id from categories where name=dummy.category)

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn der Vorgänger an dieser DB sauber gearbeitet hätte, bräuchte man das gar nicht ;-)

Aber muß ich dich leider entäuschen, der Code funzt auch nicht.

Die Zuordnungen der Tabellen aber stimmen schon und auf die Klammer wäre ich nicht gekommen

Fehlermeldung ist :

#1242 - Subquery returns more than 1 row

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aber muß ich dich leider entäuschen, der Code funzt auch nicht.

Die Zuordnungen der Tabellen aber stimmen schon und auf die Klammer wäre ich nicht gekommen

Fehlermeldung ist :

#1242 - Subquery returns more than 1 row

Ich habe auch nicht den Anspruch gehabt, Dir fertig funktionierenden Code zu posten. Du hast eine Fehlermeldung und solltest sie interpretieren und dann die passende Lösung entwickeln

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn der Vorgänger an dieser DB sauber gearbeitet hätte, bräuchte man das gar nicht ;-)

Aber muß ich dich leider entäuschen, der Code funzt auch nicht.

Die Zuordnungen der Tabellen aber stimmen schon und auf die Klammer wäre ich nicht gekommen

Fehlermeldung ist :

#1242 - Subquery returns more than 1 row

- Deine Beziehungen sind nicht eindeutig :


update dummy set category=(select id from categories where name=dummy.category

...mit anderen Worten, der Teil :

SELECT id from categories where name=dummy.category

...spuckt dir mindestens einmal mehr als 1 Datensatz aus, und damit funktioniert natürlich der Update nicht mehr

gruss

Link zu diesem Kommentar
Auf anderen Seiten teilen

[...] ID als kandidaten für einen PK ansehen

Voraussetzung wäre aber, dass das Design der DB richtig ist, wenn man natürlich hier z.B. Redundanzen hat, dann wird das nicht funktionieren.

Evtl um das Statement zu komplettieren kann ein "distinct" oder "group by" helfen. Ob es aber dann auch das richtige Ergebnis liefert muss der OP entscheiden, da einfach zu wenige Infos vorhanden sind, war mein Statement einfach ein Schuss ins Blaue

Vor allem wäre ich bei solchen Dingen immer sehr sehr vorsichtig, denn man kann sich damit schnell die Datensätze zerstören wenn z.b. aus einem String ein Int wird und nachfolgender Code nicht korrekt prüft, wenn er die Daten erhält.

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...