Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Suchfunktion mit "Gruppierung" (https://www.delphipraxis.net/158846-suchfunktion-mit-gruppierung.html)

Elvis 6. Mär 2011 09:58

AW: Suchfunktion mit "Gruppierung"
 
Zitat:

Zitat von Sir Rufo (Beitrag 1086179)
Wozu das denn? Geht doch alles mit SQL

Je nach verwendetem DBMS kann das simulieren von analytic functions schnell ziemlich lahm werden.
Wenn Matze also anfängt komplexes Reporting zu implementieren wird er früher oder später an die Grenzen von mySQL kommen, und DBMS-unabhängig gehen dann nur duplizierte SQLs wie du sie gezeigt hast.
Das kann natürlich absolut in Ordnung sein, solange man nicht die halbe Logik der Abfrage 5-mal kopieren muss. Oder plötzlich 300 Zeilen SQL an mySQL schickt...
Denn wehe demjenigen, der bei einer Anpassung die 4 Duplikate nicht mit anpasst.

jobo 6. Mär 2011 19:07

AW: Suchfunktion mit "Gruppierung"
 
Ich habs mal in mySql versucht.

Wirklich gruppiert wird ja in meinem oracle sql nicht. Man muss nur Gruppen zählen. Das geht mit mySql mit Variablen.
Ist wieder nicht allgemein, dafür mySQL.

Die Suchgeschichte und das drumrum hab ich mal weggelassen.

Code:
mysql> select
    ->  if (@cat = f_cat_id, @rn := @rn + 1, @rn := 1) rownum,
    ->     (@cat := f_cat_id) f_cat_id,
    ->     e.Id, f_hits, f_Status_id
    ->  from
    ->    (select * from tab_entries
    ->      order by id, f_cat_id, f_hits desc ) e,
    ->    (select (@cat := 0)) as x
    -> ;
+--------+----------+------+--------+-------------+
| rownum | f_cat_id | Id  | f_hits | f_Status_id |
+--------+----------+------+--------+-------------+
|      1 |        1 |    1 |     20 |           1 |
|      2 |        1 |    1 |     13 |           2 |
|      3 |        1 |    1 |     12 |           1 |
|      1 |        2 |    1 |      5 |           2 |
|      1 |        3 |    1 |     11 |           2 |
|      2 |        3 |    1 |      9 |           2 |
|      1 |        4 |    1 |     33 |           2 |
|      2 |        4 |    1 |     13 |           2 |
|      3 |        4 |    1 |     12 |           1 |
|      1 |        3 |    2 |     22 |           1 |
|      2 |        3 |    2 |      9 |           2 |
+--------+----------+------+--------+-------------+
11 rows in set (0.00 sec)

mysql>



mysql> select * from (
    -> select
    ->  if (@cat = f_cat_id, @rn := @rn + 1, @rn := 1) rownum,
    ->     (@cat := f_cat_id) f_cat_id,
    ->     e.Id, f_hits, f_Status_id
    ->  from
    ->    (select * from tab_entries
    ->      order by id, f_cat_id, f_hits desc ) e,
    ->    (select (@cat := 0)) as x
    ->    ) o
    -> where o.rownum<3;
+--------+----------+------+--------+-------------+
| rownum | f_cat_id | Id  | f_hits | f_Status_id |
+--------+----------+------+--------+-------------+
|      1 |        1 |    1 |     20 |           1 |
|      2 |        1 |    1 |     13 |           2 |
|      1 |        2 |    1 |      5 |           2 |
|      1 |        3 |    1 |     11 |           2 |
|      2 |        3 |    1 |      9 |           2 |
|      1 |        4 |    1 |     33 |           2 |
|      2 |        4 |    1 |     13 |           2 |
|      1 |        3 |    2 |     22 |           1 |
|      2 |        3 |    2 |      9 |           2 |
+--------+----------+------+--------+-------------+
9 rows in set (0.00 sec)

mysql>


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz