Vinzenz Mai: MySQL: Subqueries

Beitrag lesen

Hallo Uwi,

ich habe eine anwendung von einem server mit einer
4.1.15 MySql datenbank auf einen server mit einer
4.0.24 MySql datenbank verschoben und nun klappen
die wichtigsten abfragen nicht mehr was wohl daran liegt
das sie aus mehreren selects in einer abfrage bestehen .

Subqueries nennt man das.

Wie Dir das MySQL-Handbuch, Abschnitt Subquery-Syntax sagt, werden Subqueries erst seit der Version 4.1 unterstützt.

SELECT x AS ref, geb_id, user_id AS uid, typ, hitpoints,
( SELECT COUNT( x ) FROM War_Schlacht WHERE x = ref ),
( SELECT name FROM user WHERE id=uid )
  FROM Lageplan WHERE ( ".$OR." ) Order by x LIMIT 144

  
Vielleicht kannst Du die Abfrage umschreiben, so dass Du Dein Ergebnis auch ohne Subqueries erreichst. Dein zweites Subselect sollte sich durch einen Join ersetzen lassen:  
  
~~~sql
  
SELECT  
  lp.x AS ref,  
  lp.geb_id,  
  lp.user_id AS uid,  
  lp.typ,  
  lp.hitpoints,  
  ( SELECT COUNT(x)  
      FROM War_Schlacht  
      WHERE x = ref ),  
  user.name  
FROM Lageplan lp  
INNER JOIN user on user.id = lp.user_id  
WHERE [...]  
ORDER BY x  
LIMIT 144  

Nun bleibt nur noch ein Subquery übrig. Vielleicht kannst Du den MAX-CONCAT-Trick, auf COUNT() umbauen, wenn Du unbedingt auf MySQL 4.0.x angewiesen bist.

Freundliche Grüße

Vinzenz