Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Falsche Ausgabe bei WHERE Clause

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Falsche Ausgabe bei WHERE Clause

    Hallo zusammen,

    habe 2 Tabellen:

    host_essen
    id | host
    ------------
    8 |100001



    host_muelheim
    id | host
    -------------
    5 | 100000


    Bei folfender Abfrage:

    Code:
    SELECT host_essen.host AS essen, host_muelheim.host AS muelheim
    FROM host_essen, host_muelheim
    WHERE host_essen.id = '8' OR host_muelheim.id = '8'
    erhalte ich folgendes Ergebnis:

    essen | muelheim
    100001 | 100000


    kann mir bitte jmd. sagen was daran falsch ist bzw. warum er BEIDE Werte ausspuckt, obwohl es die id = 8 nur einmal gibt!?

  • #2
    host_muelheim.id = '8"
    ' oder " ?

    Kommentar


    • #3
      Das war nur ein Tippfehler, wurde wieder korrigiert.

      Kommentar


      • #4
        Hallo,

        weil die SQL-Anfrage murks ist:

        Genaugenommen fragst Du alles ab, wo host_essen.id = 8 ist ODER host_muelheim= 8. MySQL macht dann auch genau das: Es sucht die id sowohl in der host_essen-Tabelle und in der host_muelheim-Tabelle. Finden tut MySQL die id=8 in der host_essen-Tabelle, damit ist die WHERE-Abfrage erfüllt, und die Ausgabe ergibt sich aus dem gefundenen Eintrag in der host_essen-Tabelle, kombiniert mit allen Einträgen der host_muelheim-Tabelle. Wenn Du noch mehr Einträge in der host_muelheim-Tabelle hättest, also zum Beispiel id = 1, host = 1 und id = 2, host = 2, dann würdest Du als Ergebnis bekommen:

        essen | muelheim
        100001 | 1
        100001 | 2
        100001 | 100000

        Schlimmer noch: Wenn es einen Eintrag mit id = 8 auch in der muelheim-tabelle geben würde, dann hättest zu diesem Eintrag auch noch zusätzlich Suchergebnisse, die diesen Eintrag mit allen Einträgen aus host_essen kombiniert.

        Gruß,
        Stormray

        Kommentar


        • #5
          Stimmt, hast ja vollkommen Recht
          Also 2 mal die gleiche ID wird es nicht geben.
          Wenn ich nachher mal Zeit habe, werd ich nochmal schauen wie man das
          anders machen könnte, melde mich also nochmal. Erst einmal
          muss ich was wichtigeres machen bevor ich mich damit näher befasse.

          Trotzdem danke schonmal.

          Kommentar


          • #6
            Wie ist das ganze denn geplant? Müssen es denn zwei verschiedene Tabellen sein? Im Augenblick erscheint es mir relativ unsinnig, da überhaupt zwei Tabellen zu haben, eine Tabelle (id, host, ort) wäre vermutlich praktikabler?!? Damit wäre die Anfrage einfach:

            SELECT * FROM hosttabelle WHERE id = '8';

            Gruß,
            Stormray

            Kommentar


            • #7
              Also wenn ich hier alles aufführen würde, würde es meinen zeitlichen Rahmen spregen

              Ich muss das mit mehreren tabellen machen. da der wert "host" auf auto_increment steht und ich zu jedem ort seperate hosts habe, davor kommt
              auch noch eine kennung "d-e" für essen oder "d-mhm" für mülheim und und un.
              Geht also nicht anders, muss nun zusehen wie ich das so irgendwe hinbekomme.

              Bin gerade mit den Eintragen der Daten aus einem Formuler in die DB fertig geworden.
              Insgesamt 7DINA4 Seiten Quelltext.

              Nun mache ich mich mal an die AUSGABE.
              Werde dann wohl bald schon auf diese Abfrage hier zurückkommen "müssen".

              Kommentar


              • #8
                Was mir gerade noch einfällt,
                ich müsste wohl für jede Tabelle eine einzelne Abfrage machen, bzw. je nach
                Standort der Person, direkt in der Tabelle die dem Ort entspricht suchen.

                Ok, für euch hier alle nun etwas unverständlich, weil ich nicht wisst wie es bei
                mir aufgebaut ist, aber ich denke so müsste es passen

                Kommentar


                • #9
                  So Leute, das Problem besteht immer noch und nun komm ich nicht
                  mehr weiter wenn ich es nicht gelöst habe.

                  Jemand ne Idee, oder soll ich doch lieber nochmal von vorne erzählen?!

                  Kommentar

                  Lädt...
                  X