Vinzenz Mai: MySQL-Query

Beitrag lesen

Hallo

SELECT * FROM festivale, f_categories, f_countries, f_months
INNER JOIN f_categories ON f_categories.id = festivale.category
INNER JOIN f_countries ON f_countries.id = festivale.country
INNER JOIN f_months ON f_months.id = festivale.month
WHERE festivale.title  LIKE %s
AND f_categories.category LIKE %s
AND f_countries.country    LIKE %s
AND f_months.month LIKE %s

Die Fehlermeldung lautet :   "Not unique table/alias: 'f_countries'"
obwohl alle f_categories-Einträge identisch sind.

Bitte hat jemand nen Tip was ich falsch mache.

Du verwendest Tabellen mehrfach ohne einen Aliasnamen zu vergeben, ich drösele Dein Statement auf:

  
SELECT  
    *  
FROM  
    festivale,  
                   -- nette Kreuzprodukte, die bestimmt nicht gewollt sind:  
    f_categories,  -- zum ersten Mal f_categories  
    f_countries,   -- zum ersten Mal f_countries  
    f_months  
INNER JOIN  
    f_categories   -- zum zweiten Mal f_categories  
                   -- Hier wäre ein Aliasname erforderlich!  
ON  
    f_categories.id = festivale.category  
INNER JOIN  
    f_countries    -- zum zweiten Mal f_countries ...  
ON  
    f_countries.id = festivale.country  
INNER JOIN  
    f_months       -- und zum zweiten Mal f_month ...  
ON  
    f_months.id = festivale.month  
WHERE  
    festivale.title  LIKE %s  
AND  
    f_categories.category LIKE %s  
AND  
    f_countries.country    LIKE %s  
AND  
    f_months.month LIKE %s  

Die kommagetrennte Liste zu Beginn ist vermutlich nicht so gewollt.

Freundliche Grüße

Vinzenz