MySQL Count - PHP Mehrere Ausgaben

08/27/2010 21:09 Atheuz#1
Und zwar habe ich das problem mit

Quote:
SELECT COUNT(*),corp FROM storeitems GROUP BY corp ORDER BY COUNT(*) DESC
Mit mysql_query kann ich mir nur den Eintrag an erster Stelle ausgeben lassen, ich möchte allerdings alle Ergebnisse haben ( Und count auch!). In ein Array das ganze zu schieben funktioniert auch nicht. :S

Geht das ganze in einer Abfrage?

[Only registered and activated users can see links. Click Here To Register...]

Genau so möchte ich es in PHP auch ausgegeben haben in einer while schleife, und vorallem auch nur in einer Abfrage.
Ich habe so 1400 Einträge in der Datenbank, es wird dann nach 'corp' gezählt, wovon ich gerne die genaue anzahl und die spalte corp haben will.
08/27/2010 21:22 wurstbrot123#2
Code:
$result = mysql_query("SELECT * FROM example");
$count = mysql_num_rows($result);

for($i = 0; $i < $count; ++$i)
{
	$row = mysql_fetch_object($result);
        // ausgabe
}
08/27/2010 21:41 Atheuz#3
Quote:
Originally Posted by wurstbrot123 View Post
Code:
$result = mysql_query("SELECT * FROM example");
$count = mysql_num_rows($result);

for($i = 0; $i < $count; ++$i)
{
	$row = mysql_fetch_object($result);
        // ausgabe
}
Hab doch gesagt das es so nicht geht, das ist COUNT...

Fatal error: Cannot use object of type stdClass as array
08/27/2010 21:48 wurstbrot123#4
der code wird gehen.
es werden mit * alle felder ausgewählt und es kommt kein
COUNT()* in der querry vor
08/27/2010 22:01 Atheuz#5
Quote:
Originally Posted by wurstbrot123 View Post
der code wird gehen.
es werden mit * alle felder ausgewählt und es kommt kein
COUNT()* in der querry vor
Ich glaube du verstehst mich falsch, ich kann deinen Code so oft wie ich will einbinden, er spuckt immer den selben Fehler aus.
08/27/2010 23:56 wurstbrot123#6
dann mach aus $count - $counter
an beiden stellen.
08/28/2010 12:18 Atheuz#7
Daran hats nicht gelegen, sondern das ich es nicht wie eine Klasse aufgerufen habe. Hätte ich auch aus der Fehlermeldung lesen können. Danke dir.

Außerdem musste ich den SQL ändern damit ich beide Ergebnisse bekam.
08/28/2010 12:27 Noisuf-X#8
Quote:
Originally Posted by Atheuz View Post
Daran hats nicht gelegen, sondern das ich es nicht wie eine Klasse aufgerufen habe. Hätte ich auch aus der Fehlermeldung lesen können. Danke.

Jetzt weiß ich nur nicht wie ich auf das Ergebnis aus count zugreifen kann, $row->count gibt bei mir nichts aus, die namen bekomme ich aber jetzt.
du musst der count column einen namen geben
Beispiel:
Quote:
COUNT(*) as Anzahl
außerdem würde ich das count nicht auf alle columns ziehen sondern nur 1
ist besser in der performance
08/28/2010 18:52 Atheuz#9
Quote:
Originally Posted by Noisuf-X View Post
du musst der count column einen namen geben
Beispiel:


außerdem würde ich das count nicht auf alle columns ziehen sondern nur 1
ist besser in der performance
Wie gesagt, dass habe ich auch hinterher selber gemerkt das ich natürlich nicht auf count ohne einen Bezeichner zugreifen kann (Bevor ich den Thread erstellt habe, hatte ich dummerweise es auf corp bezogen lol). Und ja, einen Limiter habe ich auch eingefügt da ich nur maximal 30 Einträge von den 1200 brauche, allerdings muss ich alle Einträge davor einlesen.

Oder ist es schonender wenn ich alle Einträge in einer Schleife anhand der ID auslese, nochmal extern berechne und nochmal einen Request mache? Es wäre schonender wenn meine Ausgabe mit dem vorherigen Inhalt der Datenbank übereinstimmen würde, tut es aber nicht. Deswegen glaube ich nicht so recht daran das es soo viel Sinn machen würde.
08/28/2010 20:45 Noisuf-X#10
Quote:
Originally Posted by Atheuz View Post
Wie gesagt, dass habe ich auch hinterher selber gemerkt das ich natürlich nicht auf count ohne einen Bezeichner zugreifen kann (Bevor ich den Thread erstellt habe, hatte ich dummerweise es auf corp bezogen lol). Und ja, einen Limiter habe ich auch eingefügt da ich nur maximal 30 Einträge von den 1200 brauche, allerdings muss ich alle Einträge davor einlesen.

Oder ist es schonender wenn ich alle Einträge in einer Schleife anhand der ID auslese, nochmal extern berechne und nochmal einen Request mache? Es wäre schonender wenn meine Ausgabe mit dem vorherigen Inhalt der Datenbank übereinstimmen würde, tut es aber nicht. Deswegen glaube ich nicht so recht daran das es soo viel Sinn machen würde.
was ich meine ist COUNT(ID) und nicht COUNT(*) weil dann muss er nicht die ganze tabelle cachen und es ist performanter, das fehlt immer größeren sinne dann nämlich schon auf wie performant deine SQLAnweisungen sind.
Außerdem wäre ich mit SELECT * eh immer vorsichtig, ich zähle lieber immer meine spalten auf die verarbeiten möchten dann kann ich keine probleme bekommen wenn ich mal die tabelle erweitern will
08/28/2010 22:07 Atheuz#11
Quote:
Originally Posted by Noisuf-X View Post
was ich meine ist COUNT(ID) und nicht COUNT(*) weil dann muss er nicht die ganze tabelle cachen und es ist performanter, das fehlt immer größeren sinne dann nämlich schon auf wie performant deine SQLAnweisungen sind.
Außerdem wäre ich mit SELECT * eh immer vorsichtig, ich zähle lieber immer meine spalten auf die verarbeiten möchten dann kann ich keine probleme bekommen wenn ich mal die tabelle erweitern will
Ja, ist auch richtig das er mit SELECT * alle spalten ließt und bei COUNT(*) alle zählt, aber ich hatte ja bereits gesagt das ich den query überarbeitet habe.