SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 08.09.2010, 11:41:29
Lordwurst Lordwurst ist offline
Anfänger
 
Registriert seit: Sep 2010
Alter: 35
Beiträge: 4
Habe ein problem mit MySQL

Hallo alle zusammen,
Habe folgendes Problem. Ich bin zurzeit dabei eine Internet Seite zu bauen die die Tabelle der Bundesliga anzeigt. Ich habe folgende Tabellen:

Tabelle spiel:
id, (primary key)
spieltagID,
heimmannschaftID, (foreign key mannschaft)
gastmannschaftID, (foreign key mannschaft)
spielbeginn,
toreHeim,
toreGast,
spielStatus

und Tabelle mannschaft:
id, (primary key)
name,
kuerzel

Was ich nun versuche ist die toreHeim und toreGast für jede Mannschaft zusammen zu zählen und aus zu lesen. Sprich denn in der Tabelle HSV:Berlin 3:2 und HSV:Hannover 2:2 gespielt hat muss in der end Tabelle HSV 5:4 Tore haben und 4 Punkte, Berlin 2:3 Tore und 0 Punkte und Hannover 2:2 mit 1 punkt.

Nun habe ich schon das halbe Internet durch sucht auch ab und an was gefunden war aber leider nicht in der Lage es auf meine Tabellen Strukturen umzubauen. Was ich Bräuchte wäre ein MySQL_query oder Statement das mir das ausrechnet.
Kann mir einer weiter helfen, oder mir sagen wie so ein Statement aufgebaut wird?

Vielen Dank für alle antworten
Mit Zitat antworten
  #2  
Alt 08.09.2010, 12:02:28
jabubo jabubo ist offline
Anfänger
 
Registriert seit: Aug 2010
Alter: 43
Beiträge: 27
AW: Habe ein problem mit MySQL

Da es 2 verschiedene Konstellationen gibt (Heim und Auswärtsspiel) benötigst du ein UNION:
Code:
SELECT heim.toreHeim+gast.toreGast as toreErzielt, heim.toreGast+gast.toreHeim as toreBekommen FROM 
   (SELECT SUM(toreHeim) as toreHeim, SUM(toreGast) as toreGast FROM spiel WHERE heimmannschaftId=123) heim
   UNION
   (SELECT SUM(toreHeim) as toreHeim, SUM(toreGast) as toreGast FROM spiel WHERE gastmannschaftId=123) gast
Für die Berechnung der Punkte brauchst du ebenfalls ein solches Statement. Probierst du dich selber daran?
__________________
PHP online testen, zum Beispiel: md5, sha1, base64_decode, preg_match, urldecode und viele weitere...
Mit Zitat antworten
  #3  
Alt 08.09.2010, 12:05:27
Lordwurst Lordwurst ist offline
Anfänger
 
Registriert seit: Sep 2010
Alter: 35
Beiträge: 4
AW: Habe ein problem mit MySQL

Waow danke, hätte nicht gedacht dass das so schnell geht. Ja sowas ähnliches hatte ich schon mal gesehen. Vielen Dank noch mal dann versuche ich mich mal an die punkte. :D
Mit Zitat antworten
  #4  
Alt 10.09.2010, 12:07:35
Lordwurst Lordwurst ist offline
Anfänger
 
Registriert seit: Sep 2010
Alter: 35
Beiträge: 4
AW: Habe ein problem mit MySQL

Moin, habe dein script heute mal eingebaut und versuch zum laufen zubekommen. Bekomme aber leider in mysql syntax error:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'gast' at line 4 "

bin mir jetzt nich ganz sicher was ich da machen muss? kannst mir da noch mal helfen?

Danke

p.s. das ist was ich für die punkte berechnung habe

SELECT
(
SELECT
SUM(IF(toreHeim>toreGast,3,IF(toreHeim<toreGast,0,1)))
FROM
spiel
WHERE
heimmannschaftID = MANNSCHAFTS_ID
)
+
(
SELECT
SUM(IF(toreGast>toreHeim,3,IF(toreGast<toreHeim,0,1)))
FROM
spiel
WHERE
gastmannschaftID = MANNSCHAFTS_ID
)
Mit Zitat antworten
  #5  
