Hilfe bei PHP Table abfrage

G

GesuGefu

Guest
bin nicht gerade der große php coder,
bräuchte euere hilfe bei einer php abfrage.

möchte aus einem table alle gleichen werte abfragen und die summe deren anzahl anzeigen lassen.
bekomme die abfrage nicht hin. also nicht einfach die summe aller werte sondern nur deren häufigkeit.
könnt ihr helfen?

Gruß Jürgen
 
Denke mal Du meinst eher SQL oder? Sonst weiß ich leider nicht was Du für ein Problem haben könntest ...

CODE SELECT COUNT(id) FROM table WHERE foo = 'bar'


Damit bekommst Du die Anzahl der Datensätze raus.
 
meinte nicht die anzahl der datensätze, sondern die anzahl gleicher werte im table
also z.b. 1000 datensätze indenen (anzahl)449 mal wert 500, (anzahl)551 mal wert 600 steht
wie bekomme ich die anzahl der werte heraus.

Gruß Jürgen
 
CODE SELECT COUNT(wert), wert FROM table GROUP BY wert


? Bin mir immer noch nicht sicher ob ich's verstanden hab
biggrin.gif
Ist wohl zu früh am Morgen
 
ja, früh am morgen und ich habe es wohl immer noch nicht richtig erklärt.
dachte mir das ungefähr so:

CODE $domain_query = db_query("select * FROM " . domain . " COUNT(wert aller einträge die =500sind, nicht die summe nur die anzahl)");



Gruß Jürgen
 
Tut mir leid, aber gib uns doch einfach mal Deine Datenbankstruktur und eine Aufstellung was Du da jetzt rausbekommen möchtest.

Ich weiß ja nicht ob nur ich grad vor ner Wand stehe und mich frage welche Farbe die Steine haben?!

Wenn Du etwas COUNTen willst, musst Du zwangsläuft nach etwas GROUPen. Welches Feld wäre das bei Dir?
Die Meldung wird er Dir wohl auch ausgeben wenn Du ein COUNT im WHERE unterzubringen versuchst.

Auf jeden Fall kannst Du kein "SELECT *" einsetzen wenn Du nach etwas gruppieren willst.

Tut mir leid, ich geh mir noch nen Kaffee holen
wink.gif
 
Hi, das geht folgendermassen:

SELECT distinct spalte, count(spalte) FROM tabelle GROUP BY spalte
 
habe mir das ganze nun bis hier hin zusammen gezimmert.
abfrage funz aber nicht.

CODE {
$summwert=$this->$domains = db_query('SELECT SUM(wert) FROM . domains . WHERE domain_pr');
echo $summwert;

}


domains = table
domain_pr = spalte
wert

ausgegen werden soll die summe des vorkommens des wertes

wenn der wert 3 5x vorhanden ist soll nicht 15 angezeigt werden sondern 5

liege ich mit meinem code falsch? oder ist irgendein zeichenfehler drin?

Gruß Jürgen

 
Hast Du die von uns vorgeschlagenen Statements überhaupt ausprobiert?

Ansonsten würde ich vorschlagen, dass Du nochmal in das mySQL Handbuch schaust, weil an Deinem Statement ein ziemlich grundlegender Fehler im WHERE-Clause ist.

Und ob $summwert=$this->$domains = db_query(); überhaupt funktioniert wage ich jetzt einfach mal zu bezweifeln. Ich kenne zwar das Datenbankobjekt nicht, welches Du benutzt, aber für mich sieht das falsch aus. Steht überhaupt irgendwas in $summwert drin?

Falls das so stimmt, kommst Du aber mit dem Vorschlag
CODE SELECT COUNT(wert) FROM domains WHERE domain_pr = 3

eigentlich weiter. Damit wird einfach die Anzahl der Domains mit dem PR 3 ausgegeben.

SUM = summieren
COUNT = zählen
Einfach oder?

Ob Zeichenfehler oder falsche Code vorliegen sagt einem das PHP Errorlog im Normalfall recht eindeutig.
 
deine abfrage sieht so aus als würde sie stimmen.
allerdings bin ich zugegebener maßen so schlecht in php das ich nicht genau weis wo
ich ' und ; setzen muss.

dein code liegt hier: test PHP

Gruß Jürgen
 
du hast es jetzt genau so gemacht, wie du es nicht wolltest.

SUM() = Gibt die Summe aller Werte einer Spalte aus
COUNT() = Gibt die Anzahl Vorkommen der Werte einer Spalte aus.


Bsp.:

QUOTE SELECT count(spalte) AS anzahl FROM tabelle GROUP BY spalte HAVING spalte = WERT

hierdurch wird die Anzahl der in "Spalte" vorkommenden Werte ausgegeben, für die "spalte = wert" gilt (z.B. spalte = 5)


//Edit: Okay, da war jemand schneller als ich.
 
QUOTE (GesuGefu @ Do 4.1.2007, 11:07) deine abfrage sieht so aus als würde sie stimmen.
allerdings bin ich zugegebener maßen so schlecht in php das ich nicht genau weis wo
ich ' und ; setzen muss.

dein code liegt hier: test PHP

Gruß Jürgen

Da bringt er aber nix
biggrin.gif


Poste ihn mal hier in Code-Tags
 
sorry leutz, nun ist mein hirn durcheinander, könntet ihr mir die abfrage nicht im klare code posten?
bekomm das irgendwie nicht hin.

Gruß Jürgen
 
QUOTE (GesuGefu @ Do 4.1.2007, 10:19)sorry leutz, nun ist mein hirn durcheinander, könntet ihr mir die abfrage nicht im klare code posten?
bekomm das irgendwie nicht hin.

@Yosh hat dir bereits in Beitrag #4 die - angesichts deiner Frage wohl - korrekte Lösung gepostet.

Solange Du so etwas


QUOTE $domain_query = db_query("select * FROM " . domain . " COUNT(wert aller einträge die =500sind, nicht die summe nur die anzahl)");

oder später

QUOTE $summwert=$this->$domains = db_query('SELECT SUM(wert) FROM . domains . WHERE domain_pr');


als 'richtigen Code' vermutest: Beschäftige dich erst einmal ein paar Tage mit Sql (getrennt von PHP), um die Probleme auseinanderzuhalten.

@MN: Das


QUOTE SELECT distinct spalte, count(spalte) FROM tabelle GROUP BY spalte


'Distinct' ist überflüssig, weil durch Group By ohnehin nur Zeilen mit lauter verschiedenen Werten in der ersten Spalte ausgegeben werden.
 
Zurück
Oben