php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben || php-forumjetzt anmelden
 

SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 24-07-2004, 23:04
stressless
 Newbie
Links : Onlinestatus : stressless ist offline
Registriert seit: Jul 2004
Beiträge: 12
stressless ist zur Zeit noch ein unbeschriebenes Blatt
Standard Ranking

Hi,
ich hoffe ihr könnt mir weiterhelfen.

Habe in einere Datenbank eine Tabelle mit Vereinen und eine mit den einzelnen Spielen der Veiene gegeneinander.
Wie kann ich nun aus den beiden Tabellen eine "Tabelle" also ein Ranking generieren?

Die Tabellen sind wie folgt aufgebaut:

Tabelle Verein
ID
Verein

Tabelle Spiele
ID
ID_Heimmannschaft
ID_Gastmannschaft
Tore_Heimmannschaft
Tore_Gastmannschaft

Hat einer ne Idee wie ich nun am besten an einer Tabelle (Ranking) komme (3 Pkt für Sieg, 1 Pkt für Unendschieden)?

Evt. noch bei Puktegleichheit direkter Vergleich, also das Ergebnis der beiden Teams gegeneinander???

Ich hatte zwar schon die Idee bei Anlegen der Spielergebnisse die Punkte der einzelnen Teams in einer Weiteren Tabelle zu speichern, doch gefällt mir diese Idee auf Grund der mangelnden Flexibilität nicht. So könnte man z.B. sich nachträglich nicht mehr den Tabellenstand nach dem 3. Spieltag anschauen.

Ich hoffe ihr habt ne Idee für mich
Mit Zitat antworten
  #2 (permalink)  
Alt 25-07-2004, 09:27
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

dann solltest du erstmal eine spalte für den spieltag einbauen

danach beschäftigst du dichmit JOINs, probierst selbständig etwas und bei fragen kommst du wieder und sagst uns was du versucht hast, was rausgekommen ist und was rauskommen sollte
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #3 (permalink)  
Alt 25-07-2004, 20:49
stressless
 Newbie
Links : Onlinestatus : stressless ist offline
Registriert seit: Jul 2004
Beiträge: 12
stressless ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok,
da man hier scheinbar auf dem "Hilf dir selber"-Trip ist, habe ich dieses nun auch versucht und hoffe jetzt eure Güte zu bekommen...

Naja, dann mal los
Also die Spalte Spieltag ist drin.
Die Problematik dürfte bekannt sein (s.o.)

Nach dem ich so einiges Joins ausprobiert habe hier einer der es schon mal in die Richting gebracht hat:

Code:
 select Name,
sum(h.tore_heim) as Heimtore, sum(h.tore_gast) as Heimgegentore, sum(g.tore_gast) as Auswaertstore,
sum(g.tore_heim) as Auswaertsgegentore,
count(sh.key_Spiele) as AnzahlHeimsiege,
count(ng.key_Spiele) as AnzahlAuswaertsniederlagen
from Verein V
left outer join Spiele h on h.key_Clubheim = V.key_verein and h.key_Spieltyp =1
left outer join Spiele g on g.key_Clubgast = V.key_verein and g.key_Spieltyp =1
left outer join Spiele sh on sh.tore_heim > sh.tore_gast and sh.key_Clubheim = V.key_verein and sh.key_Spieltyp =1
left outer join Spiele ng on ng.tore_heim > ng.tore_gast and ng.key_Clubgast = V.key_verein and ng.key_Spieltyp =1
where (V.key_Verein = h.key_Clubheim or V.key_Verein = g.key_Clubgast)
group by V.name
having (count(h.key_spiele) > 0 or count(g.key_Spiele) > 0)
Raus bekomme ich eine Lister der Vereine doch leider mit der jeweilige Gesamtzahl an Toren, Gegentore, Siegen, Niederlagen der gesamten Liga statt der einzelnen Vereine.

Ich hoffe ihr habt einen guten Tipp für mich
Mit Zitat antworten
  #4 (permalink)  
Alt 25-07-2004, 20:56
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Code:
SELECT
  v.name,
  SUM(h.tore_heim) heimtore, 
  SUM(h.tore_gast) heimgegentore,
  SUM(IF(h.tore_heim > h.tore_gast, 3, IF(h.tore_heim < h.tore_heim, 0, 1))) punkte
FROM
  verein v
  INNER JOIN spiele h ON h.key_Clubheim = V.key_verein and h.key_Spieltyp = 1
WHERE 
  h.spieltag <= 5
GROUP BY
  v.name
ORDER BY
  punkte DESC, v.name ASC
probier das mal aus

wenn's passt, dann solltest du die anzahl der siege und niederlagen analog einbauen können

