mysql IN und JOINS

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

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

    Kommentar


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

      Kommentar


      • #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.

        Kommentar


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

          Kommentar


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

            Kommentar


            • #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.

              Kommentar


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

                danke, mfg tom

                Kommentar

                Lädt...
                X