[MySQL] selectieren von abgeschlossenen

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

  • [MySQL] selectieren von abgeschlossenen

    hallo all,
    steh gerade etwas auf der leitung, dneke das es sicher mit MySQL möglich ist:

    habe 2 tables:

    table1:

    T1ID I Name I
    ==========
    1 I test1 I
    2 I test2 I

    table2:

    T2ID I T1ID I Status
    ==============
    1 I 1 I 10
    2 I 1 I 5
    3 I 2 I 20

    so ich will das mit alle namen von table1 ausgeben werden die in in table2 nur einen status unter 20 haben. also wirklcih nur, nicht das einer ja und dehlab ist er auch dabei.
    wenn z.b. ein eintrag für T1ID in table2 einen status von 22 hat, darf er nicht merh erschienen, allerdings wenn er wieder 18 hat schon. also im gesamten gesehn.

    quasi so:



    PHP-Code:
    "SELECT `NAME` FROM `table1`, `table2` WHERE table1.T1ID = table2.T1ID AND MIN(table2.Status) < 20 GRoUP BY table2.Status 
    ich weiss, das diese abfrage nicht geht, soll nur eine einfach darstellung wie ich das meine.

    jemand eine 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
    Code:
    SELECT DISTINCT
      name
    FROM
      table1, table2
    WHERE
      table1.tid = table2.tid
      AND table2.status < 20
    so kriegst du aber nicht die, die in tabelle1 stehen und noch keinen eintrag in tabelle2 haben, wenn du das auch willst, les mal den thread über joins hier im forum
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      hmm,

      wieso weist du einen namen mehrere status(se) zu? wo ist da der sinn?

      so könntest du ja für t1id = 7 einmal status = 13 und einmal status = 24 haben? wie sollte dann die ausgabe sein?
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        @mrhappiness:

        das hat genau diesen effekt den ich nicht will, das es selektiert wrid sobald einer über 20 bzw. unter 20 ist, geht aber darum das bediengung ist, das alle von table2.status unter 20 sind.

        @derHund:

        wie gesagt ist einfaches beipsiel, das dieses sample keinen sinn macht ist mir klar. in wikrlichkeit geht es um ein schulsystem in wlechem ausselektiert werden muss welcher schüler ausschliesslich in allen fächern einen status unter 20 hat ;-)
        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


        • #5
          dann solltest du dir trotzdem den thread über JOINs durchlesen, damit geht das
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            bin grad dabei... ;-)

            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<<<<

            Kommentar


            • #7
              hat nicht wirlcih was mit joins zu tun;-) das zauber wort bzw. gebilde heisst:

              HAVING (MAX(table2.STATUS) < 20)

              und dem richtigen Group by
              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


              • #8
                Code:
                SELECT
                  name
                FROM
                  tabelle1
                  LEFT JOIN tabelle2 
                   ON tabelle1.tid = tabelle2.tid
                   AND tabelle2.status > 20
                WHERE
                  tabelle2.tid IS NULL
                sollte auch gehen und du kriegst zusätzlich zu deinem select die, die nur in tabelle1 drinstehen (falls das vorkommen kann)
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar

                Lädt...
                X