irmi 10 Geschrieben 2. April 2009 Melden Teilen Geschrieben 2. April 2009 Hallo liebe Gemeinde, leider habe ich schon wieder ein SQL-Problem und zwar folgendes: Ich habe folgende Abfrage erstellt: create view [dbo].[vw] as select t1.artikel,t1.adresse, t2.firma,t2.s_urerklgueltig, t2.ursprungsland, max(t2.gueltigvon) as gueltigvon from artikel t1 join artikellieferant t2 on t1.artikel=t2.artikel and substring(t1.adresse,1,5)=t2.firma where t2.s_urerklgueltig=2008 and t2.gueltigvon is not null group by t1.artikel,t1.adresse,t2.firma,t2.s_urerklgueltig, t2.ursprungsland Sinn dieser Abfrage ist es s_urerklgueltig von 2008 auf 2009 zu ändern. ich habe bereits probiert dieses upzudaten, aber irgendwie krieg ich ds nciht hin. es sollte eigentlich nicht so schwer sein, kann mir hier wer helfen? herzlichen dank! Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 2. April 2009 Melden Teilen Geschrieben 2. April 2009 Hallo irmi Wie versuchst du denn das Update zu fahren? Hast du dafür schon ein Statement, wenn ja, welches? Gruß Carsten Zitieren Link zu diesem Kommentar
irmi 10 Geschrieben 2. April 2009 Autor Melden Teilen Geschrieben 2. April 2009 erst habe ich mir gedacht, ich mach es so: update vw set s_urerklgueltig=2009 where s_urerklgueltig=2008 aber das funktioniert nicht, weil ja das s_urerklgueltig verknüpft ist. darum bitte ich dringend um einen Rat. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 2. April 2009 Melden Teilen Geschrieben 2. April 2009 Moin, was willst du denn überhaupt updaten? Alle Zeilen und dort das Feld s_urerklgueltig? Oder nur die, wo 2008 drin steht? Oder nur spezielle Zeilen? Ohne das zu wissen, können wir dir keine sinnvolle Hilfestellung geben. Gruß, Nils Zitieren Link zu diesem Kommentar
irmi 10 Geschrieben 2. April 2009 Autor Melden Teilen Geschrieben 2. April 2009 hallo, die abfrage ergibt mir alle zeilen, wo das feld s_.... gleich 2008 ist. und ich möchte dieses abfrageergebnis updaten, so dass in jedem feld wo das fels s_...= 2008 durch 2009 ersetzt wird. Ich hoffe ich habe es gut beschrieben? Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 2. April 2009 Melden Teilen Geschrieben 2. April 2009 VW ist nach dem Statement in deinem ersten Posting eine View. Ein Update auf eine View ist meines Erachtens nach nicht so der Bringer oder? ;) Wenn dann musst du doch die Daten in der zugrundeliegenden Tabelle updaten. Zitieren Link zu diesem Kommentar
irmi 10 Geschrieben 2. April 2009 Autor Melden Teilen Geschrieben 2. April 2009 ja das wäre natürlich optimal! aber ich weiß ja nicht, wie ich das update mit der abfrage verknüpfen kann! Zitieren Link zu diesem Kommentar
wilgin 11 Geschrieben 2. April 2009 Melden Teilen Geschrieben 2. April 2009 Hi! Warum dann nicht so? update artikellieferant set s_urerklgueltig=2009 where s_urerklgueltig=2008 and gueltigvon is not null Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 2. April 2009 Melden Teilen Geschrieben 2. April 2009 Wie wäre es denn mit Update artikellieferant set s_urerklgueltig = 2009 where s_urerklgueltig = 2008 Damit würden alle Einträge der Tabelle Artikellieferant upgedated, welche in s_urerklgueltig aktuell den Wert 2008 stehen haben. Wofür denn die Verknüpfung des Updates mit deiner ursprünglichen Abfrage? Den Sinn dahinter hab ich noch nicht verstanden. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 2. April 2009 Melden Teilen Geschrieben 2. April 2009 Moin, tust du uns einen Gefallen und eignest dir SQL-Grundlagen an? Danke. Deine View führt eine Gruppierung aus. Damit kannst du natürlich kein Update ausführen. Zudem hast du meine Frage offenkundig nicht richtig beantwortet (die View gibt etwas anderes zurück als du behauptest). Bitte gewöhne dir an, dein Problem und die dahinter stehende Anforderung vollständig und korrekt zu beschreiben, sonst werden wir dir nicht helfen können. In der Annahme, dass du alle Zeilen aktualisieren willst, in denen "2008" steht und für die "gueltigvon" gesetzt ist, dürfte es diese Abfrage tun: UPDATE artikellieferant SET urerklgueltig = '2009' WHERE urerklgueltig = '2008' AND gueltigvon IS NOT NULL Deine Kriterien stehen ja beide in derselben Tabelle, die du updaten willst. Ein Join ist dann unnötig. Gruß, Nils Zitieren Link zu diesem Kommentar
irmi 10 Geschrieben 2. April 2009 Autor Melden Teilen Geschrieben 2. April 2009 Also, nochmals danke an alle die mir helfen und NilsK: Dies ist ein Forum und das ist dazu da Fragen zu stellen bzw Fragen zu beantworten. Also weiß ich nicht was das soll? Ich hab halt gerade mit SQL begonnen und da ist es noch nicht so einfach alles richtig zu definieren! Ich bemühe mich aber. im übrigen war die lösung wirklich ganz einfach (eh der einfache updatebefehl). Die view hab ich erst nachher erstellen müssen für andere zwecke. also nochmals danke an die helfer und entschuldige NilsK, dass ich hier etwas gefragt habe Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 3. April 2009 Melden Teilen Geschrieben 3. April 2009 Moin, irmi, du scheinst da etwas misszuverstehen. Wenn ich nicht gefragt werden wollte, würde ich hier nicht antworten. Schließlich kommt die Lösung ja auch von mir. Ich finde also deinen Ton nicht ganz angemessen. Es handelt sich hier um ein Forum. Grundlagen kann man in einem solchen Medium nicht sinnvoll vermitteln. Da es bei dir aber eben genau um solche Grundlagen geht, habe ich dich einfach gebeten, dir solche Grundlagen auf besser geeignete Art anzueignen. Dazu gibt es genügend Möglichkeiten, z.B. Tutorials im Web, Bücher, Seminare ... Für Detailfragen stehen wir gern zur Verfügung. Gruß, Nils Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.