Alt 10.09.2010, 12:24:12
jabubo jabubo ist offline
Anfänger
 
Registriert seit: Aug 2010
Alter: 43
Beiträge: 27
AW: Habe ein problem mit MySQL

Das Query ist wieder ungetestet, aber sollte besseren Dienst tun:

Code:
SELECT SUM(toreHeim) as toreErzielt, SUM(toreGast) as toreBekommen FROM (
   (SELECT SUM(toreHeim) as toreHeim, SUM(toreGast) as toreGast FROM spiel WHERE heimmannschaftId=123)
   UNION
   (SELECT SUM(toreHeim) as toreGast, SUM(toreGast) as toreHeim FROM spiel WHERE gastmannschaftId=123)
)
__________________
PHP online testen, zum Beispiel: md5, sha1, base64_decode, preg_match, urldecode und viele weitere...
Mit Zitat antworten
  #6  
Alt 10.09.2010, 14:46:45
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Habe ein problem mit MySQL

Zitat:
Zitat von Lordwurst Beitrag anzeigen
Hallo alle zusammen,
Habe folgendes Problem. Ich bin zurzeit dabei eine Internet Seite zu bauen die die Tabelle der Bundesliga anzeigt. Ich habe folgende Tabellen:
Dazu mal eine alternative Idee. Ich habe mal versucht, alle Daten komplett mit einem SQL zu ermitteln und auszugeben.

Testdaten:

Code:
CREATE TABLE mannschaft (
 id INT NOT NULL,
 name VARCHAR(50) NOT NULL,
 kurzel VARCHAR(10) NOT NULL,
 
 PRIMARY KEY (id)
 
);

INSERT INTO mannschaft VALUES 
( 1, 'HSV','HSV'),
( 2, 'Berlin','B'),
( 3, 'Hannover','H');


CREATE TABLE spieltag (

 id INT NOT NULL,
 spieltagID INT NOT NULL, 
 heimmannschaftID INT NOT NULL,
 gastmannschaftID INT NOT NULL,
 spielbeginn TIME, 
 toreHeim INT NOT NULL, 
 toreGast INT NOT NULL, 
 spielStatus INT,
 
 PRIMARY KEY (id),
 CONSTRAINT fk_spieltag_01
  FOREIGN KEY (heimmannschaftID)
   REFERENCES mannschaft (id),
 CONSTRAINT fk_spieltag_02
  FOREIGN KEY (gastmannschaftID)
   REFERENCES mannschaft (id)
);

INSERT INTO spieltag VALUES 
(1 , 1, 1, 2, NULL, 3, 2, 0),
(2 , 2, 1, 3, NULL, 2, 2, 0);


Zitat:
Zitat von Lordwurst Beitrag anzeigen
Was ich nun versuche ist die toreHeim und toreGast für jede Mannschaft zusammen zu zählen und aus zu lesen. Sprich denn in der Tabelle HSV:Berlin 3:2 und HSV:Hannover 2:2 gespielt hat muss in der end Tabelle HSV 5:4 Tore haben und 4 Punkte, Berlin 2:3 Tore und 0 Punkte und Hannover 2:2 mit 1 punkt.
Dazu folgenden SQL, er ist ein bißchen größer geworden. Meiner Meinung müßte das Tabellenmodell weiter normalisiert werden.

