| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

14-09-2010, 19:21
|
|
chrissi11
Registrierter Benutzer
|
|
Registriert seit: Jan 2008
Beiträge: 70
|
|
Group by, dann höchstzahl festlegen
Hi zusammen,
ich hab folgendes vorhaben:
Zur Veranschaulichung meines vorhabens kann man sich ein Votescript vorstellen. Nur bei mir ist das ein klein wenig anders.
1.) DB Einträge auslesen
2.) übereinstimmigkeiten zusammenzählen
3.) Zahl mit höchstem Wert in Variable schreiben
Bei genau Punkt 3 ist mein Problem.
Mit PHP/ Smarty hab ich das nun so bis Punkt 2 gelöst.
PHP-Code:
$list = $osDB->getAll('select *, count(voteid) as zahl from ! group by voteid'
, array( WAHLEN_TABLE, $_SESSION['UserId'] ) );
Mit Smarty ruf ich das so ab:
HTML-Code:
{foreach item=item key=key from= $list}
{$item.voteid} ist {$item.zahl} mal vorhanden<br />
{/foreach}
Damit bekomm ich nun auch die Anzahl der gemeinsamen Einträge.
Da ich das aber ab hier noch nicht mit Smarty machen kann, muss ich zunächst mit php weiter arbeiten.
Dafür muss das höchste Ergebnis in eine Variable gespeichert werden.
Die brauch ich nämlich später zum vergleich bzw. zur Auswertung.
Und ich find einfach keine Idee das umzusetzen.
Ich bitte euch da mal wieder um Hilfe.
Das nächste Problem ist, das ich später noch eine Abfrage brauche,
die folgendermaßen aussehen soll:
Von den Einträgen doppelte oder mehr herauszufiltern, so das nur noch eine voteid von jedem übrigbleibt :/ und hier scheiter ich ebenfalls.
Könnt ihr mir da weiterhelfen/Tipps geben?
Vielen Dank im voraus
LG
|

14-09-2010, 19:26
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von chrissi11
Und ich find einfach keine Idee das umzusetzen.
|
Und ich hab überhaupt keine Idee, was du eigentlich wissen willst. Und was du eigentlich erreichen willst.
Zitat:
Das nächste Problem ist, das ich später noch eine Abfrage brauche,
die folgendermaßen aussehen soll: [...]
|
Bitte gewöhne dir an, bei solchen Fragestellungen Tabellenstruktur, Beispieldaten und mit diesen gewünschtes Ergebnis zu nennen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

14-09-2010, 19:38
|
|
chrissi11
Registrierter Benutzer
|
|
Registriert seit: Jan 2008
Beiträge: 70
|
|
Roger Chef, werd mir mühe geben 
Ok, ich dachte ich hab mir schon Mühe gegeben das verständlich auszudrücken.
Aber anscheinend noch nicht genug
Tabellenstruktur:
wahlid userid hinweis voteid
1 200 text 100
2 300 text 100
3 400 text 200
Ein User wählt einen anderen, hier: userid 200 wählt voteid 100
usw usw.
Mit group by im SQL statement die häufigkeit der gevoteten Personen
zusammenzählen . Hier wären es zwei. voteid 100 kommt 2 mal vor.
Damit ist das, das höchste Ergebnis.
PHP-Code:
$list = $osDB->getAll('select *, count(voteid) as zahl from ! group by voteid'
, array( WAHLEN_TABLE, $_SESSION['UserId'] ) );
Nun will ich, das voteid, also das höchste Ergebnis beim zusammenzählen
in eine Variable geschrieben wird.
$ergebnis = ??
----Andere Sache----
Beim zweiten Fall soll die Abfrage so sein, das von den gevoteten Ergebnissen
nur noch jeweils eine voteid ausgegeben wird und nicht alle.
Also nicht zwei mal 100 sondern voteid 100 dann voteid 200 usw.
Hoffe das ich das besser beschrieben hab :P
Geändert von chrissi11 (14-09-2010 um 19:42 Uhr)
|

14-09-2010, 19:50
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von chrissi11
PHP-Code:
$list = $osDB->getAll('select *, count(voteid) as zahl from ! group by voteid'
, array( WAHLEN_TABLE, $_SESSION['UserId'] ) );
Nun will ich, das voteid, also das höchste Ergebnis beim zusammenzählen
in eine Variable geschrieben wird.
$ergebnis = ??
|
Und $osDB ist jetzt was für ein Objekt?
Lies in der Doku dazu nach, wie man das Ergebnis einer damit gemachten Abfrage in eine Variable bekommt.
Zitat:
Beim zweiten Fall soll die Abfrage so sein, das von den gevoteten Ergebnissen nur noch jeweils eine voteid ausgegeben wird und nicht alle.
Also nicht zwei mal 100 sondern voteid 100 dann voteid 200 usw.
|
Also SELECT DISTINCT.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

