hallo.
ich arbeite gerade an einer abfrage, die ein ergebnis-array folgender art erzeugen soll:
$erg =
array
(
'erg1' =>
array(
'erg1a' => X
'erg2b' => X
'erg1c' => X
)
'erg2' =>
array(
'erg1b' => X
'erg1d' => X
)
'erg3' =>
array( ... )
...
)
ich gehe hierzu so vor, dass ich eine abfrage mit 'group by spalte1, spalte2' vornehme, und sortiere danach das suchergebnis per php-schleife über array-schlüssel in das $erg-array ein. gleiche array-schlüssel werden dann ja automatisch zusammengefasst.
das sql-ergebnis sieht also beispielhaft so aus:
erg1 | erg1a | X
erg1 | erg1b | X
erg1 | erg1c | X
erg2 | erg1b | X
erg2 | erg1d | X
...
nun habe ich das problem, dass mein ergebnis, welches ich durch den php-schleifendurchgang erzeuge in der ergebnis-zeilenanzahl nicht mit dem originalen sql-ergebnis übereinstimmt.
ich muss vor erzeugung des eigentlichen suchergebnisses jedoch noch eine abfrage machen, wie viele datensätze, das ergebnis der sql-abfrage haben wird (wegen ergebnisseiten-darstellung). dies möchte ich gerne mit einem count(distinct *) erledigen, jedoch kann ich ja meines wissens kein group-by über 2 spalten über dieses count(distinct ...) abbilden?
kurz gesagt, ich will die anzahl der ergebniszeilen des folgenden SQL's vor der eigentlichen ausführung (am bestena ja über ein count(...)) abfragen:
SELECT a.*,
b.*,
c.*,
d.*,
e.platform_id, e.name AS platform_name, e.abbreviation AS platform_abbreviation, e.logo_url AS platform_logo_url, e.platform_type, e.img_logo_small AS platform_img_logo_small,
g.option_id, g.name AS option_name
FROM funds a
LEFT JOIN fund_companies b ON a.company_id = b.company_id
CROSS JOIN fund_company_alias_name c ON b.fund_company_alias_name_id = c.fund_company_alias_name_id
LEFT JOIN fund_platform_fund_availability d ON a.isin = d.isin
LEFT JOIN fund_platforms e ON d.platform_id = e.platform_id
LEFT JOIN fund_extending_options_availability f ON a.isin = f.isin
LEFT JOIN fund_extending_options g ON f.option_id = g.option_id
WHERE b.activated = 'Y'
GROUP BY a.isin, e.platform_id
ORDER BY a.name ASC
LIMIT 0, 25
ausserdem noch meine frage, ob man ein derartiges sql-ergebnis, wie ich es im endeffekt haben möchte (siehe php-array) auch anders - evtl. direkt mit mysql oder auf eine geschicktere art und weise hinbekommen könnte.