[MySQL 4.0] Vereinfachung der Abfrage?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL 4.0] Vereinfachung der Abfrage?

    Hallo,
    aus einem kurzen Gespräch mit einem Sitznachbar im Zug habe ich herrausgehört, das meine MySQL abfragen wohl viel zu kompliziert mache :-(

    Als Beispiel, ich habe mehrer Tabellen:

    Tabelle 1 - sendung:
    id = 1
    titel = American Chopper
    info = [longtext mit einer Beschreibung der Sendung]

    Tabelle 2 - kategorien
    id = 5
    kat = Doku Soap

    Tabelle 3 - kat_zu (Kategorie Zurodnung)
    id = 1
    sendung_id = 1
    kat_id = 5

    Tabelle 4 - sender
    id = 4
    name = DMAX

    Tabelle 5 - sendezeiten
    id = 10
    sendung_id = 1
    sender_id = 4
    time = 01.04.2007 19:00 Uhr


    So jetzt möchte ich gerne alle Informationen zusammenhängend ausgegeben haben, also rufe ich die Infos einzeln aus den Tabelle ab:

    PHP-Code:
    <?PHP
    $abfrage 
    "SELECT * FROM sendung WHERE id=1";
    $ergebnis mysql_query($abfrage);
    $row mysql_fetch_object($ergebnis);

    $id $row->id;
    $titel $row->titel;
    $info  $row->info;

    $abfrage "SELECT * FROM kat_zu WHERE sendung_id=$id";
    $ergebnis mysql_query($abfrage);
    $row mysql_fetch_object($ergebnis);

    $abfrage "SELECT * FROM kategorien WHERE id=$row->kat_id";
    $ergebnis mysql_query($abfrage);
    $row mysql_fetch_object($ergebnis);

    $kat $row->kat;

    $abfrage "SELECT * FROM sendezeiten WHERE sendung_id=$id";
    $ergebnis mysql_query($abfrage);
    $row mysql_fetch_object($ergebnis);

    $startzeit $row->time;
    $senderid $row->sender_id;

    $abfrage "SELECT * FROM sender WHERE id=$senderid";
    $ergebnis mysql_query($abfrage);
    $row mysql_fetch_object($ergebnis);

    $sender $row->name;

    ?>

    Geht sowas nicht einfacher?

  • #2
    naja, ob jetzt ein großer Join besser ist als die 4 Queries wage ich fast zu bezweifeln...

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Original geschrieben von ghostgambler
      naja, ob jetzt ein großer Join besser ist als die 4 Queries wage ich fast zu bezweifeln...
      wieso? ich würde das gegenteil behaupten.

      Kommentar


      • #4
        Gibt es irgendwo eine deutsche Dokumetation zu dem Join Syntax?

        Kommentar


        • #5
          bei mir gibt es ein tutorial zu joins vielleicht hilft dir das weiter.

          gruß
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Original geschrieben von Laire
            Gibt es irgendwo eine deutsche Dokumetation zu dem Join Syntax?
            im manual geschaut?

            Kommentar


            • #7
              Original geschrieben von penizillin
              wieso? ich würde das gegenteil behaupten.
              Weil gleichzeitig 4 Tabellen abgefragt werden müssen und das Ergebnis zusammen gebracht werden muss

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                "gleichzeitig" ist so ne sache, läuft ja trotzdem sequentiell in der reihenfolge ab, die das db management für richtig befindet, und genau darin liegt das optimierungspotenzial. dazu kommt ein (zugegeben geringerer) vorteil von nur einem notwendigen prozesswechsel sowie nur einem aufruf von _query und _fetch_irgendwas funktionen.

                Kommentar


                • #9
                  Original geschrieben von Kropff
                  bei mir gibt es ein tutorial zu joins vielleicht hilft dir das weiter.

                  gruß
                  peter
                  Danke hat mir sehr geholfen. Sehr schöne Sache...

                  Kommentar


                  • #10
                    hallo,

                    da hier ja nur Indizefelder miteinander verknüpft werden denke ich das ein JOIN am Ende einen Mini-Performancevorteil hat.

                    und wie eben schon erwähnt nur ein prozesswechsel ...

                    mfg
                    bugbuster
                    tutorial: peterkropff.de schattenbaum.de tut.php-quake.net
                    documentation: php.net mysql.com framework.zend.com

                    Die Nachtwache!

                    Kommentar


                    • #11
                      Geht mir noch nitcht einmal um die Geschwindigkeit, sonder eher um den ellen langen code...

                      Kommentar


                      • #12
                        Hi,

                        der join ist ganz sicher schneller, wenn er dann auch noch
                        wirklich nur die zu selektierenden felder angibt wirds noch
                        besser.

                        greets
                        (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                        Kommentar

                        Lädt...
                        X