Code:
SELECT name, 
       COALESCE(heim.tore_erzielt,0) + COALESCE(gast.tore_erzielt,0) AS tore_erzielt, 
       COALESCE(heim.tore_bekommen,0) + COALESCE(gast.tore_bekommen,0) AS tore_bekommen,
       punkte.punkte
  FROM mannschaft m
  LEFT JOIN ( SELECT heimmannschaftID, 
                     SUM(toreHeim) AS tore_erzielt, 
                     SUM(toreGast) AS tore_bekommen
                FROM spieltag
               GROUP BY heimmannschaftID ) heim
    ON m.id = heim.heimmannschaftID               
  LEFT JOIN ( SELECT gastmannschaftID, 
                     SUM(toreGast) AS tore_erzielt, 
                     SUM(toreHeim) AS tore_bekommen
                FROM spieltag
               GROUP BY gastmannschaftID ) gast
    ON m.id = gast.gastmannschaftID
  LEFT JOIN (
        SELECT id, SUM(punkte) AS punkte
          FROM (         
               SELECT heimmannschaftID AS id,
                      CASE
                       WHEN toreHeim > toreGast THEN 3
                       WHEN toreHeim = toreGast THEN 1
                       ELSE 0
                      END punkte
                 FROM spieltag 
                 
               UNION ALL
               
               SELECT gastmannschaftID AS id,       
                     CASE
                       WHEN toreHeim < toreGast THEN 3
                       WHEN toreHeim = toreGast THEN 1
                       ELSE 0
                      END punkte
                 FROM spieltag 
             ) punkte
        GROUP BY id 
       ) punkte
     ON punkte.id = m.id    
ORDER BY punkte DESC;
  
+----------+--------------+---------------+--------+
| name     | tore_erzielt | tore_bekommen | punkte |
+----------+--------------+---------------+--------+
| HSV      |            5 |             4 |      4 |
| Hannover |            2 |             2 |      1 |
| Berlin   |            2 |             3 |      0 |
+----------+--------------+---------------+--------+
3 rows in set (0.00 sec)
So oder ähnlich was sollte das Ergebnis aussehen.

Grüße
Thomas
Mit Zitat antworten
  #7  
Alt 13.09.2010, 12:03:34
Lordwurst Lordwurst ist offline
Anfänger
 
Registriert seit: Sep 2010
Alter: 35
Beiträge: 4
AW: Habe ein problem mit MySQL

Zitat:
Zitat von thomas_w Beitrag anzeigen
Dazu mal eine alternative Idee. Ich habe mal versucht, alle Daten komplett mit einem SQL zu ermitteln und auszugeben.

Testdaten:

Code:
CREATE TABLE mannschaft (
 id INT NOT NULL,
 name VARCHAR(50) NOT NULL,
 kurzel VARCHAR(10) NOT NULL,
 
 PRIMARY KEY (id)
 
);

INSERT INTO mannschaft VALUES 
( 1, 'HSV','HSV'),
( 2, 'Berlin','B'),
( 3, 'Hannover','H');


CREATE TABLE spieltag (

 id INT NOT NULL,
 spieltagID INT NOT NULL, 
 heimmannschaftID INT NOT NULL,
 gastmannschaftID INT NOT NULL,
 spielbeginn TIME, 
 toreHeim INT NOT NULL, 
 toreGast INT NOT NULL, 
 spielStatus INT,
 
 PRIMARY KEY (id),
 CONSTRAINT fk_spieltag_01
  FOREIGN KEY (heimmannschaftID)
   REFERENCES mannschaft (id),
 CONSTRAINT fk_spieltag_02
  FOREIGN KEY (gastmannschaftID)
   REFERENCES mannschaft (id)
);

INSERT INTO spieltag VALUES 
(1 , 1, 1, 2, NULL, 3, 2, 0),
(2 , 2, 1, 3, NULL, 2, 2, 0);




Dazu folgenden SQL, er ist ein bißchen größer geworden. Meiner Meinung müßte das Tabellenmodell weiter normalisiert werden.

