readSQLData - ssp::get_var_db

Begonnen von dobra, Oktober 04, 2007, 22:07:16

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

Mit
         my $count = ssp::readSQLData("SELECT DISTINCT ITEMID, ... FROM PY2_ITEM WHERE (... LIKE'%$xy%') ...)","ITEMID",...);
if ($count >= 0) {
my $i=0;
while ($count > $i) {
my $artikel = ssp::get_var_db("ITEMID",$i);
...

kann ich mit ssp::get_var_db jede Position auslesen.

Wenn ich DB-Abfrage aber mit
my $count = ssp::readSQLData("SELECT DISTINCT ITEMID, ... FROM PY2_ITEM WHERE MATCH ( ...) AGAINST ('?$xy*' in boolean mode)");
mache (ist wesentlich schneller), bekomme ich zwar mit
main::mprint $count;
die Anzahl der gefundenen Daten, aber mit   my $artikel = ssp::get_var_db("ITEMID",$i);  wird "nix" (bzw undefined) ausgegeben ??

Ist diese Art der Abfrage nicht mit ssp kompatibel  oder kann ich einen anderen Syntax verwenden, um die Daten auszulesen?
(Die abgefragten Felder sind auf FULLTEXT-Index gesetzt)
mfG
dobra

admin

Ehrlich gesagt, keine Ahnung habe MATCH AGAINST noch nie benutzt (ist auch imho kein Standard SQL, sondern MySQL spezfisch).
Aber ich vermute dass die Abfrage keine Ergebnisse liefert.
Ich würde die Abfrage also zunächst mal ohne SSP testen, um zu sehen was rauskommt.
Wenn was rauskommt, kann man es auch per get_var_db() auslesen.

Gruss hop

dobra

#2
ohne ssp bekomme ich "-1" - also Fehler (heißt wohl, ich habe es falsch gemacht)

Habe aber herausgefunden, daß ich nur bei  .....AGAINST ('?$xy*' in boolean mode)","ITEMID",...);  anhängen muß, damit ich die Werte mit ssp::get_var_db auslesen kann.

bringt aber nichts - ist jetzt fast genauso langsam wie mit der ursprünglichen Abfrage -  und damit habe ich wesentlich mehr und bessere =genauere Möglichkeiten

bedeutet also (glaube ich zumindest) nicht die die SQL abfrage ist zu langsam, sondern der Seitenaufbau bei vielen gefundenen Artikeln?
werden wenige Artikel gefunden, geht's blitzschnell
mfG
dobra

dobra

#3
Nachtrag: die Lösung -> weitere Seiten (127 Treffer aber nur 10 angezeigt und die Abfragegeschwindigkeit ist kein Thema mehr)
werde mich da heute Abend drüber stürzen   ;)
wie ich das umsetzen kann, werde ich vielleicht auch alleine herausfinden, aber mit ein bißchen Hilfe (  ::) ) ginge es sicher viel schneller....

erster Versuch:

gelöscht - das war der falsche Ansatz

(ein ganz kleiner Tipp würde mir viele, viele Fehlversuche ersparen.........)

neuer Versuch:  ... auch gelöscht

EDIT: erledigt - Lösung (wenn auch keine optimale) auch ohne Hilfe gefunden
mfG
dobra