14-09-2010, 19:59
|
|
chrissi11
Registrierter Benutzer
|
|
Registriert seit: Jan 2008
Beiträge: 70
|
|
ja, hab ich gemacht.Dort bin ichja nicht fündig geworden oder eben blind..und hab unendlich gegoogelt nach ggf. beispielen oder so :/
naja, das hätt ich dann auch anderst schreiben können.
osDB ist ne klasse auf die zugegriffen wird für die datenbank abfrage
PHP-Code:
'select *, count(voteid) as zahl from WAHLENTABELLE group by voteid'
distinct also, danke, werd ich mir mal anschauen..bei dem anderen brauch ich wohl nomma nen tipp :/
|

14-09-2010, 20:05
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
SELECT * sollte man nicht verwenden, sondern immer genau die Spalten auswählen, die man haben will.
Alle Spalten, die im SELECT aufgeführt werden, sollten auch im GROUP BY stehen. Jede andere Datenbank haut dir sonst Fehlermeldungen um die Ohren, nur MySQL ist so großzügig und ignoriert es (liefert dafür aber eventuell falsche Ergebnisse).
SQL-Schlüsselwörter sollten groß geschrieben werden, damit sie sich optisch von den Programmiersprachen abhebt. Spalten- und Tabellennamen hingegen sollten klein geschrieben werden.
|

14-09-2010, 20:08
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von chrissi11
osDB ist ne klasse
|
Erstaunlich - trotz expliziter Nachfrage schaffst du es nicht, uns irgendwelche Informationen zu liefern, die irgendwie weiterhelfen könnten.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

14-09-2010, 20:51
|
|
chrissi11
Registrierter Benutzer
|
|
Registriert seit: Jan 2008
Beiträge: 70
|
|
@hell, danke, werds mir mal versuchen anzugewöhnen und die sache nomma ändern
@wahsaga
was ist an der aussage so schwer zu verstehen, wenn ich dir sage
das diese auf eine klasse zugreift die für die datenbankabfrage zuständig ist?
dafür hab ich nochmal extra das statement geändert. wo ist das problem?
spielt doch eigentlich garkeine rolle was das. wichtig ist doch nur das statement oder? und das hab ich extra nochmal geändert *amkopfkratz
|

14-09-2010, 21:00
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von chrissi11
was ist an der aussage so schwer zu verstehen, wenn ich dir sage das diese auf eine klasse zugreift die für die datenbankabfrage zuständig ist?
|
Es geht nicht darum, ob das schwer zu verstehen ist - das ist so selbstverständlich, dass es absolut überflüssig ist, dass du das noch mal erwähnst.
Du wolltest aber wissen, wie du das Ergebnis der Abfrage in eine Variable bekommst - und das hängt davon ab, was für eine Klasse das den eigentlich ist (nicht davon, was sie ganz offensichtlich macht).
Dazu hast du uns immer noch keine Information geliefert (obwohl ich nicht sehe, was an der Frage danach so schwer zu verstehen ist, das müsstest du uns jetzt also bitte sagen) - also können wir dir diesbezüglich auch nicht weiterhelfen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

15-09-2010, 20:35
|
|
sili
Registrierter Benutzer
|
|
Registriert seit: Feb 2004
Beiträge: 115
|
|
Ich bin mir auch nicht sicher, was du genau bewerkstelligen willst. Aber suchst du vielleicht "GROUP BY foo HAVING irgendwas"?
|

19-09-2010, 00:29
|
|
eagle275
Registrierter Benutzer
|
|
Registriert seit: Jun 2010
Beiträge: 371
|
|
da muss ich wasaga zustimmen ..
wenn ich aber mal von meiner Datenbank-Klassen schließen darf ....
$list ist ein array .. das sollte unter anderem einen Eintrag für das von dir abgefragte count(voteid) as zahl haben ...
häng an deine Abfrage ein "ORDER BY zahl DESC" an, dann landet die höchste zahl in der ersten Ergebnis-Zeile -> bei mir würde dann ein $list[0]['zahl']
die von dir gewünschte Angabe enthalten
bei deiner Datenbankklasse musst du halt mal in der Doku nachschauen, wie das array aufgebaut ist
__________________
Wer LESEN kann, ist klar im Vorteil!
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|