Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Limitierte Ausgabe aller Datensätze, die zu einer Gruppe gehören

Empfohlene Antworten

Hallo,

ich würde mir gerne bis zu 10 Datensätze ausgeben lassen, die zu einer Gruppe gehören.

Ich dachte an sowas wie

SELECT role, username FROM users GROUP BY role LIMIT 10;

das klappt allerdings leider nicht, hat jemand ne (supersimple) Idee=

  • Autor

SELECT role, username FROM users ORDER BY role;

liefert schon die Ergebnisse der Rolle nach aufsteigend, aber LIMIT 10 gibt nur die ersten 10 aus, d.h. nicht pro Rolle, also nur die ersten 10 mit role=1,

insgesamt sind es 247 Datensätze, wobei gute 100 die role=1 haben, von diesen sollen aber nur 10 angezeigt werden

Bearbeitet von mkScheller

Hi

wie wäre es, wenn du das Ergebnis der Abfrage ohne Limit in einem View speicherst und dann auf das View das Limit anwendest?

Nicht schön, vor allem wenn es mehr Datensätze werden, aber es funktioniert...

Oder du solltest dein Datenbankmodell noch einmal überdenken (-> 3. Normalform). Wenn du die Rolle und den Usernamen trennst, dann kannst du die Rolle gruppieren und dir die Usernamen dazu per JOIN verknüpfen... das sollte funktionieren. :)

MfG Suhler

  • Autor

Dritte Normalform - darauf muss mal einer kommen! Das wird nicht umgesetzt, da dann pro Aufruf gejoint würde, was def. zu massiven Performance-Einbußen führt. Nunja, wenn ich die Lösung irgendwann rausgefunden habe (low-prio), dann poste ich das hier. Gruss

ich habe einfach mal Google angestrengt und "mysql limit" eingegeben

als Suchvorschlag sprang mir "mysql limit offset" ins Auge, welches als ersten Treffer die SELECT-Syntax brachte

wie man bei LIMIT sehen kann, kann man auch ein Offset angeben

das dürfte bei dem Problem helfen

Edit: ich habe mir das Problem noch einmal angesehen und mir ist aufgefallen, dass das scheinbar doch nicht das richtige wäre

du könntest mehrere Abfragen für jede Rolle machen (und diese zusammenführen), was aber nur sinnvoll ist

ich bin mir gerade nicht sicher, ob man dies mit reinem SQL so hinbekommen kann, dass immer alle Rollen berücksichtigt werden, ohne dass die einzelnen Rollennummern direkt im SQL-Statement stehen müssen

eine View könnte man zur Aufteilung der Abfrage auf mehrere Abfragen verwenden

grundsätzlich sollte man beim modellieren einer Datenbank diese in die 3. Normalform bringen

allerdings kann es Sinn machen, aus Performance-Gründen von dieser wieder abzuweichen

für mich sieht es so aus, als wären die Eigenschaften der verschiedenen Rollen und die Benutzer voneinander getrennt und "role" in dem Fall ein Fremdschlüssel

allerdings ist das nur eine Vermutung auf Basis schwindend geringer Informationen über die Datenbank ^^

Bearbeitet von Sacaldur

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.