mysql IN und JOINS

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • mysql IN und JOINS

    Hallo Leute,

    Hab erneut eine frage.
    und nämlich, wie kann ich mit JOINS und der IN bedingung zusammen arbeiten?

    beispielcode:
    PHP Code:
    mysql_query("SELECT a.*, b.* FROM user_abook a, user_abooklist b WHERE a.abook_id IN (b.abooklist_string)"); 
    Das müsste meiner meinung nach doch klappen, oder nicht?

    mfg tom

  • #2
    Das müsste meiner meinung nach doch klappen, oder nicht?
    gute Frage - hast dus ausprobiert?

    http://php-resource.de/forum/showthr...threadid=28292
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Comment


    • #3
      Danke erstmal.

      Jetzt hab ichs so versucht:
      PHP Code:
      mysql_query("SELECT a.*, b.* FROM user_abook a INNER JOIN user_abooklist b ON a.abook_id IN (b.abooklist_string)"); 
      außerdem: in der spalte b.abooklist_string befindet sich folgender string: (41, 44)

      leider funktioniert das noch immer nicht

      Comment


      • #4
        Original geschrieben von tomtitom
        außerdem: in der spalte b.abooklist_string befindet sich folgender string: (41, 44)
        Dann setzen wir diesen String doch mal kurz beispielhaft an dieser Stelle
        Code:
        ON a.abook_id IN (b.abooklist_string)
        statt des Spaltennamens in deine Query ein:
        Code:
        ON a.abook_id IN ('(41, 44)')
        Ist das ernsthaft das, womit du den Inhalt von a.abook_id vergleichen willst ...?
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Comment


        • #5
          danke wahsaga.

          also wenn ich es so test:
          Code:
          ON a.abook_id IN (41, 44)
          in der spalte steht: 41, 44
          also ohne die klammern
          dann ist das ergebnis wie gewünscht, woran liegt das?

          mfg tom

          Comment


          • #6
            OK, bin jetzt draufgekommen, das der inhalt der spalte ab dem ersten beistrich abgeschnitten wird.

            hmm, kann man das mit irgendeinem befehl umgehen?

            mfg tom

            Comment


            • #7
              das liegt daran, dass die Daten als ein String behandelt wird. Wenn du ('(...,...)') hast dann geht der DBMS hin und nimmt nicht die einzelne Zahl zum Vergleich sondern den ganzen Block, und weil der gesamte Block ein String ist, muss das DBMS versuchen in Zahl zu konvertieren und ist dann an der ( gescheitert. Alles klar.

              Comment


              • #8
                Ja danke, darum hab ich ja gefragt wie dieses problem zu lösen ist?

                danke, mfg tom

                Comment

                Working...
                X