Vinzenz Mai: SELFHTML aktuell: Datenbankartikel

Beitrag lesen

Hallo

ich hab da mal ne frage zu mysql.

SELECT var1, var2 FROM table1 ORDER BY var2 DESC LIMIT 0,30

und gehe dann jedes ergebnis durch und starte diese abfrage (zu jedem ergebniss)
SELECT var3 FROM table2 WHERE xyz1 <= var1 AND xyz2 >= var1

Hier und da Lese ich etwas über z.B. JOIN() - jedoch werde ich aus der dokumentation nicht schlauer.

Du verwechselst das mit JOIN.

Da Du keine Gleichheitsbedingungen hast, somit ein Thetajoin vorliegt, kann Dein JOIN Performance kosten, sollte aber immer noch schneller sein als Deine vielen Einzelabfragen:

SELECT  
    t1.var1,          -- Spalte var1 aus der Tabelle table1, die hier t1 genannt wird (Alias)  
    t1.var2,          -- analog Spalte var2 aus table1  
    t2.var3           -- Spalte var3 aus table2  
FROM table1 t1        -- Aliasnamen sparen Schreibarbeit  
INNER JOIN table2 t2  -- explizite JOIN-Syntax, plus Aliasname  
ON t2.xyz1 <= t1.var1 AND t2.xyz >= t1.var1  -- JOIN-Bedingung  
ORDER BY t1.var2 DESC  
LIMIT 0, 30 

Das kann selbst MySQL 3.23 :-)

Freundliche Grüße

Vinzenz