BERLINlOGGER |
Online for 7742 days
Last update: 2004.02.16, 09:33 You're not logged in ... login
es spricht schon für...
.. und für Sie, dass selbst nach der erfolgten... by Hans.Mittendorfer.Uni-Linz (2004.02.16, 09:33) ...und sogar, wem der...
...und sogar, wem der Blog gehört, in dem das... by lars.willemsen.berlin (2004.02.16, 02:49) So Herr Mittendorfer,
die...
So Herr Mittendorfer, die Ergebnissliste zeigt jetzt... by lars.willemsen.berlin (2004.02.16, 02:37) der jeweilige Autor ..
.. eines Beitrages oder Kommentares wäre eine... by Hans.Mittendorfer.Uni-Linz (2004.02.03, 17:35) Nö...
war mir vorher nicht bekannt, ist mir wohl (??) entgangen... by lars.willemsen.berlin (2004.01.30, 14:14) |
lars.willemsen.berlin,
Mittwoch, 21. Januar 2004, 00:44
Beschreibung der Datenbankzugriffe der globalen PHP Suche
lars.willemsen.berlin, 00:44h
Im folgenden Text beschreibe ich, wie die Datenbank von Antville angezapft wird.
Zur Übersicht über die in der Datenbank enthaltenen Tabellen, gibts hier nochmal Axels grafische Aufarbeitung. Ich verwende hier in diesem Text die von Axel festgelegten 'Eindeutschungen' der Tabellen- und Spaltennamen, habe aber immer in Klammern nochmal die Originalbezeichnungen geschrieben. Somit sollte es möglich sein, die von mir dargestellten Datenbankanfragen (Querys) besser zu verstehen. Die globale Suche greift innerhalb der anville-Datenbank auf die Tabellen Blog (AV_SITE) Inhalt (AV_TEXT) zu. Aus den Tabellen sind folgende Felder von Relevanz für die Suche: AV_SITE: Id (SITE_ID) Titel (SITE_TITLE) Alias (SITE_ALIAS) Blog ist öffentlich (SITE_ISONLINE) Blog ist gesperrt (SITE_ISBLOCKED)... AV_TEXT: Blog (TEXT_F_SITE) Id (TEXT_ID) Topic (TEXT_TOPIC) Typ (TEXT_PROTOTYPE) Comment zu Story Nr (TEXT_F_TEXT_STORY) Titel (TEXT_TITLE) Inhalt (TEXT_CONTENT) Text ist öffentlich, privat oder offline (TEXT_ISONLINE) Erstellungsdatum (TEXT_MODIFYTIME) Die beiden Tabellen wurden in der SQL-Abfrage über einen Verbund (INNER JOIN) miteinander 'verknüpft', d.h. in den Ergebnissen der Abfrage stehen sowohl die Spalten der einen Tabelle wie auch die Inhalte der anderen zur Weiterbenutzng zur Verfügung, auf die die WHERE-Bedingung des SQL-Querys zutraf. Somit sieht die Datenbankanfrage zum Suchbegriff 'php' wie folgt aus (bei Aktivierung der drei Suchoptionen -Die Topics aller Storys durchsuchen -Die Storys selber durchsuchen -Die Kommentare aller Storys durchsuchen): SELECT * FROM AV_TEXT INNER JOIN AV_SITE ON AV_TEXT.TEXT_F_SITE = AV_SITE.SITE_ID WHERE TEXT_TOPIC LIKE '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') OR TEXT_PROTOTYPE = 'story' AND TEXT_CONTENT LIKE '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') OR TEXT_PROTOTYPE = 'story' AND TEXT_TITLE LIKE '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') OR TEXT_PROTOTYPE = 'comment' AND TEXT_CONTENT LIKE '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') OR TEXT_PROTOTYPE = 'comment' AND TEXT_TITLE LIKE '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') Die in dem Query verwendete Schreibweise %suchbegriff% bedeutet, dass vor und hinter der gesuchten Buchstabenfolge noch andere Buchstaben folgen können. Um festzustellen, zu welchem Blog die Story eines Ergebnisssatzes gehört, muss folgender Query an die Datenbank gestellt werden: SELECT * FROM AV_SITE WHERE SITE_ID = TEXT_F_SITE wobei 'TEXT_F_SITE' hier über eine Variable in den Query eingefügt wird. Um bei einem Kommentar festzustellen, zu welcher Story er gehört, muss die Datenbank wie folgt bfragt werden: SELECT * FROM AV_TEXT WHERE TEXT_ID = TEXT_F_TEXT_STORY wobei hier 'TEXT_F_TEXT_STORY' ebenfalls über eine Variable gesetzt wird. Dass wars auch schon mit den Zugriffen auf die Datenbank. | comment
lars.willemsen.berlin,
Samstag, 24. Januar 2004, 03:40
Beschreibung der Datenbankzugriffe der globalen PHP Suche [Update]
Da ich in der neuen Version (0.9a) der Suche noch etwas an dem SQL Query gefeilt habe, möchte ich das den Interessierten nicht vorenthalten.
Der neue Query für die Datenbankanfrage zum Suchbegriff 'php' sieht jetzt (Neureungen sind farblich markiert) wie folgt aus (bei Aktivierung der drei Suchoptionen): SELECT * FROM AV_TEXT INNER JOIN AV_SITE ON AV_TEXT.TEXT_F_SITE = AV_SITE.SITE_ID WHERE TEXT_TOPIC LIKE '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') OR TEXT_PROTOTYPE = 'story' AND TEXT_CONTENT LIKE BINARY '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') OR TEXT_PROTOTYPE = 'story' AND TEXT_TITLE LIKE BINARY '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') OR TEXT_PROTOTYPE = 'comment' AND TEXT_CONTENT LIKE BINARY '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') OR TEXT_PROTOTYPE = 'comment' AND TEXT_TITLE LIKE BINARY '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') Durch das Einbringen des Befehls BINARY ist die Datenbankanfrage case sensitive, was für mich in Anbetracht der besseren Ergenissauswertung erheblich von Vorteil ist. Das heißt, es werden nur noch Ergebnisse geliefert, die wirklich 'php' enthalten, und nicht 'PHP' oder 'Php' oder ähnliches. | link | comment
lars.willemsen.berlin,
Montag, 26. Januar 2004, 00:26
Beschreibung der Datenbankzugriffe der globalen PHP Suche [Update v2]
Da nochmal eine neue Version (1.0f) der Suche online gegangen ist, in der ich wieder mal noch etwas an dem SQL Query gefeilt habe, möchte ich das den Interessierten nicht vorenthalten.
Der neue Query für die Datenbankanfrage zum Suchbegriff 'php' sieht jetzt (Neureungen sind farblich markiert) wie folgt aus (bei Aktivierung der drei Suchoptionen): SELECT * FROM AV_TEXT INNER JOIN AV_SITE ON AV_TEXT.TEXT_F_SITE = AV_SITE.SITE_ID WHERE TEXT_TOPIC LIKE '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') OR TEXT_PROTOTYPE = 'story' AND TEXT_CONTENT LIKE BINARY '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') OR TEXT_PROTOTYPE = 'story' AND TEXT_TITLE LIKE BINARY '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') OR TEXT_PROTOTYPE = 'comment' AND TEXT_CONTENT LIKE BINARY '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') OR TEXT_PROTOTYPE = 'comment' AND TEXT_TITLE LIKE BINARY '%php%' AND (TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0') ORDER BY TEXT_MODIFYTIME DESC Durch das Einbringen von ORDER BY TEXT_MODIFYTIME DESC ist die Ergebnissliste absteigend sortiert nach dem Datum einer Story, heißt, neueste Storys werden zuerst angezeigt. Das macht für mich dahingehend Sinn, das man über die globale Suche auch nach neuen Beiträgen zum gesuchten Begriff suchen kann. | link
robert.gerber.berlin,
Montag, 26. Januar 2004, 12:27
SQL Anweisung mal einfacher....Co-Beitrag
Ich habe mich mal an die SQl Anweisung gemacht und die ganze Geschichte ein wenig vereinfacht.....siehe auch Titel und Doku dazu:
Vereinfachung BOOLE’scher Verknüpfungen in einer SQL Anweisung mittels Ersetzen durch äquivalente Formeln (semantische Äquivalenz) Doku als PDF zum Runterladen PDF - Die BOOLE'schen Bedingungen vereinfacht Alles weitere in meinem BloG: robert.gerber.berlin Anbei noch die "neuere" SQL Anweisung: SELECT * FROM AV_TEXT INNER JOIN AV_SITE ON AV_TEXT.TEXT_F_SITE = AV_SITE.SITE_ID WHERE ( TEXT_TOPIC LIKE '%php%' ) OR ( (TE? ,?{ ,?YNARY '%php%' OR TEXT_TITLE LIKE BINARY '%php%') AND (TEXT_PROTOTYPE = 'story' OR TEXT_PROTOTYPE = 'comment' ) ) AND ( TEXT_ISONLINE = '1' OR TEXT_ISONLINE = '2' AND SITE_ISONLINE = '1' AND SITE_ISBLOCKED = '0' ) ORDER BY TEXT_MODIFYTIME DESC ... link | comment |