[MySQL] Unterabfrage bei SELECT

Paula

Erfahrenes Mitglied
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.
SQL:
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.
SQL:
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.
 
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:
SQL:
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
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück