Mailinglisten-Archive |
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