Wie erstell ich am einfachsten über eine Abfrage eine Flop-Top liste in MS Access?

1 Antwort

Wegen einer Abfrage eine Tabelle zu erstellen, macht man nur im äußersten Notfall bei sehr komplexen Problemen, die sonstwie nicht zu lösen wären. Deine Aufgabe gehört zu den ganz einfachen Übungen:

SELECT feld1, feld2, ... feldn FROM tabelle
WHERE ...
ORDER BY feld1 DESC

Die ersten 10 Sätze, die Du hiermit bekommst, sind die Top-10. Wenn Du das DESC weglässt, bekommst die Flop-10.

Für feld1, feld2 usw. setzt die Datenfeder ein, die Du haben willst, bei ORDER BY legst die Reihenfolge fest und gibst das Feld an, wonach Du die Sortierung haben willst (hier feld1).

Für diese Abfrage empfiehlt es sich, auf das zu sortierende Feld je einen Index für aufsteigend und absteigend zu legen.

Warum?  Wenn Du z.B. 10000 Sätze hast und Du willst den mit dem größten oder den kleinsten Wert, muss die Datenbank erst einmal alle Sätze sortieren, um den möglichweise einzigen infrage kommenden Satz zu ermitteln. Das ist nicht gerade effeftiv und kann bei größeren Datenmengen eine Weile dauern. Ist ein Index definiert, erreicht die Datenbank den benötigten Satz auf Anhieb unabhängig von der vorhandenen Datenmenge.

Anmerkung: Für die Sortierung bzw. für den Index können auch mehrere Spalten der Tabelle angegeben werden, auf- oder absteigend gemischt.

Mit der in diesem Beispiel angegeben WHERE-Anweisung kannst Du die
herangezogene Menge definieren, z.B. einen bestimmten Datumsbereich.
Ohne diese Angabe werden alle vorhandenen Sätze berücksichtigt.

Erstmals Danke. Naja das Ding ist n bisschen komplizierter. Ich hab ne Inventur Datenbank. Die Tabelle aus der ich die Abfrage machen möchte wird jährlich gelehrt und neu befühlt. Datensätze variieren zwischen 1500 und 2000 Artikelnummern. Hau ich da jetzt n Index drauf und lösch die im nächsten Jahr beginnt der Index beim letzten Datensatz der letzten Tabelle. Und ich möchte das ja über ne Schaltfläche und nen Textfeld machen :). Und ja ich hab schon mal ne Abfrage erstellt ;) bin aber erst am erlernen und mein f* Boss setzt mich unter Druck  

0
@Cristian84

Schwierig ist die Aufgabe nach wie vor nicht. Was den Index betrifft: Den legt man beim Einrichten der Tabelle an oder nachträglich, wenn schon Daten vorhanden sind, geht das auch.
Der Index beginnt auch nicht irgendwo und hört auch nicht irgendwo auf, der passt immer zu den Daten, das macht die Datenbank automatisch. Wenn die Tabelle gelöscht und wieder neu geladen oder geändert wird, wird der Index immer mitgeändet. Frage: Steht der Differenzwert schon in der Tabelle oder muss dieser erst berechnet werden? Im ersten Fall würde ich auf den Differenzwert einen Index legen, im letzten Fall würde ich die Tabelle um dieses Feld erweitern und dann den Index auf dieses Feld legen und dann mit einem Update das neue Feld mit Daten befüllen. Es geht aber auch mit unveränderter Tabelle, nur dann eben ohne Index und die Abfrage dauert etwas länger. Statt des nicht vorhandenen Differenzwertes kann man auch die Formel angeben, und auch danach sortieren.

1
@wotan38

Ergänzend dazu:

Wenn Du, wie ursprünglich vorgeschlagen, eine neue Tabelle erstellst: Wozu brauchst eine ID und noch dazu eine mit einem Autowert? Die Datenbank braucht die nicht, auch einen solchen Primärschlüssel nicht, solange Du nicht mehrere Tabellen miteinander verknüpfen willst.

1
@wotan38

