none
TOP 1000 UPDATE und SELECT RRS feed

  • Frage

  • Hallo Zusammen,

     

    ich habe ein paar Fragen zu Update und Select.

     

    Ausgangspunkt:

    Select Top 1000 ID, Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, RA From Daten Order by AZ DESC

     

    Nun möchte ich diese Datensätze aktualisieren:

    Update Top 1000 Daten RA = 0 Where AZ....

    Wie ist die Abfrage richtig?

     

    Dann möchte ich die 1000 Datensätze einzeln auslesen.

    Select Top 1 ID, Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, RA From Daten Order by AZ DESC

    Wie ist die Abfrage richtig, damit ich jeden Datensatz einzeln auslesen kann?

     

    Leider finde ich keine Antwort im Netz.

    Vielleicht kann mir hier jemand weiter helfen.

     

    Danke, Gruß Klaus

    Samstag, 22. November 2014 20:58

Antworten

  • Hallo Stefan,

    ich habe mein Problem so gelöst:

    1. Ich habe meiner Tabelle eine Spalte angefügt "OK".

    2. Ich habe in meiner DB eine Sicht erstellt, die genau meiner Abfrage "Select Top 1000 ID, Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, RA, OK From Daten Order by AZ DESC" entspricht.

    Jetzt kann ich in der Sicht "Top1000" alle gewünschten Datensätze aktuallisieren.

    Die einzelnen Datensätze kann ich jetzt mit:

    Select Top 1 ID, Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, RA From Top1000 Where OK = 0

    auslesen.

    Mit dem Update setze ich dann "OK" auf 1.

    Danke, Gruß Klaus

    • Als Antwort markiert BlauesBlatt Sonntag, 23. November 2014 17:46
    Sonntag, 23. November 2014 17:46

