phpbar.de logo

Mailinglisten-Archive

AW: Spezialproblem Abfrage mit Aggregatsfunktion

AW: Spezialproblem Abfrage mit Aggregatsfunktion

Thomas Fankhauser mysql at digelec.ch
Mit Feb 5 16:43:49 CET 2003


hallo volker,

>
> select ARTNR, sum(VGRP = 1), sum(VGRP = 2), sum(VGRP = 3)
> from F911 where VGRP in (1, 2, 3)
> group by ARTNR
>

machs doch mit MS-access ;-)
dort gibt's die funktion UNION.

>
> erhalte ich leider nur die Anzahl Treffer pro VGRP ... leider nicht die
> Menge.
>
> Habe schon zig Varianten ausprobiert und die man-guides gelesen, leider
> ohne erfolg ...

ich auch!
ich stand letzten sommer auch vor einem solchen problem.
habe jetzt ein workaround gemacht, PHP mit schleife und für
jeden cont() eine eigene mysql abfrage.
ich habe eine datenbank mit ca.20'000 datensätzen 20935 genau jetzt.
die treffer beinhalten 0 - ca. 1000 datensätze, je nach dem halt.

da dies im ersten moment sehr langsam war (ischt ja klar)
(PII/400 64MB Ram Mysql 3.23), das script konnte bis zu 2 min laufen.

das war natürlich nicht die lösung.
ich entschied mich danach, die Tabelle mit der ersten abfrage in eine andere
Tabelle zu kopieren und zwar vom typ heap (im ram), danach jede anfrage
betreffend den count() in der schleifa aus dieser tabelle.
so erreiche ich eine laufzeit von bis zu 4 sekunden für das komplette
script,
(also vom browseraufruf bis zur seitenausgabe).
danach wird die temporäre tabelle gleich wieder gelöscht.
mit dieser lösung kann ich leben, wenn jemand aber eine bessere hat,
bin ich sogar bereit, die schon bestehenden script's anzupassen.
so eine function UNION wie bei Access gibt's leider meines wissens nicht.

--
gruss
thomas

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive