Multiple Row-Unterabfrage

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

  • Multiple Row-Unterabfrage

    Hi Leute,

    ich hoffe ihr könnt mir weiterhelfen...

    Ich habe 2 Tabellen: in der einen stehen Aufgaben mit Aufgaben-IDs, in der zweiten, welche Aufgaben der User bearbeitet hat. Jetzt will ich mit einer Abfrage die bekommen, die der User noch nicht bearbeitet hat.
    Ich habe es so versucht:

    select * from BT_T_Aufgaben
    where PK_AufgNr
    not in (
    select BT_T_bearbeitet_uebung.FK_AufgNr
    from BT_T_bearbeitet_uebung
    where FK_UserID = 2)

    Er meldet aber Fehler in Zeile 4.
    Kann man mit MySQL Multiple Row-Unterabfragen verwenden?
    Oder wie kann man das anders machen?

    mfg,
    KaZaK

  • #2
    subselect funktionieren erst in MySQL 4,
    mit MySQL 3 mußte 2 Abfragen machen
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Hi,
      danke für die Info.
      Wie erstelle ich solche Abfragen?
      Gibt es unter MySQL sowas wie Views (unter Oracle)?

      mfg,
      KaZaK

      Kommentar


      • #4
        MySQL kennt leider keine Views
        heute bug ich, morgen browse ich...

        Kommentar


        • #5
          na super...
          und WIE mache ich das nun?
          Es muss doch irgend eine Möglichkeit geben, Datensätze herauszufinden, für die keine Übereinstimmung in einer anderen Tabelle gefunden wird...
          (Ich kann mir gar nicht vorstellen, dass das so ummöglich ist...Oder denke ich jetzt einfach komplett falsch?)

          Die ganzen outer-joins liefern ja auch immer noch den ganzen anderen Schrott mit, den ich gar nicht haben will...

          mfg,
          KaZaK

          Kommentar


          • #6
            Die ganzen outer-joins liefern ja auch immer noch den ganzen anderen Schrott mit, den ich gar nicht haben will...
            vor allem, wenn du eine SELECT * Abfrage startest ... ist das wirklich notwendig???

            Um nen JOIN wirst du nicht rumkommen.
            heute bug ich, morgen browse ich...

            Kommentar


            • #7
              Code:
              SELECT a.aufgabe_id
              FROM
                aufgabentabelle a
                LEFT JOIN bearbeitet b ON 
                  a.aufgabe_id=b.aufgabe_id 
                  AND
                  b.user_id=2
              WHERE b.user_id IS NULL
              probier das mal
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                dir ein DICKES, FETTES DANKE!!!

                ich hab schon sonstwas für Überlegungen angestellt, wie ich das lösen kann...Aber deins funktioniert!

                Aber wieso muss ich auf die "Nicht-existenz" vom user prüfen? Ich will doch nach der Aufgabennummer fragen??

                Aber egal, es läuft, und das ist super!
                Nochmal Danke,
                KaZaK
                ps: du trägst deinen Namen zu recht

                Kommentar


                • #9
                  Original geschrieben von KaZaK
                  dir ein DICKES, FETTES DANKE!!!
                  you're welcome
                  Aber wieso muss ich auf die "Nicht-existenz" vom user prüfen? Ich will doch nach der Aufgabennummer fragen??
                  Code:
                  SELECT a.aufgabe_id, u.user_id
                  FROM
                    aufgabentabelle a
                    LEFT JOIN bearbeitet b ON 
                      a.aufgabe_id=b.aufgabe_id 
                      AND
                      b.user_id=2
                  jetzt klar warum?
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    hmmm, so halb...

                    im "ON" wird (auch) auf die userid geprüft.
                    Daher müsste es total egal sein, ob ich null bei userid oder aufgabenid teste.

                    Richtig?

                    Kommentar


                    • #11
                      hattest du in der spalte aufgabe_id mal NULL drinstehen?

                      die abfraged sollte dir alle aufgabe_id-werte liefern und ne 2 in der spalte user_id wenn user 2 diese aufgabe bearbeitet hat, hat er sie nicht bearbeitet, steht in der spalte user_id NULL (bei deiner select-abfrage)

                      wenn in aufgabe_id NULL stehen würde, wäre das eine nicht vorhandene aufgabe und die kann nun wirklich niemand bearbeiten
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        ok, jetzt kapiert...

                        mfg,
                        KaZaK

                        Kommentar

                        Lädt...
                        X