Alle Antworten

  • Hallo Klaus,

    mit dem UPDATE würde ich es mal so versuchen:

    UPDATE Daten
    SET    RA = 0
    WHERE  ID IN ( SELECT TOP 1000 ... FROM Daten WHERE ... ORDER BY ... )
    

    Was Du mit "1000 Datensätze einzeln auslesen" meinst, habe ich nicht verstanden.

    Wenn Du einen einzelnen Datensatz lesen willst, nimm die ID als WHERE Klausel. Also bspw. so:

    SELECT ...
    FROM   Daten
    WHERE  ID = 1
    

    Wenn Du alle 1000 Datensätze haben möchtest:

    SELECT   TOP 1000 ...
    FROM     Daten
    WHERE    ...
    ORDER BY ...


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 22. November 2014 23:02
    Moderator
  • Hallo Klaus,

    > Leider finde ich keine Antwort im Netz.

    Das stimmt nicht, denn Du hast schon eine Antwort bekommen, nur sie ignoriert.

    Gruß Elmar

    Samstag, 22. November 2014 23:35
  • Danke Stefan,

    also ich möchte jeden von den 1000 einzeln auslesen können.

    Um ihn erneut auswerten zu können.

    Die Datensätze sind nach AZ DESC sortiert, deshalb geht es nicht über die ID.

    Die ID kann von 1 bis 1200000000 sein.

    Danke, Gruß Klaus

    Sonntag, 23. November 2014 11:13
  • Hallo Elmar,

    nächstes Mal schreibe ich bei "GOOGLE".

    >Das stimmt nicht, denn Du hast schon eine Antwort bekommen, nur sie ignoriert.

    Wie mir diese Antwort bei meinem Problem helfen soll, weiß ich leider nicht.

    Vielleicht kannst Du mir das erklären?

    Es gibt Leute, die fragen hier, weil sie sich nicht auskennen.

    Und wenn die dann eine Antwort bekommen, wo sie nicht wissen um was es geht...

    Danke, Gruß Klaus

    Sonntag, 23. November 2014 11:27
  • Hallo Klaus,

    natürlich geht es über die ID. Du musst lediglich deine Sortierung anpassen, dann hast Du auch die 1000 passenden ID Werte.

    Aber solange Du uns nicht verrätst, wo und wie Du die Datensätze auf welche Art einzeln auswerten willst, kann man dir auch nicht sagen, wie Du das ggfs. erreichen kannst.

    Bzgl. deines Kommentars:

    Und wenn die dann eine Antwort bekommen, wo sie nicht wissen um was es geht...

    Das wird wohl daran liegen, dass deine Fragestellungen bei den potientellen Antwortenden mehr Fragen offen lassen als bei dir. Die Beschreibung ist zu kurz, es fehlen an für sich sämtliche Details, die einem helfen würden, das genaue Problem erkennen zu können.

    In diesem Thread fehlen mir bspw. die Angaben, wie Du in welchem Programm auf welche Weise einzelne Datensätze in welcher Form auswerten willst. Die genaue Beschreibung der gewünschten Auswertung ist hier natürlich auch wichtig.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Sonntag, 23. November 2014 12:27
    Moderator
  • Hallo Stefan,

    es geht um die 1000 Datensätze die ich mit "Select Top 1000 ID, Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, RA From Daten Order by AZ DESC" bekomme.

    Das sind 1000 Datensätze aus 1200000000.

    Selbst wenn ich die 1000 Datensätze nach der ID sortiere, weiß ich nicht welche ID sie haben.

    Die IDs sehen etwa so aus:

    35108585
    87005809
    34330144
    ... <ca. 875 weitere Zahlen, die einem nichts bringen>
    110902335
    110877102
    110877033

    Da ist nicht mit ID von 1 bis 1000.

    Danke, Gruß Klaus


    • Bearbeitet Stefan FalzModerator Sonntag, 23. November 2014 16:32 Elend lange Zahlenreihe gekürzt, da die niemanden interessiert und nicht hilfreich ist.
    Sonntag, 23. November 2014 15:32
  • Hallo Klaus,

    Eigeninitiative wird in einem Forum ebenso erwartet und Fragen sollten zeigen, dass derjenige sich mit dem "Stoff" auseinandersetzt.

    Hier: Beschäftige Dich mit der OUTPUT-Klausel.

    Gruß Elmar

    P. S.: Und bitte mülle nicht die Antworten zu, indem Du ellenlange Zahlenreihen einfügst, die niemanden weiterhelfen.

    Sonntag, 23. November 2014 16:14
  • Hallo Klaus,

    ich verstehe ja, dass Du nicht weißt, wie SQL funktioniert und was man damit machen kann.

    Aber wie Elmar und meine Wenigkeit ebenfalls schon sagten: Deine Postings führen nicht zum Ziel.

    Du stellst Fragen und möchtest gerne eine Antwort. Wir versuchen, dir bei den Problemen zu helfen und geben Denkanstöße oder Beispiele, wie Du das lösen kannst.

    Wenn dann deinerseits aber nur völliges Unverständnis kommt und Du dich genervt zeigst hilft das weder dir noch uns.

    Also nimm die Vorschläge bitte erstmal an, probier sie aus und mecker nicht gleich rum, dass das eh nicht so gehen würde. Denn das, was Du beschrieben hast, geht so wie von mir vorgeschlagen ohne Probleme.

    Allerdings fehlen leider immer noch so gut wie alle wichtigen Angaben. Welche das sind, habe ich dir oben geschrieben. Nur mit diesen Angaben kann man überhaupt weitermachen. Daher halte ich mich jetzt hier raus bis Du die fehlenden Infos gepostet hast.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Sonntag, 23. November 2014 16:31
    Moderator
  • Hallo Stefan,

    ich habe mein Problem so gelöst:

    1. Ich habe meiner Tabelle eine Spalte angefügt "OK".

    2. Ich habe in meiner DB eine Sicht erstellt, die genau meiner Abfrage "Select Top 1000 ID, Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, RA, OK From Daten Order by AZ DESC" entspricht.

    Jetzt kann ich in der Sicht "Top1000" alle gewünschten Datensätze aktuallisieren.

    Die einzelnen Datensätze kann ich jetzt mit:

    Select Top 1 ID, Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, RA From Top1000 Where OK = 0

    auslesen.

    Mit dem Update setze ich dann "OK" auf 1.

    Danke, Gruß Klaus

    • Als Antwort markiert BlauesBlatt Sonntag, 23. November 2014 17:46
    Sonntag, 23. November 2014 17:46
  • Hallo Klaus,

    Also Du bist auch einer dieser Mitarbeiter...

    Erst grabschen sich einen dicken Stapel Karteikarten... Danach rennen sie mit jeder einzelnen zu dem Ablagefach, holen die Kopie raus ... machen einen Haken auf die Kopie.... rennen zurück...

    Am Ende beschweren sie sich beim Chef, dass das Ablagefach so schwer zu öffnen ist und das die Arbeit so lange dauert...

    Was da wohl der Chef sagt?

    Gruß Elmar

    Sonntag, 23. November 2014 19:33
  • Hallo Klaus,

    deine "Lösung" bringt dir zwar ggfs. ein Ergebnis, eine Lösung deines Problems ist das aber nicht.

    Die neue Spalte war unnötig, genauso gut kannst Du auch einfach mit der ersten Abfrage als Basis arbeiten, auch als Datenquelle für andere Operationen wie dein Update.

    Aber egal. Neben Elmar hast Du jetzt eine zweite Person, die sich deine Postings nicht mehr wirklich anschauen wird. Denn Wissen zu vermitteln macht nur dann Spaß, wenn das Gegenüber nicht von vornherein nur seine eigene Sichtweise zulässt und sämtliche Vorschläge anderer verwirft, obwohl man diese weder geprüft noch vertstanden hat.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 24. November 2014 09:46
    Moderator