Einfache Aktualisierungsabfrage?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Einfache Aktualisierungsabfrage?

Re: Einfache Aktualisierungsabfrage?

von DPunch » Fr, 03.12.2010 17:17

Aloha
Reginald hat geschrieben:Große und Kleinschreibung ist wichtig, d. H. %AG% ist nicht das Selbe wie %ag%.
Auch bei den Feldnamen ist Open Office (bei mir mit einer MySQL Datenbank darunter) in Sachen Groß- und Kleinschreibung ziemlich genau ...
Das hat allerdings nichts mit OOo oder MySQL o.Ä. zu tun, sondern ist ganz einfach Standard beim Arbeiten mit Datenbanken ;)

Probleme mit Ersterem kannst Du wie folgt umschiffen:

Code: Alles auswählen

UPDATE “Table1” set “Status” = ‘1’ Where LOWER(“Firma“) = LOWER(‘BMW’)
UPDATE “Table1” set “Status” = ‘1’ Where LOWER(“Firma“) like LOWER(‘%AG%’)

Re: Einfache Aktualisierungsabfrage?

von Reginald » Fr, 03.12.2010 17:01

Aloha!
Das hat beides funktioniert! Super, danke!!! 8)

Für diejenigen, die es interessiert, hier dann noch ein paar Codes die ich für mich brauche und aus den obigen Antworten abgeleitet und erfolgreich getestet habe:

Code: Alles auswählen

UPDATE “Contacts” set “FirstLast” = “Firstname“ + ‘ ’ + “Lastname”  ‘Baut Vorname und Nachname in ein Feld zusammen mit Leerzeichen getrennt
UPDATE “Table1” set “Status” = ‘1’
UPDATE “Table1” set “Status” = ‘1’ Where “Firma“ = ‘BMW’
UPDATE “Table1” set “Status” = ‘1’ Where “Firma“ like ‘%AG%’
UPDATE “Table1” set “Status” = ‘’
UPDATE “Table1” set “Status” = NULL
Große und Kleinschreibung ist wichtig, d. H. %AG% ist nicht das Selbe wie %ag%.
Auch bei den Feldnamen ist Open Office (bei mir mit einer MySQL Datenbank darunter) in Sachen Groß- und Kleinschreibung ziemlich genau ...

Danke noch einmal an DPunch und Barlee! So langsam wird das was mit dem Umstieg von Access! :-)

Grüße, Reginald

Re: Einfache Aktualisierungsabfrage?

von DPunch » Do, 02.12.2010 22:16

Aloha
Reginald hat geschrieben:Heißt, ich habe eine Tabelle Contacts und eine Tabelle Categories. Die sind über das Feld Contacts.ID zu Categories.ContactID verknüpfbar und ich will das Feld Contacts.Category mit dem Feld Categories.Category updaten.

Code: Alles auswählen

UPDATE "Contacts" SET "Category" = (SELECT "Category" FROM "Categories" WHERE "ID" = "ContactID")
Und dann noch gleich die Frage: Mit welcher Syntax kann ich alle Datensätze herauslöschen, die in obiger Tabelle Contacts "Status" = 'Kunde' sind?

Code: Alles auswählen

DELETE FROM "Contacts" WHERE "Status" = 'Kunde'
Viel Spass.

Re: Einfache Aktualisierungsabfrage?

von Reginald » Do, 02.12.2010 20:55

Hey, Barlee!

Super, das funktioniert!!

Gretchenfrage: Wie sieht denn die Syntax für eine verknüpfte Abfrage aus? Also in Access:

Code: Alles auswählen

UPDATE Contacts INNER JOIN Categories ON Contacts.ID = Categories.ContactID SET Contacts.Category = [Categories.Category];
Heißt, ich habe eine Tabelle Contacts und eine Tabelle Categories. Die sind über das Feld Contacts.ID zu Categories.ContactID verknüpfbar und ich will das Feld Contacts.Category mit dem Feld Categories.Category updaten.

Analog würde ich sagen in OO Base:

Code: Alles auswählen

UPDATE "Contacts" INNER JOIN "Categories" ON "Contacts.ID" = "Categories.ContactID" SET "Contacts.Category" = "Categories.Category"
In Base bringt mir diese in Access funktionierende Syntax die Fehlermeldung:
"Unexpected token INNER, requires SET in statement [UPDATE "Contacts" INNER]"

Idee??
Und dann noch gleich die Frage: Mit welcher Syntax kann ich alle Datensätze herauslöschen, die in obiger Tabelle Contacts "Status" = 'Kunde' sind?

Grüße, Reginald

Re: Einfache Aktualisierungsabfrage?

von Barlee » Sa, 13.11.2010 17:07

Hallo Reginald,
und zwar egal ob ich ' oder " als Anführungszeichen verwende).
Hast Du auch so probiert?

Code: Alles auswählen

    
UPDATE "Contacts" SET "Status" = 'Kunden'
WHERE "Status" = 'Kunde'
Gruß Barlee

Re: Einfache Aktualisierungsabfrage?

von herz4 » Sa, 13.11.2010 08:18

Hallo, willkommen im Club der MS-Müden ...

Ich kann einen Select-Befehl über Extras, SQL absetzen und erhalte im Falle seiner (sprachlichen) Richtigkeit auch die Bestätigung für seine "erfolgreiche Ausführung" - nur sehe ich kein Ergebnis! Dieses kann so z. B. auch leer sein!

Ich empfehle, die Semantik und den Erfolg Deines Select-Befehls einmal am Ergebnis abzulesen, indem Du ihn in einer gewöhlichen Base-Abfrage verwendest.

Der Update-Befehl ist für mich semantisch unlogisch. Wozu Klammern, diese aber nur in der Where-Klausel? "Kunden" ist ein Case-sensitiver Bezeichner, 'Kunden' ein String. Wozu Case-sensitiv wenn dies im Table-Bezeichner nicht nötig ist?

Um Deine Frage überhaupt beantworten zu können, muss man wissen welche DB, ob SQL direkt oder Base-interpretiert und wie heißen Tabelle und Felder richtig ...

Hilft's?

Einfache Aktualisierungsabfrage?

von Reginald » Sa, 13.11.2010 00:31

Hallo zusammen,

ich beiße mich durch OO Base durch, nachdem ich jahrelang mit Access gearbeitet habe.

Nun will ich eine Aktualisierungsabfrage durchführen. Habe mal zum Testen eine Tabelle "Contacts" angelegt mit einem Feld "Status" und anderen Feldern.

Um einfach alle Datensätze zu filtern, die den Status = Kunde haben, funktioniert sowohl in Access als auch in OO Base (dort über Extras, SQL) das hier:

Code: Alles auswählen

SELECT Contacts.Status
FROM Contacts
WHERE (((Contacts.Status)='Kunde'));
Um das Feld "Status" zu aktualisieren, und zwar alle Datensätze, die "Kunde" haben sollen auf "Kunden" gestellt werden, funktioniert in Access das hier:

Code: Alles auswählen

UPDATE Contacts SET Contacts.Status = "Kunden"
WHERE (((Contacts.Status)='Kunde'))
In OO Base bekomme ich bei dem Code aber die Fehlermeldung "Table not found in statement [UPDATE Contacts]" (und zwar egal ob ich ' oder " als Anführungszeichen verwende).

Kann mir jemand sagen, wie der Code jetzt richtig heißt?

Danke schonmal!
Reginald

Nach oben