Vergleichen per SQL oder PHP ?

Beckebans
Ich habe in der Datenbank-Tabelle 'bb1_clanwar' die Felder 'Ergebnis_Map_1', 'Ergebnis_Map_2' und 'Ergebnis_Map_3'.
Die Felder 'Ergebnis_Map_1' und 'Ergebnis_Map_2' haben immer einen Inhalt, das Feld 'Ergebnis_Map_3' manchmal.
Das Format dabei: "Punkte wir : Punkte Gegner"

Inhalt von Datensatz 1...
- Ergebnis_Map_1: 12:20
- Ergebnis_Map_2: 45:51
- Ergebnis_Map_3: leer

Inhalt von Datensatz 2...
- Ergebnis_Map_1: 50:00
- Ergebnis_Map_2: 26:21
- Ergebnis_Map_3: leer

Inhalt von Datensatz 3...
- Ergebnis_Map_1: 52:15
- Ergebnis_Map_2: 49:50
- Ergebnis_Map_3: 13:12

Inhalt von Datensatz 4...
- Ergebnis_Map_1: 24:53
- Ergebnis_Map_2: 52:11
- Ergebnis_Map_3: leer


Ich möchte auf einer Forenseite (wbblite1, sollte aber keine Rolle spielen, oder?) jetzt die Gesamtergebnisse anzeigen lassen.

Kurze Erklärung:
Beim ersten Datensatz, Ergebnis_Map_1 wären das zum Beispiel 12 Punkte für uns und 20 Punkte für die Gegner. Wir hätten verloren, macht ein 0:1.
Beim ersten Datensatz, Ergebnis_Map_2 wären das dann 45 Punkte für uns und 51 Punkte für die Gegner. Wir hätten wieder verloren, macht wieder ein 0:1.
Beim ersten Datensatz, Ergebnis_Map_3 steht nichts drin, ist also unwichtig und wird ignoriert.
Als Gesamtergebniss kommt dann also ein 0:2 (alle zusammengerechnet) raus. Das möchte ich so haben smile

Beim ersten Datensatz kommt ein 0:2 raus, beim zweiten Datensatz ein 2:0, beim dritten Datensatz ein 2:1 und beim vierten Datensatz ein 1:1.

Was ist dabei besser oder einfacher? SQL oder PHP oder ne Mischung aus beiden? Und wie gehts? Dass SQL vergleichen kann habe ich schon gelesen, aber bringt das hier was und ist das sinnvoll? Per PHP vergleichen sollte ja kein Problem darstellen.
Dizzy.w3
Hi,

aufgrund der Artes, wie du speicherst, musst du etwas Mächtigeres einsetzen, um PHP kommst du aber sowieso nicht herum, ist ja schließlich für's wBB.

Auslesen der beiden Spalten. Und aufsplitten. Aufgesplittet wird beim Punkt. PHP: Split

Wie du schon gesagt hast »per PHP vergleichen sollte ja kein Problem sein«. Deswegen weiß ich auch nicht, was du noch groß wissen möchtest.
[kamui]
Sowas regelt man mit PHP, SQL dient zur Abfrage der Daten aus der Datenbank Augenzwinkern

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
$we 0;
$they 0;
$match1 "14:2";
$match2 "5:18";
$match3 "7:9";

$match1 explode(":"$match1);
if ($match1[0] > $match1[1]) $we++; # dein team hat gewonnen
elseif ($match[1] > $match[0]) $they++; # gegnerisches team hat gewonnen
else
{
    #unentschieden
}
$match2 explode(":"$match2);
if ($match2[0] > $match2[1]) $we++; # dein team hat gewonnen
elseif ($match2[1] > $match2[0]) $they++; # gegnerisches team hat gewonnen
else
{
    #unentschieden
}
$match3 explode(":"$match3);
if ($match3[0] > $match3[1]) $we++; # dein team hat gewonnen
elseif ($match3[1] > $match3[0]) $they++; # gegnerisches team hat gewonnen
else
{
    #unentschieden
}

echo "$we:$they"# 1:2


So würde ich das Regeln Augenzwinkern Habe absichtlich eigene Varaiblen verwendet, aber sollte ja kein Problem sein das auf dein Vorhaben zu konkretisieren. Da sich die Abfrage mit dem explode und > wiederholt würde sich sogar anbieten dies in eine Funtkion zu packen ...
Maniac_81
und genau das ist falsch smile

sowas kann man ganz einfach mit SQL lösen wenn du die richtige datenbank struktur hast.
Ich habe bei mir zb. eine liga-tabelle mit allen wertden nachdenen sortiert wird nur durch SQL berechnen lassen. war zwar ne mächtige abfrage, aber sie ist schnell und effektiv.

