YourWBB


yourWBB » yourWBB Misc * » Das Proggen » MySQL und PHP » Vergleichen per SQL oder PHP ? » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag 3.631 Views | | Thema zu Favoriten hinzufügen

Neues Thema erstellen Antwort erstellen

Zum Ende der Seite springen Vergleichen per SQL oder PHP ?
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Beckebans Beckebans ist männlich
Alternativ Mitglied


images/avatars/avatar-5856.jpg

Dabei seit: 10.07.05
Beiträge: 481
Fähigkeiten: WBB Lite 1 Fortgeschritten
Herkunft: Paderborn
Forenversion: Lite 1.0

 Vergleichen per SQL oder PHP ? Antworten Zitieren Editieren Melden       UP

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.

__________________
Meine Hacks:

- Userpage
- Geburtstagsliste
- Beitrag bedanken
- User verlinken
- PHP-Fehler anzeigen
- Umfragedauer
- Neue Beiträge während Eigenem
- Gruppenspezifische Mitgliederliste
- und weitere...

09.10.08 21:27 Beckebans ist offline E-Mail WWW Finden Als Freund hinzufügen
Dizzy.w3 Dizzy.w3 ist männlich
Brain Damage


images/avatars/avatar-5617.jpg

Dabei seit: 18.07.07
Beiträge: 1.431
Herkunft: Österreich
Forenversion: 3.0

Antworten Zitieren Editieren Melden       UP

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.

__________________
Gruß Dizzy

the rest is silence

09.10.08 22:03 Dizzy.w3 ist offline E-Mail Finden Als Freund hinzufügen Füge Dizzy.w3 in deine Kontaktliste ein MSN Passport-Profil von Dizzy.w3 anzeigen
[kamui]
~


images/avatars/avatar-4963.gif

Dabei seit: 27.04.05
Beiträge: 2.992

Antworten Zitieren Editieren Melden       UP

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 ...
09.10.08 22:07 [kamui] ist offline Finden Als Freund hinzufügen
Maniac_81 Maniac_81 ist männlich
PHP Profi


images/avatars/avatar-5230.gif

Dabei seit: 27.06.06
Beiträge: 2.087
Fähigkeiten: WBB3 Anfänger; WBB2 Profi
Herkunft: localhost/
Forenversion: 2.3; Lite 2.0

Antworten Zitieren Editieren Melden       UP

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.

__________________
zufrieden mit meinem Support? dann hier bitte bewerten!

Sie haben 3 gelbe Bananen gewählt!

ÄPFEL! 3!!!

10.10.08 09:55 Maniac_81 ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Maniac_81 in deine Kontaktliste ein MSN Passport-Profil von Maniac_81 anzeigen
[kamui]
~


images/avatars/avatar-4963.gif

Dabei seit: 27.04.05
Beiträge: 2.992

Antworten Zitieren Editieren Melden       UP

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?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von [kamui]: 10.10.08 15:27.

10.10.08 15:25 [kamui] ist offline Finden Als Freund hinzufügen
Maniac_81 Maniac_81 ist männlich
PHP Profi


images/avatars/avatar-5230.gif

Dabei seit: 27.06.06
Beiträge: 2.087
Fähigkeiten: WBB3 Anfänger; WBB2 Profi
Herkunft: localhost/
Forenversion: 2.3; Lite 2.0

Antworten Zitieren Editieren Melden       UP

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.

__________________
zufrieden mit meinem Support? dann hier bitte bewerten!

Sie haben 3 gelbe Bananen gewählt!

ÄPFEL! 3!!!

10.10.08 15:41 Maniac_81 ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Maniac_81 in deine Kontaktliste ein MSN Passport-Profil von Maniac_81 anzeigen
Beckebans Beckebans ist männlich
Alternativ Mitglied


images/avatars/avatar-5856.jpg

Dabei seit: 10.07.05
Beiträge: 481
Fähigkeiten: WBB Lite 1 Fortgeschritten
Herkunft: Paderborn
Forenversion: Lite 1.0

Themenstarter Thema begonnen von Beckebans
Antworten Zitieren Editieren Melden       UP

Klappt super, danke euch allen großes Grinsen

__________________
Meine Hacks:

- Userpage
- Geburtstagsliste
- Beitrag bedanken
- User verlinken
- PHP-Fehler anzeigen
- Umfragedauer
- Neue Beiträge während Eigenem
- Gruppenspezifische Mitgliederliste
- und weitere...

10.10.08 18:24 Beckebans ist offline E-Mail WWW Finden Als Freund hinzufügen
Baumstruktur | Brettstruktur
Gehe zu:

Neues Thema erstellen Antwort erstellen

yourWBB » yourWBB Misc * » Das Proggen » MySQL und PHP » Vergleichen per SQL oder PHP ?