Seltsames Ergebnis MYSQL Abfrage

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

  • Seltsames Ergebnis MYSQL Abfrage

    Hallo ich verwende folgende Abfrage um die 10 zuletzt verwendeten Projektnummern heraustzufiltern:

    SELECT DISTINCT pid, datum, left(pname,20) as ppname, left(name,10) as nname, pnr
    FROM stunden, projektnr, kunden
    WHERE uid = $aktuser AND pid = projektnr.id AND kid = kunden.id
    ORDER BY datum DESC
    LIMIT 10

    tabelle stunden
    id
    pid
    uid
    stunden
    datum
    pruef
    gebucht

    tabelle projektnr
    id
    pnr
    pname
    kid
    iid

    tabelle kunden
    id
    name


    Leider krieg ich doppelte Einträge... aber warum???? *grübel*
    Sollte DISTINCT nicht dafür sorgen, dass ich jede pid nur einmal finde?

    Wenn ich ein group by pid dazupacke nimmt er nur das Datum, dass er zuerst für eine pid findet und sortiert dafür... deshalb krieg ich 10 falsche Ergebnisse...

    Wo liegt mein Fehler?
    Ich bastel hier schon ne Stunde dran herum.... *seufz*

    THX
    mal wieder auf Books for free! vorbeigeschaut?
    Jetzt mit mehr als 1200 Texten / Tutorials
    Wir veröffentlichen auch eure Texte!

  • #2
    Du weißt aber schon das man wenn man 3 Tabellen ohne Join-Bedingung verknüpft lediglich das Karthesische Produkt bildet ... ??
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      Original geschrieben von goth
      Du weißt aber schon das man wenn man 3 Tabellen ohne Join-Bedingung verknüpft lediglich das Karthesische Produkt bildet ... ??
      öhm.... :-) und das heißt in Klartext?
      mal wieder auf Books for free! vorbeigeschaut?
      Jetzt mit mehr als 1200 Texten / Tutorials
      Wir veröffentlichen auch eure Texte!

      Kommentar


      • #4
        Original geschrieben von lachesis
        öhm.... :-) und das heißt in Klartext?
        schon mal im handbuch nachgeschlagen? link siehe sig.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          ich habs gelöst (falls es interessiert)

          SELECT pid, left(pname,20) as ppname, left(name,10) as nname, pnr, max(datum) as maxdatum
          FROM stunden, projektnr, kunden
          WHERE uid = $aktuser AND pid = projektnr.id AND kid = kunden.id
          GROUP by pid
          ORDER BY maxdatum DESC
          LIMIT 10

          bringt das gewünschte....
          mal wieder auf Books for free! vorbeigeschaut?
          Jetzt mit mehr als 1200 Texten / Tutorials
          Wir veröffentlichen auch eure Texte!

          Kommentar


          • #6
            Original geschrieben von lachesis
            bringt das gewünschte....
            alles klar. schaue dir aber dennoch mal den teil mit JOINS im handbuch an. damit kannst du deine query durchaus noch optimieren.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar

            Lädt...
            X