Mailinglisten-Archive |
Aloha,
> Von: Joerg Holz[SMTP:holz_(at)_derdiedas.de]
>
> ich habe das problem, dass ich 'eigentlich' in einer db-anfrage zwei
> unterschiedliche datenbanken auf zwei unterschiedlichen plattformen in
> EINEM SELECT abfragen muesste. das eine ist eine mysql, das andere eine
> mssql.
>
> ich behelfe mir zur zeit damit, dass ich die beiden abfragen getrennt
> handel, die werte jeweils in ein array schiebe und dann mit php
> weiterbearbeite. das geht auch einigermassen, ist aber sehr umstaendlich
> und ich habe etwa 99% an unnuetzen daten.
>
.... und vorallendingen liegen diese Daten dann auch noch
im Hauptspeicher rum, was nicht sonderlich performant ist.
> gibt es eine moeglichkeit das irgendwie anders zu loesen?
>
Ich würde das so machen (etwas abstrahiert, pass es einfach
an deine Gegebenheiten an)
$odb1 = new DB ... ( zur Datenbank, die die meisten nützlichen
Infos liefert)
$odb2 = new DB ... ( zur anderen Datenbank, um die noch
benötigten Details besorgt)
$odb1->query ( .....)
while ( $odb1->next_record ) {
$sSql = .... Query für db 2 zusammenbauen
$odb2->query($sQql);
Werte aus beiden Abfragen zusammenbasteln und
ausgeben / speichern / ....
}
so sollten die Abfragen nur die Daten liefern, die gebraucht
werden. Das Query zur db 2 wird halt leider mehrmals
ausgeführt, aber wenn db 2 ein sinnvolles Caching hat, und
sowiso immer die gleiche Tabelle abgefragt wird, sollten sich
die Antwortzeiten in Grenzen halten.
Grüße, Mathias
php::bar PHP Wiki - Listenarchive