2 Tabellen verbinden ...

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

  • 2 Tabellen verbinden ...

    Hallo an alle.

    Ich habe hier (nachfolgend zu sehen) folgende Tabelle (ihr Name ist "category"), die Rubrikenbezeichnungen enthält und die Reihenfolge dieser Rubriken (erkennbar an der Spalte "category_sort").



    In der nachfolgend zu sehenden Tabelle werden die Artikelinformationen abgelegt.



    Mit dem Code
    PHP-Code:
    <?

        include ("inc/conf.inc.php");
        require ("template/conf.inc.tpl.php");
        include ("template/header.tpl");

        $db = mysql_connect($cfg['mysql_host'],$cfg['mysql_user'],$cfg['mysql_pass']);
        if (!$db) die ("Kann Server nicht erreichen");
        mysql_select_db($cfg['mysql_db'],$db);    
        $alterubrik = "saefgasdkfbsad";
        $sql = "SELECT * FROM article ORDER BY art_category, art_sort DESC";
        $result = mysql_query($sql);
        while ($row = mysql_fetch_array($result))
        {
            if ($alterubrik!=$row['art_category'])
            {
             $alterubrik = $row['art_category'];
                ?>
                <br>
                <div style="width:468px;">
                    <div style="width:468px; padding:6px; background-color:#eeeeee;">
                        <span class="nklein"><?=$row['art_category'];?><br></span>
                    </div>
                    <img src="blank.gif" width="1" height="1"><br>
                    <div style="width:468px; padding:6px; background-color:#eeeeee;">
                        <span class="nheader"><b><?=$row['art_header'];?></b><br></span>
                        <br>
                        <span class="nteaser"><?=$row['art_teaser'];?>&nbsp;<a href="<?=$PHP_SELF;?>?id=<?=$row['art_id'];?>">[ weiter ]</a><br></span>
                    </div>
                </div>
                <img src="blank.gif" width="1" height="1"><br>
                <?
            }
            else
            {
            ?>
            <div style="width:468px;">
                <div style="width:468px; padding:6px; background-color:#eeeeee;">
                    <span class="ntext"><b><a href="<?=$PHP_SELF;?>?id=<?=$row['art_id'];?>"><?=$row['art_header'];?></a></b><br></span>
                </div>
            </div>
            <?
            }
        }
        
        include ("template/footer.tpl");
    ?>
    stellt er folgendes dar:



    Wie man sehen kann, ordnet er die Rubriken alphabetisch und danach die Artikel entsprechend der Nummer in der Spalte "art_sort". Letzteres soll so sein, aber ersteres ist falsch. Die Zeile
    PHP-Code:
    $sql "SELECT * FROM article ORDER BY art_category, art_sort DESC"
    ist hier sicher der Schlüssel zur korrekten Darstellung. Ich vermute mal, dass ich die Tabelle aus Bild 1 mit der Tabelle aus Bild 2 verbinden muss. Da ich allerdings diese JOIN-Geschichte nicht im geringsten verstehe, hoffe ich, dass sich hier jemand erbarmt und mir hilft. *anfleh*

    Ein Megadanke im Voraus.

    Innuendo

  • #2
    in phpmyadmin (zum testen *g*)
    Code:
    SELECT c.*, a.*
    FROM category c
    INNER JOIN art_sort a
    USING (category_name)
    btw: warum verwendest du nicht category_id als fremdschlüssel?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Original geschrieben von mrhappiness
      btw: warum verwendest du nicht category_id als fremdschlüssel?
      Weil ich eigentlich, wie man an Bild 3 ja auch sehen kann, die Rubrikenbezeichnung gleich mit ausgeben wollte. Eigentlich.

      Kommentar


      • #4
        wenn du den join machst und das ergebnis deinen erwartungen entspricht (schon probiert?), dann kannst du genausogut category_id als femdschlüssel nehmen, was besser wäre
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Original geschrieben von mrhappiness
          in phpmyadmin (zum testen *g*)
          Code:
          SELECT c.*, a.*
          FROM category c
          INNER JOIN art_sort a
          USING (category_name)
          Was ist denn bei Dir c und was a?

          Kommentar


          • #6
            FROM category c
            EDIT:
            probier's doch mal aus
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Muss es also so lauten?

              Code:
              SELECT category.*, article.*
              FROM category
              INNER JOIN art_sort
              USING (category_name)

              Kommentar


              • #8
                Original geschrieben von mrhappiness
                probier's doch mal aus
                so wie du's hast geht's auch, aber es is mehr zu tippen *g*

                aber meine varinate macht genau das selbe wie deine
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Wie dem auch sei: Gehen tut's nicht. Die Fehlermeldung ist
                  "Table 'news.art_sort' doesn't exist". "news" ist hier der DB-Name.

                  Kommentar


                  • #10
                    sry

                    hab mich da vertan, natürlich article statt art_sort
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Habe jetzt
                      Code:
                      SELECT category. * , article. * 
                      FROM article
                      INNER  JOIN category
                      USING ( category_name )
                      Jetzt sagt er mir auf einmal "Unknown column 'article.category_name' in 'on clause'" und ich bin verwirrt.

                      Kommentar


                      • #12
                        Code:
                        SELECT category. * , article. * 
                        FROM article
                        INNER  JOIN category
                        ON category.category_name=article.art_category
                        wenn du die spalte in der zweiten tabelle auch unbedingt anders nennen musst... *g*

                        P.S. zähl mal, wie oft du jetzt category und wie oft du article tippen musst, isses da nich besser einmal category c zu schreibenund dann nur noch c zu verwenden?
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Also schön, ich habs jetzt so

                          Code:
                          SELECT category.* , article.* FROM category INNER JOIN article USING (category_name) ORDER BY category_sort, art_sort DESC
                          und es funktioniert anscheinend.

                          Kommentar


                          • #14
                            Nein, es geht doch nicht so richtig. Er ordnet jetzt zwar die Rubriken richtig, allerdings nicht die Artikel (obwohl die ja alle per art_sort geordnet werden). Ich versuche es weiter ...

                            Kommentar


                            • #15
                              Code:
                              SELECT c.category_name, c.category_sort, a.art_header, a.art_sort
                              FROM category c
                              INNER JOIN article a
                              USING (category_name)
                              ORDER BY c.category_sort, a.art_sort DESC
                              gib das ma bitte ein und poste das was rauskommt
                              EDIT:
                              ORDER BY vergessen
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X