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
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

AW: Suchfunktion mit "Gruppierung"

  Alt 5. Mär 2011, 09:05
Hallo,

doch, den Status lasse ich mit anzeigen. Nur in dem kleinen Auszug habe ich den weg gelassen. Ich ergänze ihn kurz.
  Mit Zitat antworten Zitat
jobo

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

AW: Suchfunktion mit "Gruppierung"

  Alt 5. Mär 2011, 10:28
also allgemein ist es nicht, da die genutzte Funktion oracle spezifisch ist und ich nicht weiß, wie weit das einem ANSI Standard folgt.
SQL-Code:
select o.*, s.*
      from (select id,
                   f_hits,
                   f_cat_id,
                   f_word,
                   f_status_id,
                   row_number() over(partition by f_cat_id order by f_hits) as TopOf
              from (SELECT e.id, e.f_hits, e.f_cat_id, f_word, e.f_status_id
                      FROM tab_entries e
                      JOIN tab_search_index i
                        ON i.f_entry_id = e.id
                     WHERE i.f_word = 'Stadt--'Fluss'
                    ) i) o,
           tab_entries_status s
     where o.TopOf < 3
       and s.id = o.f_status_id
     order by o.f_cat_id, o.f_hits desc
Die Einschränkung (Suchwort) habe ich extra "innen" gemacht, was am schnellsten sein dürfte. Ist trotzdem aber mitgeschleift, wäre also view tauglich, die Einschränkung müsste dann aber außen erfolgen.
Restliche Felder kann man m.E. nach belieben außen weglassen oder anfügen /joinen.

Edit: Ich hab vergessen, dass mehrere Suchworte möglich sein sollen.
Wenn ID bzw. SuchwortFeld mitgeschleift werden, ist das natürlich möglich. Geht es um mehrere tausend Einträge, wäre wie gesagt die innere Einschränkung vorteilhaft. Das ginge nur über eine Prozedur/Funktion, wo zunächst das Suchwort gesetzt wird und in der Where Bedinungung dann abgefragt wird.
Gruß, Jo

Geändert von mkinzler ( 5. Mär 2011 um 10:54 Uhr) Grund: CODE-Tag durch SQL-Tag ersetzt
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Suchfunktion mit "Gruppierung"

  Alt 5. Mär 2011, 18:55
Hallo,

vielen Dank.
Leider habe ich es noch nicht hinbekommen, das unter MySQL zum Laufen zu bekommen. Gibt es hier MySQL-Gurus, die das übersetzen können?
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Suchfunktion mit "Gruppierung"

  Alt 5. Mär 2011, 19:02
Hallo,

vielen Dank.
Leider habe ich es noch nicht hinbekommen, das unter MySQL zum Laufen zu bekommen. Gibt es hier MySQL-Gurus, die das übersetzen können?
Over und PartitionBy ist schwierig. Diese ganzen OLAP-Erweiterungen (auch sowas wie CUBE) werden von MySQL quasi gar nicht unterstützt.
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Suchfunktion mit "Gruppierung"

  Alt 5. Mär 2011, 19:06
Hm, wie könnte ich das dann lösen?
  Mit Zitat antworten Zitat
jobo

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

AW: Suchfunktion mit "Gruppierung"

  Alt 5. Mär 2011, 20:55
Hier sind meine Daten /Ergebnisse. Vielleicht ist es nicht was Du haben wolltest, dann brauchst Du das SQL ja so auch nicht


Code:
SELECT e.id, e.f_hits, e.f_cat_id, f_word, e.f_status_id
  FROM tab_entries e
  JOIN tab_search_index i
    ON i.f_entry_id = e.id
Ergebnis
Code:
ID   F_HITS   F_CAT_ID   F_WORD   F_STATUS_ID
1   20   1   Stadt   1
2   22   3   LAnd   1
1   5   2   Stadt   2
2   9   3   LAnd   2
1   11   3   Stadt   2
1   33   4   Stadt   2
1   12   4   Stadt   1
1   13   4   Stadt   2
1   9   3   Stadt   2
1   12   1   Stadt   1
1   13   1   Stadt   2

Code:
      select o.*, s.*
        from (select id,
                     f_hits,
                     f_cat_id,
                     f_word,
                     f_status_id,
                     row_number() over(partition by f_cat_id order by f_hits) as TopOf
                from (SELECT e.id, e.f_hits, e.f_cat_id, f_word, e.f_status_id
                        FROM tab_entries e
                        JOIN tab_search_index i
                          ON i.f_entry_id = e.id
                       WHERE i.f_word = 'Stadt' --'Fluss'
                      ) i) o,
             tab_entries_status s
       where o.TopOf < 3
         and s.id = o.f_status_id
       order by o.f_cat_id, o.f_hits desc
Code:
ID   F_HITS   F_CAT_ID   F_WORD   F_STATUS_ID   TOPOF   ID   F_STATUS_NAME
1   13   1   Stadt   2   2   2   unfertich
1   12   1   Stadt   1   1   1   fertich
1   5   2   Stadt   2   1   2   unfertich
1   11   3   Stadt   2   2   2   unfertich
1   9   3   Stadt   2   1   2   unfertich
1   13   4   Stadt   2   2   2   unfertich
1   12   4   Stadt   1   1   1   fertich

Für MySQL gibts aber doch einige Seiten zum Thema,
Analytic Functions nachbilden. Das Suchwort wäre also "Analytic Functions mySQL"

Die Formatierung sieht doof aus, keine Ahnung ob das besser geht. Als Screenshot ist es besser lesbar, aber so als Text kann man die Zahlen noch weiter nutzen.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:54 Uhr.
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