Okay, du hast mir deutlich gemacht wie kompliziert und dumm ich bin.

 Frage: Steht der Differenzwert schon in der Tabelle oder muss dieser erst berechnet werden?

Ich hab die Abfrage jetzt über eine schon bestehende Abfrage erstellt in der ich die Differenz schon ermittelt hatte. Hab das jetzt so simple umgesetzt wie du mir das vorgelegt hast allerdings spuckt er mir nicht die Top/Flop 10 sondern 39 Datensätze aus. Habe jetzt bei der WHERE Bedingungen einen Wert eingetragen der das nochmal eingrenzt allerdings hätte ich das schon gerne nach Anzahl sprich die schlechtesten 10. Und was noch viel wichtiger ist, wobei ich dir wieder zeige wie unwissend ich bin, wie die korrekte Syntax  für die negativen Abweichungen ist ?? Hab bisschen was ausgetestet aber geht nöt !

Wozu brauchst eine ID und noch dazu eine mit einem Autowert? Die Datenbank braucht die nicht, auch einen solchen Primärschlüssel nicht, solange Du nicht mehrere Tabellen miteinander verknüpfen willst

Ja ich hab kompliziert gedacht. ich wollte erst Absteigend sortieren und allen einen Autowert geben damit ich in das Kriterium z.B. <10 eingeben kann und somit die Auswahl definierter und variabler ausgespuckt bekomme. Aber eben das geht ja nicht weil die Tabelle aus der ich die Daten habe jedes Jahr neu befühlt wird und der Autowert dann weiter zählt. Und frag nicht weiter ;) ich weiß das war nicht nur umständlich sondern auch dumm.

 

 

 

 

0
@Cristian84

Okay vergiss das was ich mit 39 Datensätzen erwähnt hatte! Einfach vergessen ;)

0
@Cristian84

Vergiss auch

Und was noch viel wichtiger ist, wobei ich dir wieder zeige wie unwissend ich bin, wie die korrekte Syntax  für die negativen Abweichungen ist ?? Hab bisschen was ausgetestet aber geht nöt !

Ich depp hab mich auf ein Abfragen bezogen, bei welcher ich die negativ Werte gefiltert hatte weshalb er mir bei der Abfrage keine negativ Werte ausgegeben konnte. Am besten ich lösche meinen Account ;)

Dankeee und sorry  ;)

 

0
@Cristian84

Wie man die Ausgabe datenbankseitig auf die 10 begrenzen kann, weiß ich nicht. Ich mache das Meiste vom Programm aus und da breche ich das Einlesen der Sätze nach der gewünschten Anzahl ab, falls ich die Anzahl begrenzt habe (bei mir ist das meistens nur der erste Satz, den ich benötige). Ich glaube aber, dass ich hier bei anderen Usern schon sowas gesehen habe, weiß nur nicht, ob das  programm- oder datenbankseitig war. Ich benutze auch eine andere Programmiersprache und kenne die hier verwendeten Sprachen nicht im Detail, ich beantworte hier auch nur Fragen zu SQL, da diese Sprache fast überall gleich ist. 

Als dumm solltest Dich nicht bezeichnen, auch wenn Du damit Bescheidenheit signalisierst. Du bist allenfalls noch unerfahren. Die Datenbanktechnik selbst ist geradezu banal. Im Informatikunterricht wird das so kompliziert gemacht, weil das für die Dozenten einfacher ist. Das ist ähnlich wie mit dem Fremdsprachenlernen, wo man sich mit viel Grammatik herumschlagen muss, während bei den Einheimischen schon die Kinder korrekt sprechen können (wenn auch nicht alle), die gar nicht wissen, dass es eine Grammatik gibt. So etwas wie ein Sprachgefühl gibt es auch bei Daten. Ich kann z.B. eine Datenbank aus dem Stegreif konzipieren, wenn ich die Aufgabe kenne (das muss man allerdings). Meine größte Datenbank ist bei einem Kunden von mir installiert und hat momentan 57 Tabellen mit z.T. sehr komplexen Verknüpfungen. Damit wird der gesamte Geschäftsablauf mit 4 Arbeitsplätzen abgewickelt. So wie man das im Informatikunterricht lehrt, würde ich das nie hinbekommen.

