phpbar.de logo

Mailinglisten-Archive

AW: SELECT mit MAX()

AW: SELECT mit MAX()

Julian Daniel Jimenez Krause mysql_(at)_lists.phpcenter.de
Thu, 26 Apr 2001 16:55:28 +0200


> Hallo,
>
> ich habe eine Tabelle (t) mit folgenden Werten:
> |---|---|---|---|
> | a | b | c | d |
> |---|---|---|---|
> | 1 | 1 | 2 | 3 |
> | 1 | 3 | 2 | 2 |
> | 1 | 4 | 1 | 1 |*
> | 1 | 2 | 0 | 0 |
> | 2 | 2 | 1 | 1 |
> | 2 | 3 | 2 | 2 |
> | 2 | 5 | 6 | 3 |*
> |---|---|---|---|
> SELECT *, MAX(b) FROM t GROUP BY a
>
> Damit bekomme ich zwar zu jedem Wert den Max-Wert von b,
> was soweit gewollt ist, aber die falschen Daten von c und d.
> Wie bekomme ich die passenden Daten für c und d dazu?
>
> Danke, Rico

tja, bei group by a holt sich select die werte von c u d (da keine
bedingugen an diesen felder gestellt wie etwa max(b) für b) aus irgendeiner
reihe, ich meine aus der jeweils letzten reihe für jedes a ...

eine zwischenlösung erstmal (möglicherweise gibt es was eleganteres /
einfacheres) wäre:

$myquery1="SELECT a,max(b) as bmax FROM t GROUP BY a";
$result1 = mysql_query($myquery1,$db);
while ($row1 = mysql_fetch_row($result1)) {
   $myquery2="SELECT * FROM t WHERE a=$row1[0] AND b=$row1[1]"
   $result2 = mysql_query($myquery2,$db);
   $row2 = mysql_fetch_row($result2)
   ... a -> row2[0], b -> row2[1], c -> row2[2], d -> row2[3]
}

ätzend, ich weiß... aber mir fällt momentan nix besseres ein.

saluts
julián daniel

---
*** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive