Anzeige:
Ergebnis 1 bis 10 von 10

Thema: Viele SQL-Abfragen in eine packen

  1. #1
    Registrierter Benutzer
    Registriert seit
    04.02.2004
    Beiträge
    5

    Viele SQL-Abfragen in eine packen

    Hi,

    ich möchte mehrere SQL-Abfragen in eine SQL-Anweisung packen.
    Ist dies möglich?
    Und...wie funktioniert das?

    Beispiel:
    Ich habe 2 UPDATE - Anweisungen, wie bekomme ich diese in eine Anweisung?

    Anweisung1:
    UPDATE tabelle1 SET kategorie = 'TEST' WHERE kategorie LIKE 'Monitor Zubehör';
    Anweisung2:
    UPDATE tabelle1 SET kategorie = 'TEST2' WHERE kategorie LIKE 'Computer Zubehör';

    Ich bedanke mich schonmal im Vorraus für Eure Hilfe.
    mfg

    Timo

  2. #2
    Registrierter Benutzer
    Registriert seit
    24.12.2001
    Ort
    anywhere before EOF
    Beiträge
    236
    Also Unter-SELECTs gibts (kommt zwar auf die Datenbank drauf an, MySQL < 4 kann es z.B. nit, aber die meissten schon) aber von Unter-UPDATEs hätt ich noch nie was gehört, macht auch irgendwie keinen Sinn, reicht wenn man das nach einander macht. Für was sollen das sein, vielleicht kann man dir dann weiter helfen?
    chmod -R +t /*

  3. #3
    Registrierter Benutzer
    Registriert seit
    21.06.1999
    Beiträge
    677
    Mit reinem SQL (alle DB's):

    Mehrere SELECTs kann man mit UNION zusammenmischen (hat nichts mit Unter-Selects zu tun, wie der Vorposter meinte). UNION ist Bestandteil von SQL2, sollte also von jeder Datenabank (ausser vielleicht MySQL) unterstützt werden. Mehrere UPDATEs kann man nicht zusammenmischen.

    Mit PL/SQL (nur Oracle oder PostgreSQL):

    Da kannst Du natürlich über eine STORED PROCEDURE alles machen. Läuft auf dem Server ab mit dem damit verbundenem Performancegewinn.

  4. #4
    Registrierter Benutzer
    Registriert seit
    04.02.2004
    Beiträge
    5

    thg

    Vielen vielen Dank...

    Mal schauen ob es mit dem Join klappt...
    mfg

    Timo

  5. #5
    Registrierter Benutzer
    Registriert seit
    17.01.2004
    Ort
    Kornwestheim
    Beiträge
    19
    Welcher JOIN?
    Bubble
    There are only 10 kinds of persons in this world - those who understand binary and those who don't.

  6. #6
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571

    Re: Viele SQL-Abfragen in eine packen

    Original geschrieben von rabbit

    Anweisung1:
    UPDATE tabelle1 SET kategorie = 'TEST' WHERE kategorie LIKE 'Monitor Zubehör';
    Anweisung2:
    UPDATE tabelle1 SET kategorie = 'TEST2' WHERE kategorie LIKE 'Computer Zubehör';
    Ich hoffe ich habe das richtig verstanden. Du hast einen Haufen Anweisungen wie oben angegeben, und möchtest die per Script ausführen. Ich glaube, die meisen Datenbanken können das. Vielleicht erzählst du einmal, welche Datenbank du einsetzt.

    Gesetzt den Fall dass das bei dir geht, erstellst du dir erst einmal eine Scriptdatei, nennen wir sie script.sql
    Code:
    UPDATE tabelle1 SET kategorie = 'TEST' WHERE kategorie LIKE 'Monitor Zubehör';
    UPDATE tabelle1 SET kategorie = 'TEST2' WHERE kategorie LIKE 'Computer Zubehör';
    jetzt connectest du dich auf der Kommandozeile mit deiner Datenbank und führst am SQL-Prompt script.sql aus.

    Oder ist deine Frage so zu verstehen, dass du script.sql nicht mit der Hand erstellen willst sondern per Programm oder sonst wie?

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  7. #7
    Registrierter Benutzer
    Registriert seit
    04.02.2004
    Beiträge
    5

    SQL

    Hi, danke schon mal im Vorraus für Eure Hilfe.

    ich meinte natürlich UNION nicht JOIN, ich bitte Euch vielmals um entschuldigung.

    '<--Diese Anweisung sollte die Spalte Kategorie "Drucker Verbrauchsmaterial" die folgende Strings nicht in der Spalte "Artikelbeschreibung" hat in "Verbrauch Sonstiges" umbenennen. Dies funktioniert leider nicht. Er ändert alle Inhalte der Spalte Kategorie in Verbrauch Sonstiges.

    Was habe ich falsch gemacht?-->

    Cn.Execute "UPDATE Artikel SET Kategorie = 'Verbrauch Sonstiges' WHERE (Kategorie = 'Drucker Verbrauchsmaterial') AND (Artikelbeschreibung NOT LIKE '%Papier%') AND (Artikelbeschreibung NOT LIKE '%Tinte%') AND (Artikelbeschreibung NOT LIKE '%Toner%') "
    mfg

    Timo

  8. #8
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Aua, kann ich verstehen dass du Probleme hast. Bisschen Struktur verschaffte ersteinmal Übersicht.
    Code:
    UPDATE Artikel SET Kategorie = 'Verbrauch Sonstiges' 
    WHERE 
            Kategorie = 'Drucker Verbrauchsmaterial'
       AND Artikelbeschreibung NOT LIKE '%Papier%'
       AND Artikelbeschreibung NOT LIKE '%Tinte%' 
       AND Artikelbeschreibung NOT LIKE '%Toner%'
    Zeigt denn
    Code:
    SELECT * FROM Artikel
    WHERE 
            Kategorie = 'Drucker Verbrauchsmaterial'
       AND Artikelbeschreibung NOT LIKE '%Papier%'
       AND Artikelbeschreibung NOT LIKE '%Tinte%' 
       AND Artikelbeschreibung NOT LIKE '%Toner%'
    etwas an?

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  9. #9
    Registrierter Benutzer
    Registriert seit
    04.02.2004
    Beiträge
    5

    Select - Anweisung

    Hi, danke für Deine Hilfe.

    Ich habe da mit dem Select in meiner Access Datenbank ausprobiert.

    Er zeigt mir leider alle Datensätze der Kategorie 'Drucker Verbrauchsmaterial' an.

    dann funktioniert der NOT LIKE Befehl wohl bei Access nicht.

    Was könnte ich denn an statt NOT LIKE denn noch nehmen?

    Vielen vielen Dank schonmal im Vorraus für Deine hIlfe.
    mfg

    Timo

  10. #10
    Registrierter Benutzer
    Registriert seit
    04.02.2004
    Beiträge
    5

    gelöst

    Hi Vielen Dank nochmal an Allen!

    Ich muss das Ersetzungszeichen % in * austauschen.

    Wünsche Euch allen eine angenehme Arbeitswoche.


    See you later ;-)
    mfg

    Timo

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •