Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 3 von 3
  1. #1
    Gesperrt
    Registriert seit
    19.01.2016
    Beiträge
    1

    Standard Viel zu viele Ergebnisse bei SQL Abfrage

    Hallo an alle,

    ich kann leider die SQL Query nicht posten, da diese Daten aus dem Produktivsystem enthält.

    Ich denke aber, dass das Ergebnis sehr eindeutig ist und mit Sicherheit schon bekannt ist. (Anfängerfehler) :-)


    Ich hätte als Ergebnis der SQL Abfrage gerne folgendes: (fiktiv)

    Kunde - Produkt - Datum - Gesamtpreis - Verkäufer
    ----------------------------------------------------------
    A Bleistift 1.1.15 5 Helmut
    B Radierer 2.1.15 1 Andreas

    Es wurden bislang auch nur 2 Bestellungen eingegeben.
    Es soll also angezeigt werden wer was wann um wie viel bei wem gekauft hat.


    In Wirklichkeit sieht es aber so aus: (Es wird komischerweise für jedes Produkt in der Datenbank eine eigene Zeile gemacht, obwohl diese gar nicht gekauft wurden.)
    In der Datenbank gibt es 5 Produkte. (Bleistift, Radierer, Kalender, Telefon und Papier)


    Kunde - Produkt - Datum - Gesamtpreis - Verkäufer
    ----------------------------------------------------------
    A Bleistift 1.1.15 5 Helmut
    A Radierer 1.1.15 5 Helmut
    A Kalender 1.1.15 5 Helmut
    A Telefon 1.1.15 5 Helmut
    A Papier 2.1.15 5 Helmut
    B Bleistift 2.1.15 5 Andreas
    B Radierer 2.1.15 5 Andreas
    B Kalender 2.1.15 5 Andreas
    B Telefon 2.1.15 5 Andreas
    B Papier 2.1.15 5 Andreas

    Die rot markierten Einträge wären okay, aber die anderen möchte ich nicht sehen.

    Kann mir jemand sagen wo das Problem liegen kann?

  2. #2
    Stammgast
    Registriert seit
    18.07.2008
    Beiträge
    3.036

    Standard

    Ich vermute Du hast einfach die Verknuepfungsbedingung vergessen. Grundsaetzlich ist ein JOIN zweier Tabellen immer ein Kreuzprodukt der beiden Tabellen. Das heisst jede Zeile der einen Tabelle wird mit jeder Zeilen der anderen Tabelle kombiniert. Ich gehe jetzt mal davon aus, dass Du eine Tabelle Kunde und eine Tabelle Bestellung hast. Dann muesste die Abfrage etwa so aussehen:

    Code SQL:
    SELECT *
    FROM Kunde k
    JOIN Bestellung b ON k.KUNDE_ID = b.KUNDE_ID

    Du kannst die KUNDE_ID auch im WHERE statement verknuepfen, der Lesbarkeit wegen macht man das aber ueblicherweise so. Man kann dann besser erkennen was die Tabellen verknuepft und was tatsaechlich weitere Einschraenkungen sind. Falls Du z.B. nur Kunden mit dem Namen "A" haben mochtest wuerde im WHERE noch "k.NAME = 'A'" stehen.

  3. #3
    Stammgast
    Registriert seit
    24.10.2011
    Beiträge
    1.261

    Standard

    Zitat Zitat von lnino Beitrag anzeigen

    Kunde - Produkt - Datum - Gesamtpreis - Verkäufer
    ----------------------------------------------------------
    A Bleistift 1.1.15 5 Helmut
    B Radierer 2.1.15 1 Andreas

    Es wurden bislang auch nur 2 Bestellungen eingegeben.
    Es soll also angezeigt werden wer was wann um wie viel bei wem gekauft hat.


    In Wirklichkeit sieht es aber so aus:

    In der Datenbank gibt es 5 Produkte. (Bleistift, Radierer, Kalender, Telefon und Papier)


    Kunde - Produkt - Datum - Gesamtpreis - Verkäufer
    ----------------------------------------------------------
    A Bleistift 1.1.15 5 Helmut
    A Radierer 1.1.15 5 Helmut
    A Kalender 1.1.15 5 Helmut
    A Telefon 1.1.15 5 Helmut
    A Papier 2.1.15 5 Helmut
    B Bleistift 2.1.15 5 Andreas
    B Radierer 2.1.15 5 Andreas
    B Kalender 2.1.15 5 Andreas
    B Telefon 2.1.15 5 Andreas
    B Papier 2.1.15 5 Andreas
    Noch ergänzend zu fanderlf:
    Nimmt man die Beispieldaten oben, scheint konkret die Produkttabelle ohne Join Kriterien im Select-Statement eingebunden zu sein (Indiz ist: alle 5 Produkte werden vollständig wiederholt je real vorhandener Bestellung, also 2x). Noch weiter fantasiert, fehlt dann je nach Datenmodell offenbar die Verknüpfung zwischen Bestellung(oben als Datum) und Produkt. Also inetwa
    ..from .. bestellung b join produkt p on b.produktid = p.produktid ..
    Gruß, defo

 

 

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •