problem bei join

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

  • problem bei join

    hallo!

    habe eine table movie_data und eine table user_movie..

    movie_data:
    movieid|title|genre|etc..

    user_movie:
    userid|movieid|listtype

    jetzt möchte ich, dass er alle movie-id's aus user_movie holt, bei der die userid=2 ist, und diese mit der table movie_data vergleicht und als ergebniss soll er jene filme liefern, die nicht mit dem user in einem zusammenhang stehen (allso all jene, die nicht der user mit der id 2 hat)


    habe mir das folgendermaßen überlegt:

    PHP-Code:

    $sql 
    mysql_query("SELECT DISTINCTROW movie_data.movieid AS movieid,
    movie_data.title AS title, movie_data.genre AS genre,
    movie_data.regisseur AS regisseur, movie_data.description AS description
    FROM movie_data JOIN user_movie ON
    user_movie.movieid <> movie_data.movieid
    WHERE user_movie.userid='"
    .get_userid()."'
    ORDER BY movie_data.title ASC"
    ) or die(mysql_error()); 

    fehler oder so etwas gibt er nicht aus dafür aber alle filme, die in movie_data sind..

    was mache ich falsch..?!!


    bitte helft mir! lg und vielen dank i.v. - harry d.

  • #2
    Re: problem bei join

    du willst also alle die filme auslesen, die der user hat - um dann darüber auf die menge der filem zu kommen, die der user nicht hat ...?

    das ist doch wohl eine etwas abstruse logik, findest du nicht?


    vielleicht möchtest du ja eher mal versuchen, alle filme aus movie_data auslesen, zu denen es in user_movie keinen datensatz gibt, oder keinen in dem user 2 steht ...
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3

      du willst also alle die filme auslesen, die der user hat - um dann darüber auf die menge der filem zu kommen, die der user nicht hat ...?

      das ist doch wohl eine etwas abstruse logik, findest du nicht?
      hmm.. klingt tatsächlich ein bisschen komisch und wirr..


      vielleicht möchtest du ja eher mal versuchen, alle filme aus movie_data auslesen, zu denen es in user_movie keinen datensatz gibt, oder keinen in dem user 2 steht ...
      ja.. das möchte ich aber ich weiss nicht wie ..!!



      lg, harry d.

      Kommentar


      • #4
        bzw.: mach ich das nicht eigentlich so in meinem sql-statment..?!!!

        Kommentar


        • #5
          hmm.. will mir wirklich nieman helfen..!

          ein kleiner tipp würde vielleicht schon genügen..


          lg, harry d.

          Kommentar


          • #6
            http://www.php-resource.de/forum/sho...threadid=28292

            nach "alle zahlen auslesen, zu denen das quadrat nicht vorhanden ist" suchen
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              hi!

              erst einmal vielen dank, aber das beispiel habe ich mittlerweile auch selber gefunden und getestet:

              PHP-Code:

              $sql 
              mysql_query("SELECT DISTINCTROW t1.movieid AS movieid, t1.title AS title,
              t1.genre AS genre, t1.regisseur AS regisseur, t1.description AS description 
              FROM movie_data t1
              LEFT JOIN user_movie t2 USING(movieid)
              WHERE t2.userid='"
              .get_userid()."'") or die(mysql_error()); 
              ergebniss: leider das selbe wie vorher - er gibt ALLES aus..

              Kommentar


              • #8
                Original geschrieben von mrhappiness
                nach "alle zahlen auslesen, zu denen das quadrat nicht vorhanden ist" suchen
                [ ] das hast du gemacht, aber du hast nichts gefunden

                [ ] das hast du gemacht, aber du hast es nicht umgesetzt

                [ ] das hast du nicht gemacht

                [ ] hä?

                [ ] du NULL, mach mich nicht so an

                zutreffendes bitte ankreuzen
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  VIELEN, VIELEN HERZLICHEN DANK!!!

                  [ X ] ich bin die größte NULL!!



                  lg, harry d.

                  Kommentar


                  • #10
                    hmm.. sry das ich noch einmal stören muss, aber wie kann ich in dieser abfrage jetzt noch die userid von user_movie einbauen..???

                    PHP-Code:

                    $sql 
                    mysql_query("SELECT DISTINCTROW t1.movieid AS movieid, t1.title AS title,
                    t1.genre AS genre, t1.regisseur AS regisseur, t1.description AS description 
                    FROM movie_data t1
                    LEFT JOIN user_movie t2 USING(movieid)
                    WHERE t2.movieid IS NULL AND t2.userid<>'"
                    .get_userid()."'")
                    or die(
                    mysql_error()); 
                    ergebniss: nothing..



                    mfg.- harry d.

                    Kommentar


                    • #11
                      user-id nicht ins WHERE, sondern HAVING ...?
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        wie kann denn ein feld eines datensatzes NULL sein, weil nichts gefunden wurde, ein anderes aber einen wert verschieden von NULL haben?

                        versuch mal OR statt AND

                        aber so ganz schlau werde ich aus deinem datebankdesign nicht, gibt es keinen film, den mehr als ein benutzer haben kann?
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          ich weiss.. dass es mittlerweile schon mehr zu einem ratespiel geworden ist, aber ich kappier es einfach nicht..

                          PHP-Code:

                          $sql 
                          mysql_query("SELECT DISTINCTROW t1.movieid AS movieid, t1.title AS title,
                          t1.genre AS genre, t1.regisseur AS regisseur, t1.description AS description 
                          FROM movie_data t1
                          LEFT JOIN user_movie t2
                          USING(movieid) t2.movieid IS NULL
                          HAVING t2.userid<>'"
                          .get_userid()."'") or die(mysql_error()); 
                          liefert folgenden fehler:

                          Code:
                          You have an error in your SQL syntax. Check the manual that corresponds
                           to your MySQL server version for the right syntax to use near 't2.movieid 
                          IS NULL HAVING t2.userid<>'2'' at line 1

                          bitte lasst mich jetzt - auch wenn ich schon lästig werde - nicht hängen..!- ich brauche das heute noch, damit ich weitermachen kann..


                          lg, harry d.

                          Kommentar


                          • #14
                            @mr.happiness: klar gibt es filme, die mehere user haben..

                            in der table user_movie sind movieid und userid die primärschlüssel -> ein user kann einen film nur in einer "liste" haben..! das schließt aber nicht aus, dass andere user den selben film in irgend einer "liste" haben..


                            deshalb will ich ja überprüfen, welche filme ein bestimmter user hat und diese dann von der gesamtmovieliste "subtrahieren", damit er sieht, was er noch nicht hat..



                            mfg.- harry d.
                            Zuletzt geändert von icon; 04.11.2004, 18:50.

                            Kommentar


                            • #15
                              hallo leute!

                              ich habe die lösung für mein problem leider immer noch nicht gefunden..!

                              wäre super, wenn ihr mir helfen könntet..!



                              lg, harry d.

                              Kommentar

                              Lädt...
                              X