Abfrage Problem mit JOIN bitte um Hilfe!

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

  • Abfrage Problem mit JOIN bitte um Hilfe!

    Hallo,
    Ich habe zwei Tabellen die ich miteinander vergleichen muss und benutze das erste mal JOIN also bitte habt Rücksicht
    wenn ich vielleicht etwas unqualifizierte fragen stelle.

    Tabelle1
    Column1 Agent = Name des Agenten kann es mehrere geben sollen auch doppelt angezeigt werden
    Column2 Telefonnummer = Telefonnummer ist eine aus der Tabelle1 die einem Agenten zugeordnet wurde

    Tabelle2

    Column1 Device = Telefonnummern können doppelt sein allerdings sollen nicht angezeigt werden
    Column2 TSTAMP = Datum Format 2006-01-16 07:59:25.000 hab ich vorher schon abgeschnitten auf 2006-01-16 07:59:25
    Column3 Zeit = Anzahl Sekunden

    ich habe nun ein Query mit Join erstellt (JOIN wurde oft empfohlen wg perf.). Damit werden alle Telefonnummern (DEVICE) aus Tabelle1 gesucht.
    Alle doppelten wurden dabei entfernt zusätzlich hab ich das Ergebnis dem Agenten zugeordnet. Soweit so gut.
    Jetzt wollte ich allerdings noch das Datum aus Tabelle2 eingrenzen, das bedeutet man bestimmt ein Anfangsdatum und ein Enddatum und bekomme nur die Telefonnummern und Agenten angezeigt,
    die zwischen den beiden Datumsangaben liegen

    Dazu hatte ich folgendes Script benutzt:

    PHP-Code:
    $var_Query "SELECT DISTINCT T2.DEVICE, T1.* from Tabelle2 as T2 LEFT JOIN Tabelle1 as T1 On T2.DEVICE = T1.Telefonnummer where (T2.DEVICE = T1.Telefonnummer) or (T1.Telefonnummer IS NULL) and (T2.TSTAMP >= '$sdatum') AND (T2.TSTAMP = '$edatum') ORDER BY T1.Gewerk DESC"
    ging nicht!

    ich habe nun folgende Abfragen separat erarbeitet die auch für sich separat ohne fehler funktionieren.

    für die Abfrage nur die Daten im Zeitraum von bis
    PHP-Code:
    $var_Query " SELECT DISTINCT T4.DEVICE, T4.TSTAMP from Tabell2 as T4 where (T4.TSTAMP >= '$sdatum') and (T4.TSTAMP <= '$edatum')"
    und
    Für die Ausgabe Telefonnummern zugeordnet zu den Agenten
    PHP-Code:
    $var_Query "SELECT DISTINCT T2.DEVICE, T1.* from Tabell2 as T2 LEFT JOIN Tabelle1 as T1 On T2.DEVICE = T1.Telefonnummer where (T2.DEVICE = T1.Telefonnummer) or (T1.Telefonnummer IS NULL) ORDER BY T1.Gewerk DESC"

    Ich bekommen leider die Abfragen nicht kombiniert sodas etwas brauchbare heraus kommt.
    Kann mir da jetzt einer weiter helfen.

    ich hab es schon mit

    PHP-Code:
    $var_Query =  "SELECT T3.TSTAMP, T5.TSTAMP from"
          
    $var_Query .= " (SELECT DISTINCT T2.DEVICE, T1.* from Tabell2 as T2 LEFT JOIN Tabell1 as T1 On T2.DEVICE = T1.Telefonnummer where (T2.DEVICE = T1.Telefonnummer) or (T1.Telefonnummer IS NULL)) as T3";
          
    $var_Query .= " (SELECT DISTINCT T4.DEVICE, T4.TSTAMP from Tabell2 as T4 where (T4.TSTAMP >= '$sdatum') and (T4.TSTAMP <= '$edatum')) as T5"
          
    $var_Query .= " where T3.TSTAMP = T5.TSTAMP"
    versucht bekomme immer folgenden Fehler
    The column 'DEVICE' was specified multiple times for 'T3'., SQL state 37000 womit ich immoment nicht fiel anfangen kann!

    Bitte um Hilfe!
    Gruss rst

  • #2
    Hallo,
    ist denn niemand da der zu dem Thema ne Idee hat?
    Hab ich ne falsche Frage gestellt?
    oder bin ich im falschen forum?
    oder oder oder oder.....?

    Kommentar


    • #3
      Hallo rst

      ist denn niemand da der zu dem Thema ne Idee hat?
      Liegt vielleicht daran, dass man so viel scrollen muss bis man den Antwortbutton erreicht.





      SELECT DISTINCT T2.DEVICE, T1.*
      from Tabelle2 as T2
      LEFT JOIN Tabelle1 as T1 On T2.DEVICE = T1.Telefonnummer
      where (T2.DEVICE = T1.Telefonnummer) unnötig, steht schon im ON
      or (T1.Telefonnummer IS NULL)
      and (T2.TSTAMP >= '$sdatum')
      AND (T2.TSTAMP = '$edatum') sollte hier nicht <= stehen?

      ORDER BY T1.Gewerk DESC

      - Du mischst OR und AND ohne Klammern im where.
      Hier solltest Du noch Klammern setzen

      - Für einen Zeitraum gibt's auch noch BETWEEN

      Kommentar


      • #4
        Hallo,
        danke für deine Antwort!!

        hab nun folgendes reingetippt
        PHP-Code:
        var_Query "SELECT DISTINCT T2.DEVICE, T1.* from Tabelle2 as T2 
        LEFT JOIN Tabelle1 as T1 On T2.DEVICE = T1.Telefonnummer 
        where (T2.TSTAMP >= '
        $sdatum') and (T2.TSTAMP <= '$edatum') 
        or (T1.Telefonnummer IS NULL) ORDER BY T1.Gewerk DESC"

        und es funzt

        Danke für deine Antwort und den guten Tip!!

        Bei Between nimmt er aber das ausgewählte Datum nicht als Ergebnis oder?

        Ist es richtig, dass ich das ganze auch ohne where schreiben kann?
        Und was bringt das?

        gruß Ramon

        Kommentar

        Lädt...
        X