Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Update-Anweisung in Access

Mitglied: cranach

cranach (Level 1) - Jetzt verbinden

27.09.2008, aktualisiert 28.09.2008, 4051 Aufrufe, 6 Kommentare

Hallo,

Ich programmiere Game of Life mit Access.

Zellen, die sterben sollen stehen in der Query "die".
Nun muß ich in meiner Tabelle "zelle" den Zustand jener Zellen , die sterben sollen, auf "tot" setzen.
x,y sind Koordinaten der Zellen in "die" und in "zelle".

UPDATE zelle SET zelle.zustand = "tot"
WHERE zelle.x,zelle.y EXISTS (SELECT * FROM zelle AS z INNER JOIN die AS d ON (z.x=d.x AND z.y=d.y))

so oder ähnlich wird intuitiv die Anfrage lauten.

danke schon mal für eure Hilfe
Mitglied: filippg
28.09.2008 um 03:39 Uhr
Hallo,

und, was sagt er zu deinem "intuitiven" Ansatz?

Über die SQL-Fähigkeiten von Access bin ich mir ja nie ganz im klaren, aber in T-SQL (MS SQL Server) gäbe es wohl zwei Ansätze:

1. WHERE ... IN. Wie sieht's bei dir denn mit Primärschlüsseln aus? Die kann man eigentlich gut zusammensetzen (also x und y bilden den Schlüssel der Tabelle zelle), bei diesem Ansatz brauchst du aber einen einattributigen. Dann geht: UPDATE zelle SET... WHERE zelle.zelle_ID in (SELECT zelle.zelle_ID FROM zelle INNER JOIN die ON...)

2. Deutlich eleganter: Du kannst JOINS auch direkt in das Update-Statement einbauen. Grob: UPDATE zelle SET ... FROM zelle INNER JOIN die ON ... Zugegeben: ich muss die Ansätze auch immer erstmal ausprobieren, um zu sehen, ob sie funktionieren. Sollte es obiges (wider Erwarten) nicht tun würde ich ein UPDATE zelle SET ... FROM zelle LEFT JOIN die ON ...WHERE NOT die.x IS NULL probieren.

Gruß

Filipp
Bitte warten ..
Mitglied: cranach
28.09.2008 um 10:39 Uhr
Hallo Filipp

schon mit dem einattributigen Primärschlüssel hat es funktioniert. Deine anderen Vorschläge habe ich noch nicht ausprobiert.

hast mein Restwochenende gerettet

Gruß
Bitte warten ..
Mitglied: cranach
28.09.2008 um 14:28 Uhr
UPDATE zelle SET zelle.zustand = "tot"
WHERE zelle.id IN
(SELECT z.id FROM zelle AS z INNER JOIN die AS d ON z.x=d.x AND z.y=d.y);

So funktioniert es.

Ich habe eine weitere Frage...Kann ich die SELECT- Anweisung so erweitern, dass gleichzeitig tupel bezüglich einer dritten Tabelle "born" rausgeschmissen werden?
Weil ich nämlich in die Tabelle "zelle" Tupel aus "born" einfüge. Diese neuen Tupel dürfen aber bei der unteren Anweisung nicht involviert werden.

intuitiv:
(SELECT z.id FROM zelle AS z INNER JOIN die AS d ON z.x=d.x AND z.y=d.y)
MINUS
(SELECT z.id FROM zelle AS z INNER JOIN born AS b ON z.x=b.x AND z,y=b.y)

Danke

Gruß
Bitte warten ..
Mitglied: filippg
28.09.2008 um 14:46 Uhr
Hallo,

ich habe nicht so ganz verstanden, was du willst. Aber vielleicht erfüllt
UPDATE zelle SET ... WHERE zelle.ID IN (SELECT.... JOIN die ON...) AND NOT zelle.ID IN (SELECT zelle.id FROM zelle INNER JOIN born ON...) deine Wünsche.

Gruß

