Row Subquery unter MySQL 4.1.x

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

  • Row Subquery unter MySQL 4.1.x

    Guten Morgen,

    ich beiße mir schon den ganzen Morgen an einer Datenbankabfrage die Zähne aus. Es sollen Anträge ausgelesen werden und zu diesen Anträgen unter anderem auch die jeweils letzte Mitarbeiter Bemerkung als Notiz.

    Folgende Lösung funktioniert unter MySQL 5.x wunderbar:
    Code:
    SELECT
    	c.contract_id,
    	c.VsnKUN,
    	DATE_FORMAT( VsnErstelltDatum, '%d.%m.%Y %H:%i:%s' ) AS VsnErstelltDatum,
    	u.SuchName,
    	u.Vorname,
    	r.RisSparte,
    	b.RemText,
    	b.RemDatum,
    	b.RemMitarbeiter
    FROM (
    	tared_customer_contracts c
    )
    LEFT JOIN tared_customer u ON ( u.KUN = c.VsnKUN )
    LEFT JOIN tared_risk_key r ON ( r.RIS = c.VsnRIS )
    WHERE contract_id IN
    (
    	SELECT
    	RemContract
    	FROM tared_contract_bemerkungen
    	ORDER BY RemDatum DESC
    	LIMIT 0,1
    ) AS b
    AND VsnImportJaNein = 'ja'
    ORDER BY contract_id DESC
    Da aber auf dem Server, auf dem das Script später mal laufen soll, nur eine MySQL Version 4.1.10a installiert ist, bekomme ich natürlich die Fehlermeldung [COLOR=crimson]#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'[/COLOR]

    Dann habe ich versucht das ganze ander zu lösen:
    Code:
    SELECT
    	c.contract_id,
    	c.VsnKUN,
    	DATE_FORMAT( VsnErstelltDatum, '%d.%m.%Y %H:%i:%s' ) AS VsnErstelltDatum,
    	u.SuchName,
    	u.Vorname,
    	r.RisSparte,
    	b.RemText,
    	DATE_FORMAT(b.RemDatum, '%d.%m.%Y') AS RemDatum,
    	b.RemMitarbeiter
    FROM (
    	tared_customer_contracts c
    )
    LEFT JOIN tared_customer u ON ( u.KUN = c.VsnKUN )
    LEFT JOIN tared_risk_key r ON ( r.RIS = c.VsnRIS )
    LEFT JOIN
    (
    	SELECT
    		RemContract,
    		RemText,
    		RemDatum,
    		RemMitarbeiter
    	FROM 
    		tared_contract_bemerkungen
    	ORDER BY RemDatum DESC
    	LIMIT 0,1
    ) AS b ON (c.contract_id = b.RemContract)
    WHERE VsnImportJaNein = 'ja'
    ORDER BY contract_id DESC
    Bei dieser Lösung funktioniert die Abfrage zwar unter MySQL 4.1.10a, aber die Spalten aus der Tabelle tared_contract_bemerkungen sind im Ergebnis NULL.

    Gibt es eine andere Lösung?
    Bitte jetzt keine Antworten wie Na klar, aktualisiere MySQL!. Das liegt nicht in meinen Händen.

    Gruß
    Marcel
    MM Newmedia | MeinBlog

  • #2
    ....
    WHERE contract_id =
    (
    SELECT
    max(RemContract)
    FROM tared_contract_bemerkungen

    ) ....
    Slava
    bituniverse.com

    Kommentar


    • #3
      Danke für den Tipp Slava!
      So ganz richtig ist die Lösung noch nicht, da es auch Einträge ohne Mitarbeiterbemerkungen gibt, die so nicht ausgelesen werden. Aber das bekomme ich hin.

      Danke noch mal.
      MM Newmedia | MeinBlog

      Kommentar

      Lädt...
      X