Tibor: mysql Queryumbau

Hallo,

ich suche nach einer Query und beide Lösungen, die ich bisher fand, spucken nicht das Ergebnis aus, welches ich erwarte.

  
select k.ID_1, k.ID_2, k.TE, k.TV, MAX(VersionsID)  
FROM Tabelle1 b  
JOIN Tabelle2 tb ON b.ID_3 = tb.ID_3  
LEFT JOIN Tabelle3 k ON b.ID_2 = k.ID_2  
LEFT JOIN Tabelle4 kh ON k.ID_1 = kh.ID_1  
where tb.ID_4 = "105"  

Gibt mir nur 1 Zeile aus, auch wenn unter der max. VersionsID insgesamt z.B. 4 weitere Treffer verzeichnet sind.

  
select k.ID_1, k.ID_2, k.TE, k.TV, VersionsID  
FROM Tabelle1 b  
JOIN Tabelle2 tb ON b.ID_3 = tb.ID_3  
LEFT JOIN Tabelle3 k ON b.ID_2 = k.ID_2  
LEFT JOIN Tabelle4 kh ON k.ID_1 = kh.ID_1  
where tb.ID_4 = "105"  

Gibt mir alle Treffer aus, aber auch die, die irgendeine VersionsID haben.

Ich suche alle Treffer, die unter der macx. VersionsID eingetragen sind.

Wer weiß Rat?

Tibor

  1. Hi,

    ich suche nach einer Query und beide Lösungen, die ich bisher fand, spucken nicht das Ergebnis aus, welches ich erwarte.

    Und du hast bisher nicht mal ein brauchbare Problembeschreibung ausgespuckt (und wir erwarten eine solche).

    DB-Version, Datenstrukturen, Beispiel für erwartete Ergebnis- bei gegebenen Ausgangsdaten.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Und du hast bisher nicht mal ein brauchbare Problembeschreibung ausgespuckt (und wir erwarten eine solche).

      trotzdem denke ich, verstanden zu haben; dass Du mal in der SQL-Doku nach dem "HAVING" Keyword suchen solltest!

      Gruß, Markus

      1. trotzdem denke ich, verstanden zu haben; dass Du mal in der SQL-Doku nach dem "HAVING" Keyword suchen solltest!

        Gruß, Markus

        Hi Markus,

        danke für den Tip.

        Und mach Dir nichts daraus, es war mal wieder eine typische ChrisB-Antwort. Er würde gerne anders sein, aber schafft es nicht.

        Tibor

        1. Hi Markus,

          danke für den Tip.

          Ging übrigens über eine Unterabfrage.

          Tibor

  2. Hallo,

    das

    select k.ID_1, k.ID_2, k.TE, k.TV, MAX(VersionsID)
    FROM Tabelle1 b
    JOIN Tabelle2 tb ON b.ID_3 = tb.ID_3
    LEFT JOIN Tabelle3 k ON b.ID_2 = k.ID_2
    LEFT JOIN Tabelle4 kh ON k.ID_1 = kh.ID_1
    where tb.ID_4 = "105"

      
    ist schonmal per se falsch!  
      
    Deine Lösung heisst korrelierende Unterabfrage.  
      
    Ciao, Frank  
      
    
    
    1. Deine Lösung heisst korrelierende Unterabfrage.

      Stimmt ;-)

      Danke für den Tip.

      Tibor