0
@Cristian84

Du bist auf dem besten Weg Dich erfolgreich in die Datenbanktechnik einzuarbeiten. Eine gesunde Einstellung zu Fehlern, aus denen man nur lernen kann, hilft einem sehr weiter.

0

wie kann man in einer Acess-Abfrage Kommastellen anhängen?

Hallo,

Ich habe mir eine Aktualisierungs-Abfrage erstellt, welche Daten aus einer anderen Tabelle (per ODBC verknüpft) Daten holt - Die Abfrage funktioniert auch schon.

Nur ist das Feld in der der Datenquelle ein wenig anders Formatiert (ohne Kommastellen) während das Feld in welches ich die Daten schreibe mit zwei Kommastellen formatiert ist.

Aktualisiere [Quelltabelle].[Feldname]
Kriterien: <> [Quelltabelle].[Feldname]

Die Abfrage funktioniert trotzdem - nur würde die Aktualisierung auf die Datensätze beschränken, welche ungleich sind, aber anscheinend ist für Access 10,00 nicht das selbe wie 10 und es werden dann immer alle überschrieben.

Also muss ich wohl noch etwas an den Kriterien ändern - hat jemand eine Idee?

...zur Frage

Excel WENN Wert kleiner als DANN

Hallo Leute,

habe ein problem bei Excel und zwar bei einer WENN Abfrage bei der der Wert nicht größer als 10 sein darf. Mein Versuch sieht so aus: =WENN(K12>10;K12-10;150) Der Wert in K12 darf also nicht größer als 10 sein, wenn dies der Fall ist, möchte ich die Differenz zu 10 im nebenstehenden Feld stehen haben. Andernfalls (als Test) 150 ausgeben. Der Wert ist momentan größer 10, aber es wird 150 ausgegeben anstatt der Differenz.

...zur Frage

Neue Autowerte ermitteln?

Hallo Leute, ich brauche dringend eure Hilfe.
Welchen code benötige ich, wenn ich einen neuen Datensatz anlegen will aber gleichzeitig möchte, dass der neue Autowert (ID) angezeigt wird.
abhängig vom titel, wenn es schon einen Autowert für den eingetippten Titel gibt, soll der vorhandene Autowert angezeigt werden, wenn nicht soll der neue noch nicht vorhandene Autowert angezeigt werden.

...zur Frage

Neue Apple ID ersrellen. Telefonnummer geht nicht.

Ich wollte mir eben eine neue apple ID erstellen. Ich habe alle Felder ausgefüllt aber das Feld mit der Telefonnummer ist immer noch rot. Ich habe es mehrmals versucht aber es geht einfach nicht. Ich habe es auch mit +49 versucht. Kann mir jemand helfen?

...zur Frage

Access Standardwert aus anderem Feld

Hallo zusammen,

ich habe in Microsoft Access eine Tabelle erstellt, die mehrere Ja/Nein-Felder enthält. Jetzt möchte ich, wenn in einem bestimmten dieser Ja/Nein-Felder der Wert geändert wird, dass sich die anderen Felder automatisch mitändern. Standard in allen Feldern ist "JA", sobald hier im ersten Feld "Nein" angeklickt wird, sollen also die anderen auch auf "Nein" springen. Ist das ohne größeren Aufwand machbar? Und wenn, wie?

Danke schonmal für die Antworten, viele Grüße, Mareike

...zur Frage

Wer kann mir bei Excel helfen?

"Ich habe eine Liste von Werten. Diese stehen in Spalte A und B

Nun möchte ich ein Feld C1 erstellen, in dem ein Wert von Spalte A eingetragen wird. In dem Feld daneben, also D1, soll mir Excel den entsprechenden Wert aus Spalte B eintragen. Also wenn ich den Wert von A37 eingebe, soll im Feld darunter der Wert von B37 angezeigt werden. Wie mache ich das?

Sollte der in Feld C1 eingetragene Wert nicht vorhanden sein, soll in D1 „unbekannt“ oder so etwas stehen.

...zur Frage

Was möchtest Du wissen?