Bei mir werden zb alle heimpunkte und gegenpunkte berechnet. sprich, ob ich als auswärtsteam gepunktet habe oder als heimteam. dann wird berechnet wieviele sätze ich gewonnen habe als heim und auswärts. wieviele spiele jemand gemacht. die differenzen beider punkte werden auch berechnet und sortiert nach dem normalen muster.

1. Sortierungspunkt: differenz zwischen Plus und Minuspunkten
2. Sortierungspunkt: wieviel spiele man gemacht hat
3. Sortierungspunkt: differenz der sätze

Also wenn Punktegleichheit besteht, wird geschaut ob einer der jenigen weniger spiele hat, der ist dann natürlich vorne. wenn das auch noch gleich ist, dann wird nach sätzen sortiert.

Handelt sich um eine Dart-Liga Tabelle

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
SELECT
    t.teamname,
    @heimpunkte := (SELECT sum(s.heimpunkteFROM spiele s WHERE s.heimteam t.id GROUP BY t.id LIMIT 1heimpunkte,
    @gastpunkte := (SELECT sum(s.gastpunkteFROM spiele s WHERE s.gastteam t.id GROUP BY t.id LIMIT 1gastpunkte,
    @heimgegen := (SELECT sum(s.heimpunkteFROM spiele s WHERE s.gastteam t.id GROUP BY t.id LIMIT 1heimpgegen,
    @gastgegen := (SELECT sum(s.gastpunkteFROM spiele s WHERE s.heimteam t.id GROUP BY t.id LIMIT 1gastgegen,
    @heimspiele := (SELECT sum(s.spiele_heimFROM spiele s WHERE s.heimteam t.id GROUP BY t.id LIMIT 1heimspiele,
    @gastspiele := (SELECT sum(s.spiele_gastFROM spiele s WHERE s.gastteam t.id GROUP BY t.id LIMIT 1gastspiele,
    @heimgegenspiele := (SELECT sum(s.spiele_heimFROM spiele s WHERE s.gastteam t.id GROUP BY t.id LIMIT 1heimgegenspiele,
    @gastgegenspiele := (SELECT sum(s.spiele_gastFROM spiele s WHERE heimteam t.id GROUP BY t.id LIMIT 1gastgegenspiele,
    @spiele_all := (@heimspiele + @gastspielespiele_all,
    @gegen_all := (@heimgegenspiele + @gastgegenspielegegen_all,
    @spiele_diff := (@spiele_all - @gegen_allspiele_diff,
    @heim_all := (@heimpunkte + @gastpunkteheim_all,
    @gast_all := (@heimgegen + @gastgegengast_all,
    @punkte_diff := (@heim_all - @gast_allpunkte_diff,
    @tuniere := (SELECT count(s.idFROM spiele s WHERE s.gastteam t.id OR s.heimteam t.id GROUP BY t.id LIMIT 1tuniere
FROM
    teams t
WHERE
    t.liga_id=$liga AND t.aktiv=1
GROUP BY
    t.id
ORDER BY
    punkte_diff DESC,
    tuniere ASC,
    spiele_diff DESC


diese kann beliebig erweitert werden oder nach mehr kriterien sortiert wrden. SQL ist sehr mächtig was das angeht.
[kamui]
Sorry Maniac, bis auf normale Auslesen habe ich mich noch nie groß mit SQL beschäftigt ...

Wo wir schon bei dem Thema sind, kennst du gute Tutorials / Doku's in dem Bereich?
Maniac_81
Zitat:
Original von [kamui]
Sorry Maniac, bis auf normale Auslesen habe ich mich noch nie groß mit SQL beschäftigt ...

Wo wir schon bei dem Thema sind, kennst du gute Tutorials / Doku's in dem Bereich?


leider nein. ich such mich da auch immer mit google durch und die hauptseite bei solchen abfragen ist bei mir das Referenzhandbuch von MySQL:

http://dev.mysql.com/doc/refman/5.1/de/index.html

hier zählt es halt auch wie bei allem: learning by dooing.
noch dazu hab ich einige fragen bei tutorials.de gestellt, dort gibt es einige spezialisten zu solchen themen.

Ich hatte solche sachen früher auch mit PHP berechnet, aber das ist meist dann viel zu viel schreibarbeit und unübersichtlich. so bleibt es in einer abfrage und die ausgabe ist dann wie immer.
Beckebans
Klappt super, danke euch allen großes Grinsen