# [MySQL] Unterabfrage bei SELECT



## Paula (28. August 2007)

Hallo zusammen,

ich habe mir eine kleine Poker-DB gebastelt. Dabei ist für meine Abfrage nur eine Tabelle relevant. Dort gibt es die Felder: event_id, session, player_id, ranking.

Meine Abfrage zeigt mir alle Turnier an, wo der Spieler den ersten oder zweiten Platz belegt hat. 
	
	
	



```
SELECT event_id, session, ranking
FROM tournaments
WHERE player_id = '1'
AND ranking IS NOT NULL
```

Nun benötige ich aber für die Berechnung die Anzahl der teilgenommen Spieler. Wenn ich die event_id und session direkt angebe, dann klappt es. 
	
	
	



```
SELECT event_id, session, ranking, (SELECT COUNT(*) FROM tournaments WHERE event_id = '1' AND session = '1') AS foo
FROM tournaments
WHERE player_id = '1'
AND ranking IS NOT NULL
```
 Aber ich möchte es ja dynamisch haben - also die jeweilige event_id und session aus der Hauptabfrage. Wie mache ich das aber? Oder ist sowas nur durch eine zweite Abfrage möglich?

PS: Die Realisierung erfolgt mit PHP 5 und MySQL 5.0.38.


----------



## ManicMarble (31. August 2007)

Du kannst Dich in Subqueries auf die Felder im Haupt-Query beziehen. Da bei Dir Haupt- und Subquery die gleiche Tabelle abfragen, musst Du Aliase verwenden.
So könnte es klappen:

```
SELECT
  `hauptquery`.`event_id`   AS `event_id`,
  `hauptquery`.`session`    AS `session`,
  `hauptquery`.`ranking`    AS `ranking`,
  (
    SELECT
      COUNT(*)
    FROM
      `tournaments` AS `subquery`
    WHERE
          `subquery`.`event_id` = `hauptquery`.`event_id`
      AND `subquery`.`session`  = `hauptquery`.`session`
  )                         AS `foo`
FROM
  `tournaments` AS `hauptquery`
WHERE
      `hauptquery`.`player_id` = '1'
  AND `hauptquery`.`ranking` IS NOT NULL
```


----------

