Blackwane: 2 MYSQL Abfragen

Meine MYSQL Daten: MySQL - 5.0.32-Debian_7etch10-log

Nabend,

ich möchte gerne 2 MYSQL Abfragen zusammen fügen. Und hoffe das jemand eine Idee hat, wie ich es realisieren kann.

Hier mal meine gekürzten MYSQL Abfragen:

<?php  
$result_score = mysql_query("SELECT SUM(globalScore) as summe_globalScore FROM stat_playerAtt");  
if (!$result_score) {  
echo 'Die Abfrage konnte nicht ausgeführt werden.';  
} else {  
$summen_score = mysql_fetch_assoc($result_score);  
}  
?>

und

<?php  
$result_score = mysql_query("SELECT SUM(roadtojalalabadTime) as summe_roadtojalalabadTime FROM stat_Maps");  
if (!$result_score) {  
echo 'Die Abfrage konnte nicht ausgeführt werden.';  
} else {  
$summen_score = mysql_fetch_assoc($result_score);  
}  
?>

Das sind meine 2 Abfragen aus 2 verschiedenen Tabellen. Ich habe schon bei google gesucht und folgenden Tip gefunden.

<?php  
  
$query1 = mysql_query(SELECT * FROM `einsatz`);  
$query2 = mysql_query(SELECT * FROM `datails`);  
  
while(mysql_fetch_array($query1) AND mysql_fetch_array($query2))  
    {  
// Tabelle erstellen ....  
    }  
  
?> 

Nur leider bekomme ich das so nicht hin.
Fehler: Die Abfrage konnte nicht ausgeführt werden.

Hier mal meine Kompletten MYSQL abfragen, also ungekürzt.
http://joomlachat.de.pastebin.com/d1052905

Ich hoffe jemand hat eine Idee, wie ich das umsetzten kann.

Vielen Dank erstmal für eure Hilfe

