Ankündigung

Einklappen
Keine Ankündigung bisher.

Zwei Tabellen in einen Array + Ausgabe (no primkey)

Einklappen

Neue Werbung 2019

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

  • Zwei Tabellen in einen Array + Ausgabe (no primkey)

    Tach,

    ich steh vor einem Problem. Und zwar hab ich zwei Tabellen, die ungefähr gleich aufgebaut sind.

    1. Tabelle - name: table1
    vmid
    nid (auto_increment)
    definition
    ntext
    datum

    2. Tabelle - name: table2
    nid (auto_increment)
    definition
    ntext
    datum

    Es gibt also keinen Primärschlüssel. Das Problem ist, ich möchte alle Datensätze aus Tabelle 1 mit der vmid aus der aktuellen
    Session (nehmen wir einfach mal 1) und alle Datensätze aus Tabelle 2 ausgeben.

    Dazu müssen die wahrscheinlich in 1 array, da ich die Inhalte noch nach Datum bzw nach nid sortieren möchte.

    Leider hab ich keine Ahnung wie ich das genau bewärgstelligen soll.
    Hab schon einiges versucht mit 2 Select befehlen und array_merge aber er hat dann die $keys nicht richtig :/

    So hab ich es gemacht bei nur einer Tabelle (die table1):

    PHP-Code:
    <?php
            $qry 
    mysql_query("SELECT * FROM vm_news WHERE vmid = "$_SESSION['vm'] ." GROUP BY datum ORDER BY datum DESC;") OR die(mysql_error());
            
    $month = array("January"=>"Januar""February"=>"Februar""March"=>"März""April"=>"April"
                           
    "May"=>"Mai""June"=>"Juni""July"=>"Juli""August"=>"August"
                           
    "September"=>"September""October"=>"Oktober""November"=>"November""December"=>"Dezember");
            while(
    $row mysql_fetch_array($qry)) {
              
    $timestmp strtotime($row['datum']);
              echo 
    '  <tr valign="top">'."\n";
              echo 
    '    <td width="3%">[img]img/layout/forward.gif[/img]</td>'."\n";
              echo 
    "    <td>\n";
              echo 
    '       [b]'date("j."$timestmp) .' '$month[date("F"$timestmp)] .' 'date("Y"$timestmp) ."[/b]

    \n"
    ;
              
    $qry2 mysql_query("SELECT * FROM vm_news WHERE vmid = "$_SESSION['vm'] ." AND datum = '"$row['datum'] ."' ORDER BY nid DESC;") OR die(mysql_error());
              while(
    $app mysql_fetch_array($qry2)) {
                  echo 
    '       <table width="600px" border="0" cellpadding="1" cellspacing="0">'."\n";
                  echo 
    '         <tr style="background:#E67D3E">'."\n";
                  echo 
    '           <td style="width:300px; color:#FFFFFF; font-weight:bold">'$app['definition'] .'</td>'."\n";
                  echo 
    '         </tr><tr style="background:#FFFCCF">'."\n";
                  echo 
    '           <td style="background:#FFFCCF; border:1px solid #E67D3E">'$app['ntext'] .'</td>'."\n";
                  echo 
    '         </tr><tr>'."\n";
                  echo 
    '           <td></td>'."\n";
                  echo 
    '         </tr>'."\n";
                  echo 
    '       </table>
    '
    ."\n";
              }
              echo 
    "    </td>\n";
              echo 
    "  </tr>\n";
            }
    ?>
    wie geh ich das am besten an?

    MFG


  • #2
    Als erstes empfehle ich dir wenn du vernünftige Antworten haben willst, dann ordne und rücke mal deine Quelltext richtig ein.
    lass dir fehlermeldungen anzeigen.

    und versuch es mal mit der suche unter Join
    Gruß JEGO

    Ein PHP Script tut, was Du schreibst, nicht was Du willst.

    Kommentar


    • #3
      Re: Zwei Tabellen in einen Array + Ausgabe (no primkey)

      Zitat von HK
      Es gibt also keinen Primärschlüssel.
      Warum definierst du die Spalte nid nicht als Primärschlüssel.

      Zitat von HK
      Das Problem ist, ich möchte alle Datensätze aus Tabelle 1 mit der vmid aus der aktuellen
      Session (nehmen wir einfach mal 1) und alle Datensätze aus Tabelle 2 ausgeben.
      Dafür gibt es UNION:
      Code:
      (
          SELECT
              nid,
              definition,
              ntext,
              datum
          FROM
              table1
          WHERE
              vmid = 1
      )
      UNION
      (
          SELECT
              nid,
              definition,
              ntext,
              datum
          FROM
              table2
      )

      Kommentar


      • #4
        Re: Zwei Tabellen in einen Array + Ausgabe (no primkey)

        Zitat von JEGO
        und versuch es mal mit der suche unter Join
        Falls du damit Inner Join oder Left / Right Join meinst -> Klappt hier leider nicht da gerade der Verbindungsschlüssel fehlt. Kann mich auch irren, mit MySql kenn ich mich nicht so extrem aus.

        Zitat von xabbuh
        Zitat von HK
        Es gibt also keinen Primärschlüssel.
        Warum definierst du die Spalte nid nicht als Primärschlüssel.
        Sind sie. Nur kann ich sie nicht als Verbindungsschlüssel benutzen, da die Datensätze von Tabelle 1 sowie Tabelle 2 mit der selben nid nicht identisch sind bzw nichts miteinander zu tun haben. Also kann ich Inner Join etc nicht anwenden (wenn ich mich nicht irre).

        Zitat von xabbuh
        Zitat von HK
        Das Problem ist, ich möchte alle Datensätze aus Tabelle 1 mit der vmid aus der aktuellen
        Session (nehmen wir einfach mal 1) und alle Datensätze aus Tabelle 2 ausgeben.
        Dafür gibt es UNION:
        Danke, klappt wunderbar. Union ist mir sogar neu (Wer hätte das gedacht).

        Danke für eure Hilfe

        Kommentar


        • #5
          Re: Zwei Tabellen in einen Array + Ausgabe (no primkey)

          Zitat von HK
          Sind sie. Nur kann ich sie nicht als Verbindungsschlüssel benutzen, da die Datensätze von Tabelle 1 sowie Tabelle 2 mit der selben nid nicht identisch sind bzw nichts miteinander zu tun haben. Also kann ich Inner Join etc nicht anwenden (wenn ich mich nicht irre).
          Achso, das war so nicht aus deinem ersten Beitrag hervorgegangen, macht dann aber natürlich Sinn.

          Zitat von HK
          Danke, klappt wunderbar. Union ist mir sogar neu (Wer hätte das gedacht).

          Achja, wenn zwei Datensätze in beiden Tabellen vorkommen wird nur ein Datensatz ermittelt. Wenn beide ermittelt werden müssen, müsstest du UNION ALL verwenden. Das hatte ich eben vergessen zu erwähnen.

          Kommentar


          • #6
            Re: Zwei Tabellen in einen Array + Ausgabe (no primkey)

            Zitat von HK
            Falls du damit Inner Join oder Left / Right Join meinst -> Klappt hier leider nicht da gerade der Verbindungsschlüssel fehlt.
            hast du leider oben nicht gesagt.(da siehst du wie wichtig eine ordendliche fragestellung ist.)

            Antwort hast du ja jetzt bekommen. :wink:
            Gruß JEGO

            Ein PHP Script tut, was Du schreibst, nicht was Du willst.

            Kommentar


            • #7
              Ja, hab ich gelesen, wäre aber in meinem Fall an sich egal. Sind nur News und sollen nicht doppelt auftauchen.

              Der gelöste Code:

              PHP-Code:
              <?php
                      $qry 
              mysql_query("(  SELECT
                                               datum
                                             FROM
                                               vm_news
                                             WHERE
                                               vmid = "
              $_SESSION['vm'] ."
                                             GROUP BY 
                                               datum 
                                           ) UNION (
                                             SELECT
                                               datum
                                             FROM
                                               vm_genonews
                                             GROUP BY 
                                               datum 
                                           ) ORDER BY 
                                             datum DESC;"
              ) OR die(mysql_error());
                      
              $month = array("January"=>"Januar""February"=>"Februar""March"=>"März""April"=>"April"
                                     
              "May"=>"Mai""June"=>"Juni""July"=>"Juli""August"=>"August"
                                     
              "September"=>"September""October"=>"Oktober""November"=>"November""December"=>"Dezember");
                      while(
              $row mysql_fetch_array($qry)) {
                        
              $timestmp strtotime($row['datum']);
                        echo 
              '  <tr valign="top">'."\n";
                        echo 
              '    <td width="3%">[img]img/layout/forward.gif[/img]</td>'."\n";
                        echo 
              "    <td>\n";
                        echo 
              '       [b]'date("j."$timestmp) .' '$month[date("F"$timestmp)] .' 'date("Y"$timestmp) ."[/b]

              \n"
              ;
                        
              $qrys mysql_query("(SELECT
                                                  nid,
                                                  definition,
                                                  ntext,
                                                  datum
                                              FROM
                                                  vm_news
                                              WHERE
                                                  vmid = "
              $_SESSION['vm'] ." AND
                                                  datum = '"
              $row['datum'] ."'
                                              ORDER BY nid DESC
                                             ) UNION (
                                              SELECT
                                                  nid,
                                                  definition,
                                                  ntext,
                                                  datum
                                              FROM
                                                  vm_genonews
                                              WHERE
                                                  datum = '"
              $row['datum'] ."'
                                              ORDER BY nid DESC
                                             )"
              ) OR die(mysql_error());
                        while(
              $app mysql_fetch_array($qrys)) {
                            echo 
              '       <table width="600px" border="0" cellpadding="1" cellspacing="0">'."\n";
                            echo 
              '         <tr style="background:#E67D3E">'."\n";
                            echo 
              '           <td style="width:300px; color:#FFFFFF; font-weight:bold">'$app['definition'] .'</td>'."\n";
                            echo 
              '         </tr><tr style="background:#FFFCCF">'."\n";
                            echo 
              '           <td style="background:#FFFCCF; border:1px solid #E67D3E">'$app['ntext'] .'</td>'."\n";
                            echo 
              '         </tr><tr>'."\n";
                            echo 
              '           <td></td>'."\n";
                            echo 
              '         </tr>'."\n";
                            echo 
              '       </table>
              '
              ."\n";
                        }
                        echo 
              "    </td>\n";
                        echo 
              "  </tr>\n";
                      }
              ?>
              (was ist daran nicht eingerückt? )

              Kommentar

              Lädt...
              X