Antworten auf deine Fragen:
Neues Thema erstellen

Komplexe Mysql Abfrage

Blackout289

Nicht mehr ganz neu hier

Hallo Leute,
habe mir hier eine Mysql Abfrage gebastelt. Jedoch würde ich diese gern optimieren. Also mit Joins usw. Jedoch weiß ich noch nicht wirklich wie ich das hier machen kann.
kann mir evtl jmd helfen oder einen Tipp geben?

PHP:
$getnick= mysql_query("SELECT id FROM ts_user WHERE nick = '$nick'");
            while($row = mysql_fetch_object($getnick))
        {
$userid = $row->id;

    $getpoints= "SELECT SUM(`points`) FROM ts_tipps WHERE `uid` = '$userid'";
    $getpoints1 = mysql_query($getpoints);
        while ($summe = mysql_fetch_array($getpoints1)) {
            $userpunkteall = $summe[0]; 
      
          echo '
<table id="spielplan3" cellspacing="11">
<thead>
<tr>
<th>ID</th>
<th>Anstoss</th>
<th>Spiel</th>
<th>Dein Tipp</th>
<th>Das Ergebnis</th>
<th>Punkte '.$userpunkteall.'</th>
</tr>
</thead>
<tbody>';
        }
    $getnick2= mysql_query("SELECT * FROM ts_spiele");
                while($row2 = mysql_fetch_object($getnick2))
        {
$gameid2 = $row2->id;
$heimid = $row2->heim;
 $gastid = $row2->gast;
    $gamestart = $row2->gamestart;
            
    $getnick3= mysql_query("SELECT team FROM ts_teams WHERE id = $heimid");
                while($row3 = mysql_fetch_object($getnick3))
        {
                    $heim = $row3->team;
    $getnick4= mysql_query("SELECT team FROM ts_teams WHERE id = $gastid");
                while($row4 = mysql_fetch_object($getnick4))
    {
                $gast = $row4->team;

        
        $getnick5= mysql_query("SELECT heim, gast, points FROM ts_tipps WHERE uid = '$userid' AND gid = $gameid2");
                    while($row5 = mysql_fetch_object($getnick5))
    {
 $heimt = $row5->heim;
$gastt = $row5->gast;
 $userpunkte = $row5->points;
        }
        
        
        $getnick6= mysql_query("SELECT heim, gast FROM ts_ergeb WHERE gid = $gameid2");
                    while($row6 = mysql_fetch_object($getnick6))
    {
 $heime = $row6->heim;
        
        $gaste = $row6->gast;
Dankeschön Black
 

Duddle

Posting-Frequenz: 14µHz

AW: Komplexe Mysql Abfrage

Wenn du die Datenbankstruktur, also welche Tabellen mit welchen Spalten gibt es, so weit wie nötig offenlegst, plus deine Anforderungen, wäre es einfacher zu überblicken.


Duddle
 

Blackout289

Nicht mehr ganz neu hier

AW: Komplexe Mysql Abfrage

Ja klar:
Also es handelt sich um ein Tippspiel bzw ne überarbeitung von meinem alten.
Es gibt 5 Tabellen:
User (userid, nickname)
Teams (teamid, teamname)
Spiele (heimid, gastid, anpfiff..)
Ergebnisse (spielid heim und gast)
Tipps (spielid, userid, heim, gast)

Ich weiß noch die aufteilung so gut geregelt ist, verbesserungsvorschläge erwünscht =).
Mein Hauptproblem ist einfach, dass dies so viele Querys sind und diese sich ja zusammenfassen lassen soweit ich weiß oO

Fehlt noch was?

MFG
 

Duddle

Posting-Frequenz: 14µHz

AW: Komplexe Mysql Abfrage

Und was für Informationen willst du nachher auf dem Bildschirm stehen haben?


Duddle
 

Blackout289

Nicht mehr ganz neu hier

AW: Komplexe Mysql Abfrage

Ungefähr so

tippspiel.PNG


Also so isst es gerade, funktioniert ja auch wunderbar, es geht ja nur darum, wie ich die Variablen bekomme.

MFG =)
 

saila

Moderatorle

AW: Komplexe Mysql Abfrage

Hi,

du schreibst von komplexer sql-Abfrage, nennst jedoch im Thread dann auch gleich den Lösungsansatz.

Die Frage ist nun - willst du das dir hier jemand den Query mitteilt oder beginnst du selbst mal mit einem Vorschlag, wie dein Select inkl. Join's aussehen könnte?

Letztlich ist es für dich wohl einfacher, einen Lösungsansatz zu liefern, als für "Aussenseiter" deiner DB. Denn du kannst auf vorhandene Teilergebnisse bereits zugreifen.

Wenn du Fragen zu Join's hast, dann lese bitte bei MySQL Query Analyzer - Verbessern Sie die Performanz Ihrer SQL-Abfragen wie sich ein Join aufbaut und welche Variationen es gibt. Versuche erste Joins (als SELECT) zu bauen und zu testen (weil du per select keine DB-Inhaltsveränderungen vornehmen kannst) und du wirst dann letztlich auch die Ergebnisse sehen.

Wenn du dann nicht weiter kommst, melde dich.
 

Christian

verpeilt & verschallert

AW: Komplexe Mysql Abfrage

Ich hab einfach mal frei Schnauze gearbeitet:
PHP:
$getnick = mysql_query("SELECT 
    tu.id,
    (SELECT SUM(tt.points) FROM ts_tipps tt WHERE tt.uid = tu.id GROUP BY tt.uid) AS userpunkteall 
FROM ts_user tu
WHERE tu.nick = '$nick'") or die(mysql_error());
if (mysql_num_rows($getnick) < 1) {
    die('Nutzer nicht gefunden');
}
$row = mysql_fetch_object($getnick);
$userid = $row->id;
$userpunkteall = $row->userpunkteall;
echo '
<table id="spielplan3" cellspacing="11">
<thead>
<tr>
<th>ID</th>
<th>Anstoss</th>
<th>Spiel</th>
<th>Dein Tipp</th>
<th>Das Ergebnis</th>
<th>Punkte ' . $userpunkteall . '</th>
</tr>
</thead>
<tbody>';
$getnick2 = mysql_query("SELECT 
    	t.id,
    	t.gamestart,
    	h.team AS heim,
    	g.team AS gast,
    	tp.heim as heimt,
    	tp.gast as gastt,
    	tp.points as userpunkte,
    	te.heim as heime,
    	te.gast as gaste
    FROM ts_spiele t
    LEFT JOIN ts_teams h ON t.heim = h.id
    LEFT JOIN ts_teams g ON t.gast = g.id
    LEFT JOIN ts_tipps tp ON t.ID = tp.gid AND tp.gid = {$userid}
    LEFT JOIN ts_ergeb te ON t.ID = te.gid") or die(mysql_error());
while (false !== ($row2 = mysql_fetch_object($getnick2))) {
    $gameid2 = $row2->id;
    $gamestart = $row2->gamestart;
    $heim = $row2->heim;
    $gast = $row2->gast;
    $heimt = $row2->heimt;
    $gastt = $row2->gastt;
    $userpunkte = $row2->userpunkte;
    $heime = $row2->heime;
    $gaste = $row2->gaste;
}

Ich weiß nicht was genau alles in den einzelnen Feldern steht, es interessiert mich im Grunde auch nicht, aber ich hab einfach mal willkürlich alles, wo ich mir sicher bin, dass es nicht gebraucht wird, radikal zusammengekürzt.
 
Zuletzt bearbeitet:

Blackout289

Nicht mehr ganz neu hier

AW: Komplexe Mysql Abfrage

DANKESCHÖÖÖN!!!!! =)
Genau das hab ich gesucht.
Funktioniert auch Prima bis auf einen kleinen Fehler (hab noch keine anderen entdeckt^^)
PHP:
    LEFT JOIN ts_tipps tp ON t.ID = tp.gid AND tp.uid = {$userid}
statt
PHP:
    LEFT JOIN ts_tipps tp ON t.ID = tp.gid AND tp.gid = {$userid}
Einfach so mal runtergeschrieben. *__*
Respekt!
danke =)

MFG
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben