MySQL 5.1 - Abfrage mit 2 COUNTs

schiese

Erfahrenes Mitglied
Hallo,
ich habe mehrere Tabellen. Zuerst möchte ich aus der Tabelle autos die ID des Eintrags mit fgs = '215131' auslesen. Anschließend die Eintraege aus den Tabellen rg und srg mit "autos.aid = rg.a_id" bzw. "autos.aid = srg.said" zählen. Nun möchte ich gerne die Ergebnisse der Abfrage angezeigt bekommen, wenn rg.a_id NULL ist ODER wenn COUNT(rg.a_id) = COUNT(srg.said) ist.

Code:
SELECT
    aid,
    COUNT(rg.a_id) AS arg,
    COUNT(srg.said) AS asrg
FROM
     (SELECT
          id AS aid
      FROM
          autos
      WHERE
          fgs = '215131'
      LIMIT 1)
AS autos
LEFT JOIN rg ON (autos.aid = rg.a_id)
LEFT JOIN srg ON (autos.aid = srg.said)
WHERE
    (rg.a_id IS NULL)";

Ein print_r des assoziativen Arrays erhalten mit dem obigen Code zeigt mir schon mal die richtigen Ergebnisse an
Code:
Array
(
[aid] => 76
[arg] => 0
[asrg] => 0
)
Allerdings bekomme ich die zweite Abfrage bezüglich der Gleichheit der beiden COUNTs nicht in den Code. Meine Ideen bezüglich
Code:
(rg.a_id IS NULL OR arg = asrg)
führen leider nicht zum Ziel.

Wäre nett, wenn mir jemand helfen könnte.

Viele Grüße
schiese
 
Zuletzt bearbeitet:
Hallo,
ich habe das Problem jetzt durch zwei weitere Select-Abfragen wie folgt gelöst
Code:
SELECT
  *
      FROM
      (SELECT
      aid,
        a_id,
        arg,
        COUNT(srg.said) AS asrg
      FROM
  (SELECT
      aid,
        rg.a_id AS a_id,
        COUNT(rg.a_id) AS arg
      FROM
      (SELECT
      id AS aid
    FROM
      autos
      WHERE
      fgs = '215131'
      LIMIT 1)
      AS autos
     LEFT JOIN rg ON (autos.aid = rg.a_id)
     )
     AS n
     LEFT JOIN srg ON (n.aid = srg.said)
     )
     AS m
     WHERE
      m.a_id IS NULL OR m.arg = m.asrg";
Der Code macht jetzt genau das was ich möchte. Da ich nicht davon ausgehe, dass der Code besonders performant ist, markiere ich das Thema in der Hoffnung, dass jemand eine bessere Lösung kennt mal nicht als erledigt.

Viele Grüße,
schiese
 
Zuletzt bearbeitet:
Zurück