Probleme mit verschachtelter Ausgabe

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

  • #16
    ersetze einfach das inner join durch ein outer join

    müsste gehen ich mache meine joins anders wie du untern gesehen hast

    der goth weis das bestimmt
    Wusstet ihr schon?
    Wer später bremst ist länger schnell!

    Die wahrscheinlich beste Funktion in PHP ist mysql_error(), doch leider auch die unbekannteste!

    Kommentar


    • #17
      Outer join:
      Code:
      SELECT i.id, IFNULL(f.name, i.name) AS name
      FROM nochef_impressum AS i
      LEFT JOIN nochef_forward AS f
      ON i.id=f.forward_id
      ORDER BY i.name ASC
      LEFT JOIN kann man auch als LEFT OUTER JOIN schreiben ...

      Der OUTER JOIN fügt zur Basistabelle (in diesem Falle nochef_impressum) den passenden Datensatz aus der anderen Tabelle hinzu ... wird kein entsprechender Datensatz gefunden ist das kein Ausschlußkriterium wie beim INNER JOIN, es wird in diesem Falle ein 'Virtueller-Datensatz' mit NULL-Werten inzugefügt.
      Zuletzt geändert von goth; 24.06.2002, 18:45.
      carpe noctem

      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

      Kommentar


      • #18
        hab ich doch gesagt goth weis das aber mal de doofe frage warum inner join und left join?

        geht auch right und left join?


        hört sich doof an aber ist mein ernst!
        Wusstet ihr schon?
        Wer später bremst ist länger schnell!

        Die wahrscheinlich beste Funktion in PHP ist mysql_error(), doch leider auch die unbekannteste!

        Kommentar


        • #19
          @ goth

          Hi,

          bekomme jetzt wieder ne Fehlermeldung.
          Zum Verständniss : Was bedeutet das IFNULL(f.name, i.name) AS name ?? Ich habe in Tabelle i das Feld name. Hier steht ein Benutzer drin. Und in der Tabelle f stehen alle Zugehörigen Domains des Benutzers drin ( Zugeordnet über die id von Tabelle i ) Das heisst ich habe in Tabelle f gar kein Feld name. Habs daher auch aus der Klammer oben rausgenommen. Daher wahrscheinlich die Fehlermeldung.
          Was muß ich noch verändern ??

          THANX A LOT

          Kommentar


          • #20
            @shortie19:
            Aus dem MySQL Handbuch:
            RIGHT JOIN funktioniert analog wie LEFT JOIN. Um Code zwischen Datenbanken portabel zu halten, wird empfohlen, LEFT JOIN anstelle von RIGHT JOIN zu benutzen
            Als Analogie zum INNER JOIN ist die Syntax "WHERE tabelle1 AS t1, tabelle2 AS t2 WHERE t1.feld=t2.feld" anzusehen.

            @creative4web:
            IFNULL(f.name, i.name) gibt i.name zurück wenn f.name NULL ist ... also solltest Du f.name Durch einen Feldnamen aus Deiner Tabelle 'nochef_forward' ersetzen.
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #21
              @ goth

              Sorry, aber hab ich nicht ganz geschnallt
              Bekomme jetzt auch wieder ne Fehlermeldung. Hier der code :

              ---------------------- $query_edit = "SELECT i.id, i.name IFNULL(f.domainname,i.name) AS name FROM nochef_impressum AS i INNER JOIN nochef_forward AS f ON i.id=f.forward_id ORDER BY i.name ASC";

              ---------------------

              So habe ich das ganze verstanden :

              Es wird in der Tabelle f nach den Datensätzen gesucht bei denen die id in i und die forward_id in f gleich sind. Aber deshalb habe ich doch nicht plötzlich in Tabelle f irgendwo nix drin stehen oder ??? Ich weiss ich bin manchmal etwas begriffstutzig

              trotzdem danke für die Geduld

              Kommentar


              • #22
                Original geschrieben von creative4web
                @ goth

                Sorry, aber hab ich nicht ganz geschnallt
                Bekomme jetzt auch wieder ne Fehlermeldung. Hier der code :

                ---------------------- $query_edit = "SELECT i.id, i.name IFNULL(f.domainname,i.name) AS name FROM nochef_impressum AS i INNER JOIN nochef_forward AS f ON i.id=f.forward_id ORDER BY i.name ASC";


                PHP-Code:

                SELECT i
                .idIFNULL(f.domainname,i.name) AS name FROM nochef_impressum AS i LEFT JOIN nochef_forward AS f ON i.id=f.forward_id ORDER BY i.name ASC 
                Original geschrieben von creative4web

                ---------------------

                So habe ich das ganze verstanden :

                Es wird in der Tabelle f nach den Datensätzen gesucht bei denen die id in i und die forward_id in f gleich sind. Aber deshalb habe ich doch nicht plötzlich in Tabelle f irgendwo nix drin stehen oder ??? Ich weiss ich bin manchmal etwas begriffstutzig

                trotzdem danke für die Geduld
                Doch ... genau das ist das Prinzip vom LEFT OUTER JOIN ...
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #23
                  ** Verzweifel **

                  @ goth

                  Hi,

                  ok, das ganze funnktioniert jetzt zumindest ohne Fehlermeldung. Jedoch ist die Ausgabe etwas seltsam: Dort wo beim Benutzer in der zugehörigen Tabelle f eine Domain eingetragen ist, da steht jetzt als Name der Domainname. Irgendwie ist es auch nicht das,was ich gewollt habe. Kann es nicht einfach so aussehen :

                  ------------------------------------------------------------
                  >> Account von Herrn Beispiel :
                  >> Folgende Domain sind aktiv : Domain1, Domain2, Domain3
                  -------------------------------------------------------------

                  Wobei wiegesagt der Namen in der Tabelle i und die Domains in der Tabelle f stehen. Hast Du da ne Idee

                  Hier noch der Link zu der Ausgabe so wie sie jetzt ist :

                  http://www.creative4web.com/networka...dmin/admin.php

                  THANX A LOT

                  Kommentar

                  Lädt...
                  X