und was ist key_spieltyp?


wo du allerdings den spieltag in deiner abfrage drin hast ist mir schleierhaft
__________________
Ich denke, also bin ich. - Einige sind trotzdem...

Geändert von mrhappiness (25-07-2004 um 20:58 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 25-07-2004, 21:03
stressless
 Newbie
Links : Onlinestatus : stressless ist offline
Registriert seit: Jul 2004
Beiträge: 12
stressless ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Erstmal danke für die prompte anwort. Probier es gleich aus.

Key_spieltyp ist der Typ des Spiels = Ligaspiel, Pokalspiel, Freunschaftsspiel etc.... in dem FAll LIgaspiel

Den Spieltag brauch ich erstmal nicht. Erstmal will ich eine Gesamttabelle generieren. Eine Spieltagsbezogene Tabelle kommt evtl später.

Ich probiers jetzt erstmal aus und melde mich dann nochmals
Mit Zitat antworten
  #6 (permalink)  
Alt 25-07-2004, 21:15
stressless
 Newbie
Links : Onlinestatus : stressless ist offline
Registriert seit: Jul 2004
Beiträge: 12
stressless ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Soweit so gut,
scheint zu funktionieren, allerdings generiert er mir nur die "Heimtabelle" und nicht die Gesamttabelle?

Muss ich zusätzlich noch einen Join auf key_Clubgast = key_Verein machen?? wenn ja was für einen Join,
denn mit dem gleichen kommt wieder nur Datenmüll raus...
Mit Zitat antworten
  #7 (permalink)  
Alt 25-07-2004, 21:21
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

heimtabelle?
gesamttabelle?

__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #8 (permalink)  
Alt 25-07-2004, 21:28
stressless
 Newbie
Links : Onlinestatus : stressless ist offline
Registriert seit: Jul 2004
Beiträge: 12
stressless ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hmmm,
ich habe 2 komplette Spieltag mal mit Beispielwerten gefüllt.
an einem spieltag alles spiele 0-1 an einem anderen alle spiele 2-1

In der Tabelle gibt jetzt aber Teams mit einem Punkt ???
Das kann ich mir noch nicht so recht erklären, ausserdem wird scheinbar nur ein Spiel für jedes Team berücksichtig nämlich wo das Team als key_Teamheim steht.
Nicht aber die Spiele wo das Team als key_Teamgast steht????
Mit Zitat antworten
  #9 (permalink)  
Alt 25-07-2004, 21:35
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

häng mal bitte einen dump der tabelle an
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #10 (permalink)  
Alt 25-07-2004, 21:38
stressless
 Newbie
Links : Onlinestatus : stressless ist offline
Registriert seit: Jul 2004
Beiträge: 12
stressless ist zur Zeit noch ein unbeschriebenes Blatt
Standard

CREATE TABLE Spiele (
key_spiele mediumint(9) NOT NULL auto_increment,
key_clubHeim tinyint(4) NOT NULL default '0',
key_clubGast tinyint(4) NOT NULL default '0',
Datum date NOT NULL default '0000-00-00',
Tore_Heim tinyint(4) default NULL,
Tore_Gast tinyint(4) default NULL,
key_Spieltyp tinyint(4) NOT NULL default '1',
spieltag tinyint(4) NOT NULL default '0',
Zuschauer int(11) default NULL,
PRIMARY KEY (key_spiele),
UNIQUE KEY key_spiele (key_spiele),
KEY key_spiele_2 (key_spiele)
) TYPE=MyISAM;
Mit Zitat antworten
  #11 (permalink)  
Alt 25-07-2004, 21:40
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

ein dump enthält auch noch die daten in den tabellen

geh in phpmyadmin mal auf exportieren

wähle die tabellen spiel eund verein aus und exportiere die dann mitsamt daten (Struktur und Daten)

und dann am besten anhängen
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #12 (permalink)  
Alt 25-07-2004, 21:49
stressless
 Newbie
Links : Onlinestatus : stressless ist offline
Registriert seit: Jul 2004
Beiträge: 12
stressless ist zur Zeit noch ein unbeschriebenes Blatt
Standard

CREATE TABLE Verein (
key_Verein int(11) NOT NULL auto_increment,
key_land int(11) NOT NULL default '0',
Name varchar(50) NOT NULL default '',
wappen varchar(30) NOT NULL default 'unbekannt.jpg',
PRIMARY KEY (key_Verein),
UNIQUE KEY key_Club (key_Verein),
KEY key_Club_2 (key_Verein)
) TYPE=MyISAM;

#
# Daten für Tabelle `Verein`
#

INSERT INTO Verein VALUES (1, 1, 'Sport Lisboa e Benfica', 'slb.jpg');
INSERT INTO Verein VALUES (2, 1, 'FC Alverva', 'alv.jpg');

CREATE TABLE Spiele (
key_spiele mediumint(9) NOT NULL auto_increment,
key_clubHeim tinyint(4) NOT NULL default '0',
key_clubGast tinyint(4) NOT NULL default '0',
Datum date NOT NULL default '0000-00-00',
Tore_Heim tinyint(4) default NULL,
Tore_Gast tinyint(4) default NULL,
key_Spieltyp tinyint(4) NOT NULL default '1',
spieltag tinyint(4) NOT NULL default '0',
Zuschauer int(11) default NULL,
PRIMARY KEY (key_spiele),
UNIQUE KEY key_spiele (key_spiele),
KEY key_spiele_2 (key_spiele)
) TYPE=MyISAM;

#
# Daten für Tabelle `Spiele`
#

INSERT INTO Spiele VALUES (1, 1, 35, '2004-07-25', NULL, NULL, 9, 0, 0);
INSERT INTO Spiele VALUES (2, 1, 36, '2004-07-17', 2, 0, 9, 0, 0);

Geändert von stressless (25-07-2004 um 22:57 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 25-07-2004, 21:54
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

du hast als werte für die torspalten NULL...
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #14 (permalink)  
Alt 25-07-2004, 21:57
stressless
 Newbie
Links : Onlinestatus : stressless ist offline
Registriert seit: Jul 2004
Beiträge: 12
stressless ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hier sind nicht alle Werte (sind ja insgesamt 34 Spieltag) hatte zu testzwecken nur die spieltage 30 und 31 eingesetzt.

Hier die Werte

INSERT INTO Spiele VALUES (272, 24, 47, '2005-04-24', 1, 2, 1, 30, 0);
INSERT INTO Spiele VALUES (273, 32, 25, '2005-04-24', 1, 2, 1, 30, 0);
...

Geändert von stressless (25-07-2004 um 22:57 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 25-07-2004, 22:03
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Code:
SELECT
  v.name,
  SUM(h.tore_heim) heimtore, 
  SUM(h.tore_gast) heimgegentore,
  SUM(IF(h.tore_heim > h.tore_gast, 3, IF(h.tore_heim < h.tore_gast, 0, 1))) punkte
FROM
  verein v
  INNER JOIN spiele h ON 
	(h.key_Clubheim = v.key_verein OR
	 h.key_clubgast = v.key_verein) AND
	h.key_Spieltyp = 1
GROUP BY
  v.name
ORDER BY
  punkte DESC, v.name ASC
so sollte es gehen, hab die gastmannschaft auch reingenommen und einen kleinen fehler von oben korrigiert (hab im zweiten IF tore_heim mit tore_heim verglichen, was etwas blöd war)
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

OnPremise versus Cloud - das richtige System finden
Wir beleuchten in diesem Artikel, die Vor- und Nachteile für Cloud oder OnPremise Systemen. Und warum es definitiv Zeit wird in die Cloud zu wechseln.

09.05.2022 | julia_mjr

Warum Texterstellung mit künstlicher Intelligenz richtig gut ist
Warum Texterstellung mit künstlicher Intelligenz richtig gut istKünstliche Intelligenz ist dabei, die Welt zu erobern. Die größten Unternehmen entwickeln Systeme, die einen Text für Sie schreiben können. Und sie machen das sehr gut.

05.01.2022 | Berni


 

Aktuelle PHP Scripte

MyPHPlib-Bibliotheksverwaltung

MyPHPlib ist eine Scriptsammlung, mit der die Bibliotheksverwaltung incl. Ausleihe und Recherche gelingt. Die Scriptsammlung wird seit Mitte 2005 entwickelt und ist besonders an den Bedürfnissen von Schulen angepasst.

11.08.2022 RobertG | Kategorie: PHP/ Management
responsive vertikales Menu

Diese Menu basiert auf php, jQuery, css und ajax. Wer sein Menu mit nested sets vertikal realisieren will, findet darin eine gute Lösung.

11.08.2022 COVISIONMEDIA | Kategorie: JAVASCRIPT/ Navigation
VIZUKA Affiliate CMS & Preisvergleich Portal ansehen VIZUKA Affiliate CMS & Preisvergleich Portal

Produktkalalog mit Preisvergleichfunktion, Gutscheinverwaltung und umfangreichem CMS. Live-Produktdaten! Nischen- oder Allg. Produktkatalog von hunderten Shops und über 60 Millionen Produkte mit wenigen Klicks erstellen. Mitglieder- & Werbekundenbereich.

10.08.2022 VIZUKA | Kategorie: PHP/ Affiliate-Programme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:04 Uhr.