[MySQL 4.0] Planlos: Kaskadiertes Select?

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

  • [MySQL 4.0] Planlos: Kaskadiertes Select?

    Mal wieder so 'ne blöde Newbie Frage....

    Ich habe eine Tabelle mit Usern und eine Tabelle mit Artikeln.
    Dazu eine Tabelle wo ich user_id's und artikel_id's einander zuordne (2 spalten)
    Jetzt will ich alle artikelstammsätze für einen bestimmten user bekommen.

    Also quasi

    SELECT article_id from user_article where user_id='1234567'

    und mit dem ergebnis folgende query anstossen:

    SELECT * from articles where article_id='$alle_article_ids_von_oben'

    Ich denke das ist ein Standardfall, den man bestimmt mit einer Abfrage mittels JOIN lösen kann, aber ich blick's einfach nicht, und weiß auch nicht so recht, wie man nach sowas suchen soll.....

    Danke für Eure Hilfe
    Dennis

  • #2
    SELECT *
    FROM articles a
    LEFT JOIN users u on id
    WHERE u.id = xxx

    Kommentar


    • #3
      Wow, das ging ja flott ;-))

      Vielen Dank, ich probier's gleich mal aus - und dann werd' ich mal versuchen das mit dem JOIN endlich mal zu blicken.....

      THX
      Dennis

      Kommentar


      • #4
        TobiaZ,

        wenn Du noch Zeit und Lust hast:

        >>SELECT *
        >>FROM articles a
        >>LEFT JOIN users u on id
        >>WHERE u.id = xxx

        Die Tabelle die ich abfrage heißt "users_articles",
        das abzufragende Feld heißt "artikelid".

        In den Artikelstammdaten heißt das korrespondierende Feld NUR "id". Ist das ein Problem? Sollte ich das in "artikelid" umbenennen?

        Folglich sollte das m.E. heißen

        SELECT *
        FROM articles a
        LEFT JOIN users_articles u on id (oder articleid??)
        WHERE u.userid = xxx

        Wofür ist das Konstrukt "articles a" gut? Ein Alias? Aber wofür? Kann ich da auch die Tabellennamen direkt nehmen?

        Fragen über Fragen....

        Vielen Dank
        Dennis

        Kommentar


        • #5
          Okay, dein Post zeigt mir, dass du dich schon damit beschäfftigt hast, es nur leider noch nicht ganz blickst. aber unter den Umständen hilft man ja gerne.

          Sorry, die Syntax oben waren ohnehin falsch. Statt on müsste ja USING(id) dahin. war eben nur schnell getippt.

          PHP-Code:
          SELECT // das all solltest du noch spezialisieren
          FROM artikel AS // ja, das ist ein alias
          LEFT JOIN user AS // aliasse nicht zu verwenden bedeutet mehr schreibarbeit ON a.id = u.artid
          WHERE u.id xxx 

          Kommentar


          • #6
            @Tobiaz:

            lass mal die "AS" weg, das ist nicht ANSI konform, und außerdem unnötig !
            Der MS-SQL Server haut dir bei "AS" zB auf die Finger
            TBT

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


            PHP 2 AllPatrizier II Browsergame

            Kommentar


            • #7
              Oh, wollte verdeutlichen, dass es Aliasse sind. An MS hatte ich net gedacht.

              Kommentar


              • #8
                Ich hab's dann gestern abend doch noch geblickt :-))))))

                Für alle anderen Anfänger da draussen:
                Das Konstrukt:

                SELECT *
                FROM table1,table2
                WHERE table1.articleid=table2.id
                AND table1.userid=xxx

                macht genau das was ich will - verbindet die Datensätze der zwei Tabellen über id und articleid und selektiert über die userid der tabelle1.

                Danke Euch allen für Eure Hilfe!
                Dennis

                Kommentar


                • #9
                  select * benutzt man trotzdem nicht! Hier wird jede einzelne spalte extra angesprochen!

                  Kommentar


                  • #10
                    DAS weiß ich ;-)
                    Die brauche ich aber in dem Fall auch alle...

                    Trotzdem nochmal Danke!

                    Dennis

                    Kommentar


                    • #11
                      Die brauche ich aber in dem Fall auch alle...
                      EGAL! Macht man trotzdem NICHT!

                      Kommentar

                      Lädt...
                      X