Filipp
Bitte warten ..
Mitglied: cranach
28.09.2008 um 16:18 Uhr
hallo Filipp

die= ermittelt die Tupel, deren Zustand in zelle auf "tot "gestzt werden müssen.
born= setzt den zustand auf "lebendig" ,wenn die tupel bereits in "zelle" sind, Oder fügt neue Tupel ein.

dieUPDATE und bornINSERT realisieren eben diese Aktualisierung in "zelle" anhand der Queries born und die.

Wenn ich bornQuery aufrufe verändert diese also "zelle".
Ich muß aber dieQuery auf die ursprüngliche "zelle" anwenden.
Deswegen dachte ich, ich könnte die neuen Tupel aus zelle wieder abziehen, so hätte ich ja die ursprüngliche zelle wieder und darauf "die" bzw. dieUPDATE ausführen.

Aaaber es geht nicht: Ich kann nicht verhindern, dass "dieQuery" auf die veränderte "zelle" angewendet wird.
müßte UPDATE und INSERT gleichzeitig laufen lassen, damit keiner von beiden früher zum Zuge kommt.

Da habe ich also den salat

Gruß

Ebru (mein wahres Ich)
Bitte warten ..
Mitglied: Biber
28.09.2008 um 18:23 Uhr
Moin cranach/Ebru,

willkommen im Forum.
Wir können es handwerklich doch nur dann lösen, wenn wir alle erforderlichen Rahmenbedingungen Deiner Game-of-Life-Implementierung kennen.
Insbesondere fehlt mir die folgende Info:

Du hast nach einer Möglichkeit gefragt, alle vorhandenen Zellen auf Deinem Spielfeld (=komplette Tabelle "Zelle") per Update des Felds "Zustand" zu aktualisieren - allerdings nur auf den Zustand "tot". Was sind denn die anderen möglichen Zustände? Bzw. wäre es nicht einfacher, statt "UPDATE" ein DELETE From" zu nehmen?

müßte UPDATE und INSERT gleichzeitig laufen lassen, damit keiner von beiden früher zum Zuge kommt
Kann ich nicht nachvollziehen. Egal, ob Du es über eine Sequenz "DELETE died", danach "insert born" oder zuerst insert, dann delete machen würdest- NIEMALS kann eine Zelle(x,y) gleichzeitig/in der gleichen Generation in beiden Untermengen enthalten sein.

Es sei denn, Du hast es ganz anders implementiert...

Skizziere doch bitte kurz den Gesamtalgorithmus.

Danke
Biber
Bitte warten ..
Ähnliche Inhalte
Datenbanken

SQL - mehrere UPDATE-Anweisungen in einem String per vbs

gelöst Frage von goodbytesDatenbanken4 Kommentare

Hallo, ich möchte mehrere Werte in eine MySQL-Datenbank mittels vbs-Script eintragen. Eigentlich besteht jede Zeile aus "Update ;", bei ...

Apache Server

Gelten alle .htaccess-Anweisungen hostweit?

gelöst Frage von itebobApache Server4 Kommentare

Diese Regel RewriteEngine On RewriteCond %{HTTP_HOST} sub1.eine-xyz-domain.de NC RewriteRule ^(.*)$ h ttp:sub2.eine-xyz-domain.de/dir/321/seite321.htm l R=301,QSA,L in einer .htacces s- Datei, ...

PHP

Den Inhalt einer "get"-Anweisung finden, wie

Frage von sbsnewbiePHP2 Kommentare

Moin Leude, könnt Ihr mir mal kurz auf die Sprünge helfen? Wie kann ich den Inhalt einer "get"-Anweisung finden? ...

Batch & Shell

Set Anweisung mit einer Variable bearbeiten

Frage von RaidManBatch & Shell3 Kommentare

Guten Abend zusammen, tschuldigung für die späte sonntägliche Frage ;) ich möchte von einem String den Anfang kürzen und ...

Neue Wissensbeiträge
Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 StundeSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 10 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 23 StundenErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 TagWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server36 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...