Bramburi: MySQL-Query

Hallo

Ich hab wie's scheint mit SQL so meine Troubles.

Mein Script(PHP/MySQL 5.o.51a) soll insgesamt 4 Tabellen mit 3 Dropdown-Menüs(select/option) abfragen.

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.
Wenn ich f_categories aus der 1. Zeile entferne beginnt das selbe Spiel mit  f_countries usw.

Wenn ich aus der 1. Zeile außer festivale alle tables lösche wird
überhaupt keine Fehlermeldung angezeigt. Weder PHP- noch SQL-Errors.
Allerdings bekomm dann auch keinerlei Abfrageergebnisse geliefert.

Bitte hat jemand nen Tip was ich falsch mache.
Danke schon mal.

Gruß Bramburi

  1. 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