chriss136 Geschrieben 3. Februar 2009 Teilen Geschrieben 3. Februar 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 3. Februar 2009 Teilen Geschrieben 3. Februar 2009 Welches DBMS? Dein Updatestatement müsste z.B. unter mySQL diese Form haben: UPDATE <Tabelle> SET <Feld>=<Value / SubSelect> WHERE <Condition> Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
chriss136 Geschrieben 3. Februar 2009 Autor Teilen Geschrieben 3. Februar 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 3. Februar 2009 Teilen Geschrieben 3. Februar 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
chriss136 Geschrieben 3. Februar 2009 Autor Teilen Geschrieben 3. Februar 2009 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 3. Februar 2009 Teilen Geschrieben 3. Februar 2009 Jep DBMS heist schon das was du meinst. ABER dazu gehört auch der Name der Datenbank. SQL reicht nicht aus. es gibt z.B. mySQL oder MS-SQL etc. und von beiden gab es eine Version 5.0 Also was meinst du nun? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
chriss136 Geschrieben 3. Februar 2009 Autor Teilen Geschrieben 3. Februar 2009 ASO !! :-) MS-SQL kenn ich gar nicht so wirklich. Kenne nur mySQL...das isses dann auch. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 3. Februar 2009 Teilen Geschrieben 3. Februar 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
chriss136 Geschrieben 3. Februar 2009 Autor Teilen Geschrieben 3. Februar 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 3. Februar 2009 Teilen Geschrieben 3. Februar 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Carnie Geschrieben 3. Februar 2009 Teilen Geschrieben 3. Februar 2009 Dann gibt es wohl zu einer Kategorie mehrere ID's . Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 3. Februar 2009 Teilen Geschrieben 3. Februar 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 3. Februar 2009 Teilen Geschrieben 3. Februar 2009 wenn schon JOINs auf die spalte ID gemacht werden, und subselects auf resultate von ID, dann würd ich doch glatt mal ID als kandidaten für einen PK ansehen s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 3. Februar 2009 Teilen Geschrieben 3. Februar 2009 wenn schon JOINs auf die spalte ID gemacht werden, und subselects auf resultate von ID, dann würd ich doch glatt mal ID als kandidaten für einen PK ansehen s'Amstel Ja, das denke ich auch :-) Ich glaube, das wollte der OP auch erreichen mit dem update Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 3. Februar 2009 Teilen Geschrieben 3. Februar 2009 [...] 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.