Unknown column 's.template_id' in 'on clause' (1054)

Iceman81

Neuer Benutzer
Beiträge
3
Bekomme folgenden Fehler ausgegeben

Could not query ships data

Unknown column 's.template_id' in 'on clause' (1054)

SELECT COUNT(s.ship_id) AS n_ships, SUM(st.value_11) AS sum_sensors, SUM(st.value_12) AS sum_cloak FROM ships s, ship_fleets f INNER JOIN ship_templates st ON st.id = s.template_id WHERE s.user_id IN (10) AND s.fleet_id = f.fleet_id AND f.planet_id = 1

hier der Code der entsprechenden PHP

habe es auch schonmal mit Klammern zwischen FROM und JOIN versucht wie ich es schon anderweitig gelesen habe das hat zwar schon bei ähnlichen Fehlern geholfen aber hier nicht!

PHP:
$sql = 'SELECT ss.user_id AS start_user_id, ss.dest, ss.move_begin, ss.move_finish, ss.action_code, ss.n_ships,
              SUM(st.value_11) AS sum_atk_sensors,
              SUM(st.value_12) AS sum_atk_cloak,
             
              u1.user_id AS dest_user_id, u1.user_name AS dest_user_name,
              p1.planet_name AS dest_name, p1.building_7 AS dest_spacedock,
              SUM(st.value_11) AS sum_dfd_sensors,
              SUM(st.value_12) AS sum_dfd_cloak,
 
              u2.user_name AS start_user_name,
              a.alliance_id AS start_alliance_id, a.alliance_tag AS start_alliance_tag
 
        FROM (planets p1, user u1, scheduler_shipmovement ss)
 
        -- für Summe der Sensoren/Tarnung des Angreifers
        INNER JOIN ship_fleets f ON f.move_id = ss.move_id
        INNER JOIN ships s ON s.fleet_id = f.fleet_id
        INNER JOIN ship_templates st ON st.id = s.template_id
       
        -- für Daten des Angreifers
        INNER JOIN user u2 ON u2.user_id = ss.user_id
        LEFT JOIN alliance a ON a.alliance_id = u2.user_alliance
       
        WHERE u1.user_id = p1.planet_owner AND
              u1.user_alliance = '.$game->player['user_alliance'].' AND
              ss.move_status = 0 AND
              ss.dest = p1.planet_id AND
              ss.action_code IN  (24,25,40,41,42,43,44,45,50,51,52,53,54,55)
        GROUP BY ss.move_id
        ORDER BY p1.planet_next_attack ASC';

woran kann es liegen?
 
Werbung:

PLSQL_SQL

Datenbank-Guru
Beiträge
176
Hy,

er schreibt, dass er die Spalte "template_id" nicht kennt! Und zwar in der Zeile "INNER JOIN ship_templates st ON st.id = s.template_id".

Hast du die Schreibweise bereits überprüft, sowie, ob hier der richtige Tabellen-Alias verwendet wird?

Lg
 

Iceman81

Neuer Benutzer
Beiträge
3
also es gibt ne Spalte template.id in der Tabelle ships auf die hier verwiesen wird, daran kann es also nicht liegen, habs auch extra grade nochmal gecheckt!
 

PLSQL_SQL

Datenbank-Guru
Beiträge
176
Hy,

hab mir deine Fehlermeldung nochmals genauer angesehen, er spuckt dir das SQL-Stmt aus, in welchem der Fehler auftritt und dieses ist folgendes:

Code:
SELECT COUNT(s.ship_id) AS n_ships
      ,SUM(st.value_11) AS sum_sensors
      ,SUM(st.value_12) AS sum_cloak 
      
    FROM ships s
        ,ship_fleets f INNER JOIN ship_templates st 
         
         ON st.id = s.template_id 
         
    WHERE s.user_id IN (10) 
    AND s.fleet_id = f.fleet_id 
    AND f.planet_id = 1

Hier liegt der Fehler auf der Hand... Du kannst nicht einmal JOIN zur Verknüpfung der Tabellen heranziehen und einmal die "WHERE" - Klause.
Entweder ODER!!!


Code:
SELECT COUNT(s.ship_id) AS n_ships
      ,SUM(st.value_11) AS sum_sensors
      ,SUM(st.value_12) AS sum_cloak 
      
    FROM ship_fleets f INNER JOIN ( ships s INNER JOIN ship_templates st ON s.template_id = st.id ) ON s.fleet_id = f.fleet_id
         
    WHERE s.user_id IN (10) 
    AND f.planet_id = 1

Lg
 
Werbung:

Iceman81

Neuer Benutzer
Beiträge
3
konnte das Problem evaluieren nachdem ich mir nochmal die Fehlermeldung angesehn habe, es gab noch ne included PHP Datei, in der genau die angemahnten Werte standen und es fehlte ne klammer beim From, seitdem gehts.
 
Oben