Code:
SELECT name, 
       COALESCE(heim.tore_erzielt,0) + COALESCE(gast.tore_erzielt,0) AS tore_erzielt, 
       COALESCE(heim.tore_bekommen,0) + COALESCE(gast.tore_bekommen,0) AS tore_bekommen,
       punkte.punkte
  FROM mannschaft m
  LEFT JOIN ( SELECT heimmannschaftID, 
                     SUM(toreHeim) AS tore_erzielt, 
                     SUM(toreGast) AS tore_bekommen
                FROM spieltag
               GROUP BY heimmannschaftID ) heim
    ON m.id = heim.heimmannschaftID               
  LEFT JOIN ( SELECT gastmannschaftID, 
                     SUM(toreGast) AS tore_erzielt, 
                     SUM(toreHeim) AS tore_bekommen
                FROM spieltag
               GROUP BY gastmannschaftID ) gast
    ON m.id = gast.gastmannschaftID
  LEFT JOIN (
        SELECT id, SUM(punkte) AS punkte
          FROM (         
               SELECT heimmannschaftID AS id,
                      CASE
                       WHEN toreHeim > toreGast THEN 3
                       WHEN toreHeim = toreGast THEN 1
                       ELSE 0
                      END punkte
                 FROM spieltag 
                 
               UNION ALL
               
               SELECT gastmannschaftID AS id,       
                     CASE
                       WHEN toreHeim < toreGast THEN 3
                       WHEN toreHeim = toreGast THEN 1
                       ELSE 0
                      END punkte
                 FROM spieltag 
             ) punkte
        GROUP BY id 
       ) punkte
     ON punkte.id = m.id    
ORDER BY punkte DESC;
  
+----------+--------------+---------------+--------+
| name     | tore_erzielt | tore_bekommen | punkte |
+----------+--------------+---------------+--------+
| HSV      |            5 |             4 |      4 |
| Hannover |            2 |             2 |      1 |
| Berlin   |            2 |             3 |      0 |
+----------+--------------+---------------+--------+
3 rows in set (0.00 sec)
So oder ähnlich was sollte das Ergebnis aussehen.

Grüße
Thomas
Jo vielen dank. Das geht alles. :D woa ich bin so happy, vielen Dank noch mal. noch mal ne andere frage kann du mir vielleicht ne internet seite mit gutten toturials oder ein buch vorschlagen wo ich mir sowas oder überhaupt meinen php code verbessern kann?

Noch mals Danke für die hilfe
Mit Zitat antworten
  #8  
Alt 13.09.2010, 12:57:03
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Habe ein problem mit MySQL

Zitat:
Zitat von Lordwurst Beitrag anzeigen
Jo vielen dank. Das geht alles. :D woa ich bin so happy, vielen Dank noch mal. noch mal ne andere frage kann du mir vielleicht ne internet seite mit gutten toturials oder ein buch vorschlagen wo ich mir sowas oder überhaupt meinen php code verbessern kann?

Noch mals Danke für die hilfe
Also eine Seite mit PHP-Tipps hast Du ja schon gefunden. Siehe SELFPHP ... (Menü links)

Ansonsten habe ich PHP gelernt, indem ich mir ein schönes Projekt auf SourceForge gesucht habe und dort eine Weile mitgemacht habe. Ein kleines modernes Projekt - zum Lernen wie man's macht -wäre beispielsweise: http://rsslounge.aditu.de/

Aber von alleine klappt das mit dem PHP-Lernen nicht, da muss man schon richtig Zeit reinstecken, wenn man professionelle Ergebnisse möchte.

Viel Erfolg!

Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.

Geändert von thomas_w (13.09.2010 um 13:08:23 Uhr) Grund: Schreibfehler
Mit Zitat antworten
  #9  
Alt 13.09.2010, 14:47:33
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: Habe ein problem mit MySQL

Zitat:
Zitat von Lordwurst Beitrag anzeigen
internet seite mit gutten toturials
schau mal hier unter punkt d.

cx
Mit Zitat antworten
Antwort

Stichworte
mysql, php, tabelle


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Brauche Hilfe Partygirl MySQLi/PDO/(MySQL) 10 01.03.2011 08:18:11
Problem altes Script neue Mysql Version bekasu MySQLi/PDO/(MySQL) 1 06.03.2010 16:24:38
Problem mit MySQL in Typo3-CMS yamukud MySQLi/PDO/(MySQL) 0 09.10.2009 13:21:18
Eigenes CMS - MySQL Problem Tedd PHP Grundlagen 2 25.05.2005 16:41:51
mysql abfrage problem Stifler PHP Grundlagen 2 03.08.2004 10:12:20


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt