Abfragen von zwei Tabellen in der Datenbank

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

  • Abfragen von zwei Tabellen in der Datenbank

    Ich habe folgenden Code:
    PHP-Code:
    $query "SELECT introtext FROM `jos_content` WHERE sectionid='$sectionid' AND catid = '$id'"
    Funktioniert wunderbar, ich bin aber auf die Idee gekommen diese Regel etwas zu erweitern, zwecks dessen eine kurze Erläuterung.

    In Joomla gibt es für jeden Bericht ein Kästchen ob der introtext auf der Frontpage gezeigt wird oder nicht. Damit wird die id des Beitrages in `jos_content_frontpage` übergeben. Aus dem obigen Ergebnis, soll jetzt nur der introtext angezeigt werden, welcher sich in der Frontpage befindet.

    Wie füge ich die Werte aus einer zweiten Tabelle dort ein?

    So ähnlich stelle ich mir das vor, ist aber nicht richtig.
    PHP-Code:
    ....AND Select BY  `jos_content_frontpageWHERE contend_id 'id>0' 
    Die Werte sind eigentlich klar, nur das ergänzen bzw. Erweitern nicht. Daher poste ich auch keine DBStruktur.

  • #2
    Re: Abfragen von zwei Tabellen in der Datenbank

    http://www.php-resource.de/forum/sho...threadid=28292
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Schön wären reale Bsp.


      Diese beiden Befehle müssen irgendwie zusammenkommen.

      Dieser Befehl spuckt mehre Introtexte aus einer Category aus.
      PHP-Code:
      $query "SELECT introtext FROM `jos_content` WHERE sectionid='$sectionid' AND catid = '$id'"
      Daraus sollen aber nur die aufgeführt werden, die in der Frontpage selektiert sind. In der anderen Tabelle werden die Id's aufgeführt, welche vorhanden sind.

      Bei vorhandener Frontpage erhalte ich hier eine 1, bei nicht erhalten nichts.
      Hier geschieht die Abfrage, das die beiden
      PHP-Code:
      $query "SELECT content_id FROM `jos_content_frontpage` WHERE content_id='$id>0'"
      Würfel ich das in Punkt 1:
      PHP-Code:
      $query "SELECT
          t1.introtext, t2.content_id
      FROM
          `jos_content` t1
          INNER JOIN `jos_content_frontpage` t2 USING(sectionid='
      $sectionid'
       AND catid = '
      $id') WHERE content_id='$id>0'"
      erhalte ich ein üblichen Error

      und

      PHP-Code:
      $query "SELECT introtext, content_id FROM `jos_content` 
      INNER JOIN `jos_content_frontpage` USING(sectionid='
      $sectionid'
       AND catid = '
      $id') WHERE content_id='$id>0'"
      liefert auch ein Error.

      Mir reich irgendeine Abfrage in der Tabelle `jos_content_frontpage` ob in content_id die id des Beitrages enthalten ist, oder ob der dort aufgeführte Wert größer als 0 ist, und dann werden diese Introtexte angezeigt, die anderen die nicht enthalten sind sollen nicht angezeigt werden.
      Zuletzt geändert von Yehudi; 09.02.2006, 01:36.

      Kommentar


      • #4
        Schön wären reale Bsp.
        und die dort geposteten sind was?
        erhalte ich ein üblichen Error
        nämlich?

        umbrichst du deinen code, so daß horiz. scrollen unnötig wird?
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Ich habe jetzt mal Umbrüche rein gesetzt, damit man das besser lesen kann.

          Der übliche Error, Fehler in Zeile XY, was meistens Quatsch ist, denn die angezeigten Zeilen liegen weit von dem Code entfernt, meistens davor.

          Die unter dem Link geposteten Sachen erscheinen mir wie alles XYZ. Halt nicht greifbar. Ich arbeite mit Texten und Bildern, und nicht mit Quadraten, und gehört da nun t1. davor oder nicht.

          Mit realen Code meine ich z.B.:
          PHP-Code:
          $query "SELECT introtext FROM `jos_content` WHERE sectionid='$sectionid' AND catid = '$id'"
          und das absolute Gegenteil davon:
          PHP-Code:
          $query "SELECT x FROM y WHERE z='$z' AND a = '$b'"
          Das ist jetzt noch recht übersichtlich, aber wenn der Code mit dem anderen verbunden wird, und dann dort t1. etc da steht dann wird es für einen Anfänger leicht unübersichtlich. Leider ist das Thema auch im Netz nicht besser dargestellt. Ich habe nämlich mal gegooglet, und das ist noch dürftiger.

          Kommentar


          • #6
            Der übliche Error, Fehler in Zeile XY, was meistens Quatsch ist, denn die angezeigten Zeilen liegen weit von dem Code entfernt, meistens davor.
            es tut mir leid, aber das ist quatsch, sogar hoch 2.

            seis drum. poste mal bitte die struktur der tabellen, ich habe bisher noch nicht verstanden, wie sie verknüpft sind.
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              Original geschrieben von derHund
              es tut mir leid, aber das ist quatsch, sogar hoch 2.


              Mir begegenen immer zwei Arten von errors, die eine, dass die gesammte angewählte Seite nicht erscheint, und mit der Meldung wie oben. Das andere, dass nur der Teil, wo der Code stehet mit einer solchen Meldung versehen ist. Letztes ist der Fall.
              Original geschrieben von derHund
              seis drum. poste mal bitte die struktur der tabellen, ich habe bisher noch nicht verstanden, wie sie verknüpft sind.
              Hier die Struktur von jos_content:
              http://www.noreasontodie-music.com/l...ur-content.jpg

              Bei jos_content_frontpage hat die Tabelle nur zwei Spalten content_id und ordering. content_id ist die aus jos_content übergebene id aus der Spalte id, vom Titel. Wenn Frontpage in dem Titel aktiviert ist, ist die id dort vorhanden, wenn nicht dann gibt es dort keinen Eintrag. Ordering ist nur die Zählung.
              Zuletzt geändert von wahsaga; 09.02.2006, 10:40.

              Kommentar


              • #8
                am besten postest du bei fehlermeldungen die fehlermeldung.
                Code:
                //
                // sollte alle introtext anzeigen, die die bedingungen bei where erfüllen
                // und in der f-table einen eintrag haben
                //
                SELECT introtext
                FROM   jos_content c
                JOIN   jos_content_frontpage f
                ON     c.id = f.content_id
                WHERE  sectionid=1
                AND    catid=2
                so?
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  Jetzt kann ich keine Fehlermeldung posten.
                  Ich habe bei sectionid und catid noch die entsprechenden Variablen eingefügt:

                  PHP-Code:
                  //
                  // sollte alle introtext anzeigen, die die bedingungen bei where erfüllen
                  // und in der f-table einen eintrag haben
                  //
                  SELECT introtext
                  FROM   jos_content c
                  JOIN   jos_content_frontpage f
                  ON     c
                  .id f.content_id
                  WHERE  sectionid
                  ='$sectionid'
                  AND    catid='$id' 
                  und es funktioniert genauso wie ich es haben wollte. Danke.

                  Kommentar

                  Lädt...
                  X