mfg Blackwane

  1. Moin Moin!

    Suchst Du vielleicht UNION?

    Ich weiß nicht, ob MySQL SELECT ... UNION SELECT ... überhaupt kann, das steht im Handbuch. Und ob das mit Aggregatfunktionen auch noch funktioniert, steht dort auch.

    SELECT * ist generell eine sehr schlechte Idee, das wurde hier bereits bis zum Erbrechen ausdiskutiert.

    Auch fehlen in dem Fetzen, den Du aus der allwissenden Müllhalde gezogen hast, die Quotes rund um das SQL-Statement, das wird so ohnehin nicht laufen.

    Die Fehlermeldung hast Du selbst geschrieben, die ist also wenig hilfreich. Warum gibst Du nicht stattdessen den Fehler aus, den MySQL zurückgegeben hat? Wie das geht, steht in der PHP-Dokumentation.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Hallöchen,

      Suchst Du vielleicht UNION?

      Ich weiß nicht, ob MySQL SELECT ... UNION SELECT ... überhaupt kann, das steht im Handbuch. Und ob das mit Aggregatfunktionen auch noch funktioniert, steht dort auch.

      Mit UNION habe ich es versucht, aber es funktioniert nicht. Die 2te Abfrage wird dann nicht ausgeführt.

      SELECT * ist generell eine sehr schlechte Idee, das wurde hier bereits bis zum Erbrechen ausdiskutiert.

      hm... wo steht bei mir  SELECT * ?

      Auch fehlen in dem Fetzen, den Du aus der allwissenden Müllhalde gezogen hast, die Quotes rund um das SQL-Statement, das wird so ohnehin nicht laufen.

      Ich habe wohl vergessen zu erwähnen, das ich erst seid 1 Woche MYSQL lerne^^
      Wie würdes du denn diese abfragen machen?
      Ein Beispiel wäre mir sehr Hilfreich.

      Vielen Dank für die Hilfe

      mfg Blackwane

    2. yo,

      Suchst Du vielleicht UNION?

      UNION wäre hier fatal und falsch, wenn dann UNION ALL

      SELECT SUM(globalScore) Summe, 'stat_playerAtt' Tabelle
      FROM stat_playerAtt
      UNION ALL
      SELECT SUM(roadtojalalabadTime), 'stat_Maps'
      FROM stat_Maps
      ;

      Ilja

      1. Hallöchen,

        SELECT SUM(globalScore) Summe, 'stat_playerAtt' Tabelle
        FROM stat_playerAtt
        UNION ALL
        SELECT SUM(roadtojalalabadTime), 'stat_Maps'
        FROM stat_Maps
        ;

        Sieht gut aus, in phpmyadmin funktioniert es.
        Ich glaube aber ich mache irgendwas noch beim code falsch.
        Hier mal mein Code:

        result_score = mysql_query("SELECT SUM(globalScore), 'stat_playerAtt' FROM stat_playerAtt")  
        UNION ALL  
        $result_score = mysql_query("SELECT SUM(roadtojalalabadTime), 'stat_Maps' FROM stat_Maps");  
        if (!$result_score) {  
        echo 'Die Abfrage konnte nicht ausgeführt werden.';  
        } else {  
        $summen_score = mysql_fetch_assoc($result_score);  
        }
        

        Kommt das UNION ALL da überhaupt hin?

        Vielen Dank

        mfg Blackwane

        1. Moin Moin!

          result_score = mysql_query("SELECT SUM(globalScore), 'stat_playerAtt' FROM stat_playerAtt")

          UNION ALL
          $result_score = mysql_query("SELECT SUM(roadtojalalabadTime), 'stat_Maps' FROM stat_Maps");
          if (!$result_score) {
          echo 'Die Abfrage konnte nicht ausgeführt werden.';
          } else {
          $summen_score = mysql_fetch_assoc($result_score);
          }

          
          >   
          > Kommt das UNION ALL da überhaupt hin?  
            
          Du fragst uns, wie man aus ZWEI Abfragen EINE baut. Und Dein neuer Code hat weiterhin ZWEI Abfragen? Und PHP mault fürchterlich rum, weil Du nach PHPs Meinung wirres Zeug redest. Wie mag da wohl die Antwort lauten?  
            
          Und mal so am Rande: Gib im Fehelrfall die [MySQL-Fehlermeldung](http://www.php.net/manual/en/function.mysql-error.php) aus, sonst rätst Du nur sinnlos rum!  
            
          Alexander
          
          -- 
          Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
          
          1. Okay,

            ich bin jetzt weiter gekommen. Jetzt habe ich nur noch eine MYSQL abfrage.
            Jedoch möchte er mir nicht die 2te abfrage anzeigen lassen.
            Ich bekomme auch keine fehlermeldung, hier mal meine PHP Datei.

            <?php  
            //hier Datenbank angaben  
            $host = "localhost"; // Adresse des Datenbankservers, meistens localhost  
            $user = "******"; // Ihr MySQL Benutzername  
            $pass = "******"; // Ihr MySQL Passwort  
            $db = "bf2"; // Name der Datenbank  
              
            $link = mysql_connect($host, $user, $pass) or die ("Keine Verbindung zu der Datenbank möglich.");  
            mysql_select_db($db, $link);  
              
            $result_score = mysql_query("  
            SELECT SUM(globalScore) as summe_globalScore, 'stat_playerAtt' FROM stat_playerAtt  
            UNION ALL  
            SELECT SUM(kubradamWins) as summe_kubradamWins, 'stat_Maps' FROM stat_Maps");  
            if (!$result_score) {  
            echo 'Die Abfrage konnte nicht ausgeführt werden.';  
            } else {  
            $summen_score = mysql_fetch_assoc($result_score);  
            }  
            ?>  
              
            <table width="100%" border="1">  
              <tr>  
                <td><?php echo $summen_score['summe_globalScore'] ?></td>  
                <td><?php echo $summen_score['summe_kubradamWins'] ?></td>  
              </tr>  
            </table>
            

            So sollte es doch eig. funktionieren.
            Er zeigt mir aber nur das ergebniss von
            ?php echo $summen_score['summe_globalScore'] ?>
            an.

            mfg Blackwane

            1. Hallöchen,

              also ich bin jetzt den ganzen Tag nur an dieser einen Sache. Probiere hier und da alles aus, was ich weiß. Bei google habe ich auch schon Stunden gesucht. Ich versteh nicht wieso er die 2te Abfrage nicht anzeigen möchte.
              Ich hoffe ihr könnt mir nochmal bei meinem Problem helfen.

              Hier nochmal meine Datei:

              <?php  
              //hier Datenbank angaben  
              $host = "localhost"; // Adresse des Datenbankservers, meistens localhost  
              $user = "******"; // Ihr MySQL Benutzername  
              $pass = "******"; // Ihr MySQL Passwort  
              $db = "bf2"; // Name der Datenbank  
                
              $link = mysql_connect($host, $user, $pass) or die ("Keine Verbindung zu der Datenbank möglich.");  
              mysql_select_db($db, $link);  
                
              $result_score = mysql_query("  
              SELECT SUM(globalScore) as summe_globalScore, 'stat_playerAtt' FROM stat_playerAtt  
              UNION ALL  
              SELECT SUM(kubradamWins) as summe_kubradamWins, 'stat_Maps' FROM stat_Maps");  
              if (!$result_score) {  
              echo 'Die Abfrage konnte nicht ausgeführt werden.';  
              } else {  
              $summen_score = mysql_fetch_assoc($result_score);  
              }  
              ?>  
                
              <table width="100%" border="1">  
                <tr>  
                  <td><?php echo $summen_score['summe_globalScore'] ?></td>  
                  <td><?php echo $summen_score['summe_kubradamWins'] ?></td>  
                </tr>  
              </table>
              

              Vielen Dank für eure Hilfe

              mfg Blackwane

        2. yo,

          Sieht gut aus, in phpmyadmin funktioniert es.
          Ich glaube aber ich mache irgendwas noch beim code falsch.

          grundsätzlich sollte man immer unterscheiden, ob man ein problem mit einer sql anweisung hat oder mit dem php code. wenn es mit phpmyadmin geht, dann ist das ein guter hinweis, dass die sql anweisung gut ist und das problem am php code liegt. und dafür gibt es bessere spezialisten als mich, meine "arbeit" ist getan. ;-)

          Ilja

  2. Mahlzeit Blackwane,

    Ich hoffe jemand hat eine Idee, wie ich das umsetzten kann.

    Nachdem ich mir den gesamten bisherigen Thread durchgelesen habe, ist mir immer noch nicht klar, was Du *eigentlich* willst ... vielleicht solltest Du einmal *kurz* *fachlich* beschreiben, was Du mit den Daten überhaupt anfangen willst - ich bin mir *sehr* sicher, dass es einen viel besseren Lösungsweg zum Erreichen Deines *eigentlichen* Ziels gibt.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|