phpbar.de logo

Mailinglisten-Archive

alternative zu joins ?

alternative zu joins ?

Michael Donning donning at informenta.de
Mon Feb 3 14:57:25 CET 2003


Hallo Nikolas,

> -----Original Message-----
> From: Nikolas Hagelstein [mailto:hagelstein at hauptsache.net]

> Ich moechte eine liste von artikel anzeigen, zu denen es jeweils
> 0,1 oder n
> bilder geben kann.
> (n/m)-Tabelle.
> Jedes der bilder zu einem artikel hat eine bestimmt gewichtung.
> Ich brauche  ein query, was mir in einer reihe die artikeldaten
> und das bild
> mit der hoechsten
> gewichtung fuer diesen artikel anzeigt.
> Die einzige moeglichkeit die mir dazu einfaellt ist ein LEFT
> join, da es ja
> auch artikel ohne bild geben
> kann.
> Das ist allerdings sehr traege.

Ein Left Join ist per se erstmal gar nicht träge :). Wenn die Join-Bedingung
durch einen Schlüssel seitens der Bild-Tabelle abgedeckt ist. In Deiner
Anforderung würde das nicht ausreichen, da Du ja ein Bild mit einer
(zunächst unbestimmten) maximalen Gewichtung benötigst.

Ein mögliches Vorgehen wäre dann (Abfrage in zwei Schritten) wie folgt:

Ein kombinierter Index in der Bildtabelle auf Artikelnr + Gewichtung sollte
erstellt werden.

Es wird eine temporäre Tabelle mit der Abfrage auf Artikel, und Bildtabelle
gruppiert nach Artikelnr + Gewichtung und mit der gewünschten
Artikel-Einschränkung (die ich nicht kenne) erstellt.

Im zweiten Schritt wird dann ein Join über die temporäre-Tabelle mit Artikel
und Bildtabelle (dort über die (hoffentlich eindeutige) Kombination
Artikel+Gewichtung) für die Anzeige gemacht.

(Hinweise für den Gebrauch von temporären Tabellen gibts im Handbuch).


En anderes Vorgehen:
gleich bei der Erfassung der Bilddatei oder bei einem Wartungslauf mit einem
kleinen Script (Perl, PHP, was auch immer) wird ein Kennzeichner in der
Bildtabelle bei dem Bild mit der maximalen Gewichtung gesetzt, auf
ArtikelNr+Kennzeichner liegt ein Index und Schwupps... kann man bei der
Abfrage mit einem Left Join auf Artikelnr+Kennzeichner direkt das Bild
aufrufen.

Gruesse, Michael Donning

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


php::bar PHP Wiki   -   Listenarchive