Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mysql-Abfrage aus zwei Tabellen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Mysql-Abfrage aus zwei Tabellen

    Liebe Leute

    Ich möchte aus zwei Tabellen alle Datensätze herausfinden, welche in der ersten Tabelle in einer Kolonne eine ‚1‘ eingetragen haben und in der anderen Tabelle, in der Kolonne ‚id‘ nicht den gleichen id-Wert haben, wie in der ersten Tabelle.

    Wahrscheinlich wird der Code deutlicher meine Absicht beschreiben.

    PHP-Code:
    $sql"SELECT * from kunden,vorschlag WHERE kunden.test ='1'and
    kunden.id <> vorschlag.id"
    ; echo mysql_error();
    $resmysql_query($sql);
    $Anzahl= @mysql_num_rows ($res);  echo $Anzahl; exit; 
    Nun ist es so, dass es 11 Datensätze gibt, welche in der Tabelle ‚kunden‘, Kolonne ‚test‘ eine ‚1‘ eingetragen haben, deren id aber nicht in der Tabelle ‚vorschlag‘ zu finden ist. Also müßten – meiner Überlegung nach – auch 11 Datensätze ausgegeben werden. Ich kriege aber immer nur eine 0 zurück.

    Was mache ich da falsch ?

  • #2
    Was mache ich da falsch ?
    Du benutzt den Fehlerkontrolloperator (@) und die Ausgabe von mysql_error() vor dem eigentlichen Absenden der Abfrage ist auch recht sinnfrei.
    [URL]http://hallophp.de[/URL]

    Kommentar


    • #3
      Zudem solltest du "*" vermeiden und die Spalten die du brauchst hinschreiben.
      "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

      Kommentar


      • #4
        Ich frag mich grad, was du machen willst.
        Ich denke hier wäre wohl ein LEFT oder INNER JOIN angebracht.
        Ansonsten siehe Permalink #2 & #3
        "My software never has bugs, it just develops random features."
        "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

        Kommentar


        • #5
          @Asipak
          Du hast recht, die Syntax war etwas unbedacht. Ich habe sie geändert, es wurde kein Fehler angezeigt und zu meinem Ziel hat es leider auch nicht geführt.

          @Destruction
          Es ist ein ziemlich großer Datensatz mit über 30 Spalten, die ich alle brauche. Deswegen * und keine Spaltenauflistung.

          @Paul Schramenko
          Was ich machen will: Wie oben beschrieben. Alle Datensätze herausfinden, die einen Eintrag in der besagten Spalte der ersten Tabelle haben und keinen Eintrag in der beschriebenen Spalte der zweiten Tabelle. Na gut, werde es mit einem inner join versuchen, vielleicht werde ich dann von Mysql besser verstanden.

          Kommentar


          • #6
            Du benutzt bereits einen INNER JOIN, s. Einführung in Joins .

            Datenbanken - Warum soll ich nicht SELECT * schreiben?

            Wie sieht denn dein Code jetzt aus?
            [URL]http://hallophp.de[/URL]

            Kommentar


            • #7
              Danke Asipak

              Die Lösung war zwar simpl, aber für mich noch unbekannt:

              Die zweite Tabelle (Vorschlag) war noch gänzlich leer. Also noch kein einziger Datensatz drin.

              Nun habe ich versuchsweise einen Datensatz eingefügt und der Code funktioniert klaglos. Auch der alte Code, wie ich ihn zuerst beschrieben hatte. Somit hätte ich mir das dreimalige versuchsweise Umbauen ersparen können.

              Na gut, jetzt weiß ich, dass eine Abfrage an eine leere Tabelle nicht ratsam ist.

              Danke nochmals für die Hilfe.

              Kommentar


              • #8
                Nachtrag:

                Danke auch für den Hinweis: Warum soll ich nicht SELECT * schreiben?

                Werde ich mir hinter die Ohren schreiben.

                Kommentar

                Lädt...
                X