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

  • MrVienna
    hat ein Thema erstellt [Erledigt] Mysql-Abfrage aus zwei Tabellen.

    [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 ?

  • MrVienna
    antwortet
    Nachtrag:

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

    Werde ich mir hinter die Ohren schreiben.

    Einen Kommentar schreiben:


  • MrVienna
    antwortet
    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.

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    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?

    Einen Kommentar schreiben:


  • MrVienna
    antwortet
    @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.

    Einen Kommentar schreiben:


  • Paul.Schramenko
    antwortet
    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

    Einen Kommentar schreiben:


  • Destruction
    antwortet
    Zudem solltest du "*" vermeiden und die Spalten die du brauchst hinschreiben.

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X