AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Suchfunktion mit "Gruppierung"
Thema durchsuchen
Ansicht
Themen-Optionen

Suchfunktion mit "Gruppierung"

Ein Thema von Matze · begonnen am 5. Mär 2011 · letzter Beitrag vom 6. Mär 2011
Antwort Antwort
Seite 2 von 2     12   
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#11

AW: Suchfunktion mit "Gruppierung"

  Alt 6. Mär 2011, 10:58
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.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#12

AW: Suchfunktion mit "Gruppierung"

  Alt 6. Mär 2011, 20:07
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>
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz