Abfrage Problem

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

  • Abfrage Problem

    Hallo

    Habe wie gesagt zwei Tabellen

    Tabelle A:

    mod_id
    mod_name
    --------------

    Tabelle B:

    nav_id
    mod_id
    nav_name
    ---------------

    (nur zum veranschaulichen!)

    Mein Problem ist das in Tabelle B auch Einträge sind die keine Beziehung
    also "mod_id" aus Tabelle aufweisen. Ich möchte diese Einträge aber
    trotzdem mit auslesen.

    Wenn ich aber nun mittels "where A.mod_id = B.mod_id"
    die Tabellen abfrage bekomme ich nur die Einträge aus Tabelle B die
    eine mod_id haben.

    Wie kann ich das lösen?

  • #2
    Du kannst mit

    WHERE A.mod_id = B.mod_id

    alles bekommen, was eine Entsprechung hat. Nun willst du zusätzlich auch alles, was keine Entsprechung hat, habe ich dich richtig verstanden?
    Dann lass das doch einfach weg.

    "WHERE x = y AND x != y"

    entspricht nämlich

    ""

    Logisch, oder?
    Zuletzt geändert von onemorenerd; 16.08.2005, 21:50.

    Kommentar


    • #3
      Aber dann hat er nicht mehr den Zusammenhang zwischen den beiden Tabellen....ich würd's mit nem LEFT JOIN probieren *zuck*

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

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

      Kommentar


      • #4
        Re: Abfrage Problem

        @ghostgambler:
        Original geschrieben von MTCook
        Mein Problem ist das in Tabelle B auch Einträge sind die keine Beziehung
        also "mod_id" aus Tabelle aufweisen. Ich möchte diese Einträge aber
        trotzdem mit auslesen.
        Keine Beziehung ... trotzdem auslesen.

        Kommentar


        • #5
          Ja alles ganz schön und gut.

          Aber damit komme ich immer noch nicht weiter!

          Hat noch wer einen Lösungsvorschlag?

          A zu B ist gleich eine 1 zu n Beziehung
          wobei A nicht in B vorhandensein muß.

          Kommentar


          • #6
            Mal mit Beispieldaten ... 1:n
            Tabelle A:
            Code:
            mod_id | mod_name
            --------------------------
                 1 | a
                 2 | b
                 3 | c
            Tabelle B:
            Code:
            nav_id | mod_id | nav_name
            ------------------------------------
                 x |    1   | z
                 x |    1   | y
                 x |    2   | x
                 x |    2   | w
                 x |    2   | v
            Du möchtest jetzt alles aus A mit einer mod_id, die auch in B vorkommt?
            Das wäre die mod_id's 1 und 2.

            Weiterhin möchtest du alles aus A mit einer mod_id, die nicht in B vorkommt?
            Das wäre die mod_id 3.
            Zusammen wären es 1, 2 und 3 - also einfach alle mod_id's, sprich alles aus A. Das bekommst du mit SELECT * FROM A (völlig ohne WHERE).

            (Selbes gilt für "du möchtest alles aus B mit ..., die auch/nicht in A vorkommt".)

            Wenn es das nicht ist, oder du es noch nicht durchschaust, gib uns mal deinerseits Beispieldaten und das gewünschte Ergebnis.

            Kommentar


            • #7
              Tabelle A:
              Code:
              mod_id | mod_name
              --------------------------
                   1 | a
                   2 | b
                   3 | c
              Tabelle B:
              Code:
              nav_id | mod_id | nav_name
              ------------------------------------
                   x |    1   | z
                   x |    1   | y
                   x |    2   | x
                   x |    2   | w
                   x |    2   | v
              und er will
              mod_id | mod_name | nav_id | nav_name
              1 | a | x | z
              1 | a | x | y
              2 | b | x | x
              2 | b | x | w
              2 | b | x | v
              3 | c | nix | nix

              denke ich...und das wäre ein Fall für LEFT JOIN...

              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
                Kann schon sein, aus seiner Fragestellung gehts aber nicht klar hervor.
                Wie auch immer, jetzt hat er die Lösungen zu beiden Interpretationen nochmal. Obs ihm hilft?

                Kommentar


                • #9
                  Das ist alles schon dicht dran.

                  Ich mach das mal in euren Beispiel wie ich es haben will.

                  Tabelle A:
                  Code:
                  mod_id | mod_name
                  --------------------------
                       1 | a
                       2 | b
                       3 | c
                  Tabelle B:
                  Code:
                  nav_id | mod_id | nav_name
                  ------------------------------------
                       1 |    1   | z
                       2 |        | y
                       3 |        | x
                       4 |    2   | w
                       5 |    3   | v
                  und ich möchte

                  Code:
                  B.nav_id | B.mod_id | B.nav_name | A.mod_name
                  ------------------------------------
                       1    |    1        | z                |  a
                       2    |             | y                |  
                       3    |             | x                |
                       4    |    2        | w                |  b
                       5    |    3        | v                |  c
                  Zuletzt geändert von MTCook; 17.08.2005, 20:54.

                  Kommentar

                  Lädt...
                  X