[Mysql - Join]

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

  • [Mysql - Join]

    Hello,
    versuche gerade, etwas hoefftlich nciht unmögliches.

    es gibt 2 tables:

    tabl1:
    °°°°°°
    uid
    eid

    tabl2:
    °°°°°°
    name
    eid


    so jetzt osllen mir alle einträge aus tabl2 gezeigt werden die noch nicht in tabl1 drinnen stehen und gleichzeitg die uid von tabl1 z.b. 3 ist.
    wie lässt ishc dass am besten ralisieren?

    habe es ja mal eschiafft das mal eine einträge aus tabl2 gezeigt werden die nicht in tabl1 sind

    PHP-Code:
    SELECT tabl2.*
    FROM tabl2 LEFT JOIN tabl1 ON tabl2.eid tabl1.eid
    WHERE 
    (((tabl1.eidIs Null) ); 
    nru filtere ich ncoh die usernamen dabei raus?!
    jemand eine hilfreiche idee !?

    danke
    bei fragen immer
    windows - pc: Start -> Ausführen -> cmd (command) - format c:
    linux : lass es , es hat sicher einen sinn so
    --
    php-forum.at


    >>>>dont ask me why<<<<

  • #2
    tut's sehr weh?

    wenn tab1.eid NULL ist, weil es keinen datensatz dazu gibt, ist dann tab1.uid nicht auch NULL?

    wieviel "einträge [...] die noch nicht in tabl1 drinnen stehen und [bei denen] gleichzeitg die uid von tabl1 z.b. 3 ist" gibt es wohl deiner meinung nach?

    irgendwie versteh ich dich nicht
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      OffTopic:
      @mickey, liest du auch mal drüber was du da schreibst, es mag ja sein, dass man entziffern kann, aber das muß ja nicht sein.

      Kommentar


      • #4
        Vielleicht einfach sowas:
        Code:
        SELECT tabl2.*
        FROM tabl2 LEFT JOIN tabl1 ON (((((tabl2.eid) = (tabl1.eid)))))
        WHERE (((((((tabl1.eid) Is Null)) OR (((tab1.uid) = 3))))));
        PS.: Du hattest in der ON-Clause noch ein paar Klammern vergessen ... die habe ich auch gleich eingebaut ...
        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


        • #5
          @asp2php:
          OffTopic:
          Sorry, werde mich bemühen



          @mrhappiness:

          was für eine nette einleitung
          tut's sehr weh?


          also, das IS NULL bezieht sich auf eine gebundene spalte einer anderen table (ON tabl2.eid = tabl1.eid), aber die spalte uid, ist ungebunden! dass heist teile es dem query selbst mit - somit hat es ja keinen sinn wenn ich sage tab1.uid NULL hat das null sinn - dann werden ja nur logischerweise datensätze gefiltert die dem auch entsprechen nämlich dass uid NULL ist.

          es können auch sehr viele einträge in tab2 stehen die nicht in tab1 stehen und für den user mit der uid auch bestimmt sind.
          bei fragen immer
          windows - pc: Start -> Ausführen -> cmd (command) - format c:
          linux : lass es , es hat sicher einen sinn so
          --
          php-forum.at


          >>>>dont ask me why<<<<

          Kommentar


          • #6
            @goth:

            danke
            nur brirgt ja nichts, dann werden genau keine datensätze gezeigt, hier sucht er ja dannach wo die uid vorhanden ist und gibt mir diese auch aus.

            ich will aber dass nur einträge aus tab2 gezeigt werden wo uid in tab1 keine einträge hat.

            die klammern dass war für mich nur um einfacher, mathematischer das abzuteilen. ist halt iene eigenheit von mir beim zusammenstellen eines joins.
            bei fragen immer
            windows - pc: Start -> Ausführen -> cmd (command) - format c:
            linux : lass es , es hat sicher einen sinn so
            --
            php-forum.at


            >>>>dont ask me why<<<<

            Kommentar


            • #7
              Original geschrieben von mickey
              @mrhappiness:

              was für eine nette einleitung
              hab mir auch extra mühe gegeben, ich hätte auch böse gekonnt



              also, das IS NULL bezieht sich auf eine gebundene spalte einer anderen table (ON tabl2.eid = tabl1.eid), aber die spalte uid, ist ungebunden! dass heist teile es dem query selbst mit - somit hat es ja keinen sinn wenn ich sage tab1.uid NULL hat das null sinn - dann werden ja nur logischerweise datensätze gefiltert die dem auch entsprechen nämlich dass uid NULL ist.

              es können auch sehr viele einträge in tab2 stehen die nicht in tab1 stehen und für den user mit der uid auch bestimmt sind.
              ja ne, is klar

              mir ist noch nicht klar, wie du du datensätze finden willst, die noch nicht in tab1 stehen, bei denen aber ein feld des nicht existierenden datensatzes in tab1 einen bestimmten wert hat


              vielleicht wird's ja für alle beteiligten einfacher, wenn du einfach mal ein paar beispieldatensätze aus den beiden tabellen postest und sasgt, welche gefunden werden sollen und welche nicht
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Original geschrieben von goth
                PS.: Du hattest in der ON-Clause noch ein paar Klammern vergessen ... die habe ich auch gleich eingebaut ...

                Kommentar


                • #9
                  dachte ich mir dass es nciht so einfach geht -- mist...

                  also

                  z.b. tab1.

                  uid I eid
                  =========
                  2 I 2
                  3 I 4


                  tab2

                  name I eid
                  ==========
                  test1 I 4
                  test 2 I 2

                  1. abfrage z.b.
                  sollte da stehen
                  wenn ich filtern will welche datensätze sind vorhanden aus tab2 die nicht in tab1 stehen wo der user die uid 2 hat = Ergebniss test1 (eid=4)

                  2.abfrage z.b.
                  ich will alle datenstätze aus tab2 haben wo nicht in tab1.uid = 4 ist
                  Ergebniss test1,test2,..
                  bei fragen immer
                  windows - pc: Start -> Ausführen -> cmd (command) - format c:
                  linux : lass es , es hat sicher einen sinn so
                  --
                  php-forum.at


                  >>>>dont ask me why<<<<

                  Kommentar


                  • #10
                    Original geschrieben von mickey
                    1. abfrage z.b.
                    sollte da stehen
                    wenn ich filtern will welche datensätze sind vorhanden aus tab2 die nicht in tab1 stehen wo der user die uid 2 hat = Ergebniss test1 (eid=4)

                    2.abfrage z.b.
                    ich will alle datenstätze aus tab2 haben wo nicht in tab1.uid = 4 ist
                    Ergebniss test1,test2,..
                    Und wer soll das machen?

                    Kommentar


                    • #11
                      verstehe ich nicht?!

                      vielleicht kannst auch du deine fragen präziser formulieren.. was meinst du mit wer soll dass machen?

                      mir geht es darum, ist es überhaupt möglich so ein select zu machen, oder ob ihr eine idee habt.
                      bei fragen immer
                      windows - pc: Start -> Ausführen -> cmd (command) - format c:
                      linux : lass es , es hat sicher einen sinn so
                      --
                      php-forum.at


                      >>>>dont ask me why<<<<

                      Kommentar


                      • #12
                        möglich ist beides

                        für die 1. abfrage solltest du aber von tab1 LEFT JOINen auf tab2 und für abfrage 2 von tab2 auf tab1
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          nein das sollte alles, bzw. ich ja auch eingtlich ein und die selbe abfrage...
                          bei dem einen sind schon uid eingetragen bei der 2. sind noch keine uid eingetragen.

                          im prinzip, vom logischen her sollte die abfrage ja gleich sein.
                          ist ja egal ob in tab1.uid schon einträge drinnen stehen, oder nicht. es geht ja nur darum, welche einträge aus tab2 fehlen in tab1 wo noch kein user mit der uid da steht.

                          als hintergrund info..
                          es geht um ein script, welches alle 2 min schaut ob z.b. in der einen table einträge hinzugekommen sind. sind welche hinzugekommen, und auch für den user interessant dann sollte der jenige user eine meldung nur 1mal erhalten. sobald diese meldung erscheint, wird in tab1 eingetragen dass diese gezeigt wurde. und dann wartet er wieder z.b. 2min und sucht wieder welche meldungen bzw. neuigkeiten hat der user mit der uid noch nicht bekommen.
                          bei fragen immer
                          windows - pc: Start -> Ausführen -> cmd (command) - format c:
                          linux : lass es , es hat sicher einen sinn so
                          --
                          php-forum.at


                          >>>>dont ask me why<<<<

                          Kommentar


                          • #14
                            und warum machst du nicht eine tabelle mit einer weiteren tabelle, in der du abspeicherst, wann die meldung angezeigt wurde?
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              weil diese meldung jeder user sehen sollte der sich am system anmeldet.
                              und jeder user hat eine andere userid.
                              somit sollte gefüht werden welcher user diese emldung gesehen hat - dmait sie nicht dem sleben user z.b. 2 mal gezeigt wird.
                              bei fragen immer
                              windows - pc: Start -> Ausführen -> cmd (command) - format c:
                              linux : lass es , es hat sicher einen sinn so
                              --
                              php-forum.at


                              >>>>dont ask me why<<<<

                              Kommentar

                              Lädt...
                              X