Benutzer mit den meisten Antworten
Bei Lerem Feld Wert einer anderen Spaöte Setzen

Frage
-
Hallo erst mal, ich habe folgende Abfrage:
use DB
select Ob_ID,B_intAbk,Ob_F2,B_DatVon,B_DatBis,Ob_F1, Ob_f20,Ob_F30,Ob_f31
FROM M_Objekte1 INNER JOIN M_Bestaende ON M_Objekte1.B_ID = M_Bestaende.B_ID
WHERE
B_intAbk Like '%341-04 Adopt%'
AND OB_F31 IS NULL
ORDER BY Ob_F2
Hiermit filter ich in meiner Datenbank die Datensätze die im Feld ob_F31 keinen Wert haben, wie kann ich diese auf Ob_F30 setzen, eventuell geht das ja mit dem Set Befehl irgendwie?
Vielen Dank i.V.
Gruss
Chris
- Bearbeitet Chris4712 Dienstag, 10. Juli 2018 12:27
Antworten
-
Oder probiere mal ein UPDATE ... FROM
update M set Ob_F31 = M.Ob_F30 from M_Objekte1 M INNER JOIN M_Bestaende ON M_Objekte1.B_ID = M_Bestaende.B_ID where OB_F31 IS NULL AND B_intAbk Like '%341%';
HTH!
Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu
- Als Antwort vorgeschlagen Christoph Muthmann Donnerstag, 12. Juli 2018 05:51
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Freitag, 20. Juli 2018 05:10
-
Hi,
nuja, niemand hier kennt deine Datenbankstruktur.
Ich ging davon aus, dass Ob_ID in deinem Fall der Primärschlüssel der Tabelle M_Objekte1 ist. Falls das nicht der Fall sein sollte, musst Du das klarerweise entsprechend anpassen.
Und natürlich macht man sowas erstmal gegen eine Testdatenbank :) Wo auch sonst?
Poste doch mal die Struktur der zu aktualisierenden Tabelle als CREATE TABLE Statement (oder ggfs. auch als Screenshot der Entwurfsansicht)
Führ mal nur dieses Statement aus.
SELECT * FROM M_Objekte1 INNER JOIN M_Bestaende ON M_Objekte1.B_ID = M_Bestaende.B_ID WHERE B_intAbk LIKE '%341-04 Adopt%' AND OB_F31 IS NULL
Kommen dann die richtigen Datensätze für die Tabelle, die Du aktualisieren willst? Falls ja, welche Spalte ist der Primärschlüssel? Ob_ID? Oder B_ID? Oder was ganz anderes? Diese Primärschlüsselspalte gibst Du dann anstelle von * an und kannst dann dieses Statement ausführen (natürlich auch wieder gegen die Testdatenbank)
UPDATE M_Objekte1 SET Ob_F31 = Ob_F30 WHERE <Primärschlüsselspalte> IN ( SELECT M_Objekte1.<Primärschlüsselspalte> FROM M_Objekte1 INNER JOIN M_Bestaende ON M_Objekte1.B_ID = M_Bestaende.B_ID WHERE B_intAbk LIKE '%341-04 Adopt%' AND OB_F31 IS NULL )
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort vorgeschlagen Stefan FalzModerator Freitag, 13. Juli 2018 06:26
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Freitag, 20. Juli 2018 05:10
Alle Antworten
-
Hi,
willst Du ein Update der Datensätze durchführen? Oder nur im SELECT Statement den Wert aus Ob_F30 haben, wenn in Ob_F31 nichts drin ist?
Ersteres würde bspw. so gehen:
UPDATE <Tabelle> SET Ob_F31 = Ob_F30 WHERE Ob_F31 IS NULL bzw. UPDATE <Tabelle> SET Ob_F31 = Ob_F30 WHERE ISNULL( Ob_F31, '' ) = ''
Letzteres geht dann bspw. so:
SELECT ..., ISNULL( Ob_F31, Ob_F30 ) AS Ob_F31 FROM <Tabelle>
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Bearbeitet Stefan FalzModerator Dienstag, 10. Juli 2018 12:33
-
also ich will bei F31 ein update mit dem Wert aus F30 sofern F31 nichts drin ist, weiterhin ist das Problem dass es sich um eine Bestimmte Grupper handelt, welche in einer Tabelle BEstände definiert ist, also muss ich mit einem Join arbeiten, das folgende funktioniert jedenfalls nicht.
use DB
UPDATE M_Objekte1
SET Ob_f31 = Ob_F30
update M_Objekte1
set Ob_F31 = (select Ob_F30 from M_Objekte1 INNER JOIN M_Bestaende ON M_Objekte1.B_ID = M_Bestaende.B_ID
where OB_F31 IS NULL
AND
B_intAbk Like '%341%')- Bearbeitet Chris4712 Dienstag, 10. Juli 2018 13:02
-
Hi,
dann geht das so wie in meinem ersten Beispiel, das bfurcheau auch nochmal gepostet hat.
UPDATE <Tabelle> SET Ob_F31 = Ob_F30 WHERE Ob_F31 IS NULL
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Hi,
da Du mit Ob_ID wahrscheinlich einen eindeutigen (Pimär)Schlüssel hast, bspw. so:
UPDATE <Tabelle> SET Ob_F31 = Ob_F30 WHERE Ob_ID IN ( SELECT Ob_ID FROM M_Objekte1 INNER JOIN M_Bestaende ON M_Objekte1.B_ID = M_Bestaende.B_ID WHERE B_intAbk LIKE '%341-04 Adopt%' AND OB_F31 IS NULL )
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Hi,
nuja, niemand hier kennt deine Datenbankstruktur.
Ich ging davon aus, dass Ob_ID in deinem Fall der Primärschlüssel der Tabelle M_Objekte1 ist. Falls das nicht der Fall sein sollte, musst Du das klarerweise entsprechend anpassen.
Und natürlich macht man sowas erstmal gegen eine Testdatenbank :) Wo auch sonst?
Poste doch mal die Struktur der zu aktualisierenden Tabelle als CREATE TABLE Statement (oder ggfs. auch als Screenshot der Entwurfsansicht)
Führ mal nur dieses Statement aus.
SELECT * FROM M_Objekte1 INNER JOIN M_Bestaende ON M_Objekte1.B_ID = M_Bestaende.B_ID WHERE B_intAbk LIKE '%341-04 Adopt%' AND OB_F31 IS NULL
Kommen dann die richtigen Datensätze für die Tabelle, die Du aktualisieren willst? Falls ja, welche Spalte ist der Primärschlüssel? Ob_ID? Oder B_ID? Oder was ganz anderes? Diese Primärschlüsselspalte gibst Du dann anstelle von * an und kannst dann dieses Statement ausführen (natürlich auch wieder gegen die Testdatenbank)
UPDATE M_Objekte1 SET Ob_F31 = Ob_F30 WHERE <Primärschlüsselspalte> IN ( SELECT M_Objekte1.<Primärschlüsselspalte> FROM M_Objekte1 INNER JOIN M_Bestaende ON M_Objekte1.B_ID = M_Bestaende.B_ID WHERE B_intAbk LIKE '%341-04 Adopt%' AND OB_F31 IS NULL )
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort vorgeschlagen Stefan FalzModerator Freitag, 13. Juli 2018 06:26
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Freitag, 20. Juli 2018 05:10
-
Oder probiere mal ein UPDATE ... FROM
update M set Ob_F31 = M.Ob_F30 from M_Objekte1 M INNER JOIN M_Bestaende ON M_Objekte1.B_ID = M_Bestaende.B_ID where OB_F31 IS NULL AND B_intAbk Like '%341%';
HTH!
Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu
- Als Antwort vorgeschlagen Christoph Muthmann Donnerstag, 12. Juli 2018 05:51
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Freitag, 20. Juli 2018 05:10