MySql-Abfrage geht nach Update nicht mehr

Bacaaardi

Grünschnabel
Hallo folgende Abfrage hat seit Monaten problemlos funktioniert:

SELECT Projekt,pkey AS Schlüssel,reporter AS Autor,assignee AS Bearbeiter,
created AS Erstellt,updated AS Aktualisiert,Vorgangstyp,Lösung,Status,
Priorität,Komponente,betrifft_Version, Lösungsversion FROM

(SELECT *
FROM jiraissue k

LEFT OUTER JOIN (SELECT id, pname AS Projekt FROM project) l on (k.project= l.id)
LEFT OUTER JOIN (SELECT id, pname AS Vorgangstyp FROM issuetype) m on (k.issuetype= m.id)
LEFT OUTER JOIN (SELECT id, pname AS Lösung FROM resolution) o on (k.resolution= o.id)
LEFT OUTER JOIN (SELECT id, pname AS Status FROM issuestatus) u on (k.issuestatus= u.id)
LEFT OUTER JOIN (SELECT id, pname AS Priorität FROM priority) n on (k.priority= n.id)) yy
LEFT OUTER JOIN
(SELECT * FROM
(SELECT a.source_node_id, MAX(b.cname) AS Komponente
FROM nodeassociation a LEFT OUTER JOIN component b ON (a.sink_node_id = b.id)
WHERE association_type = 'IssueComponent'
GROUP BY a.source_node_id) x
LEFT OUTER JOIN
(SELECT a.source_node_id, MAX( c.vname) AS Lösungsversion
FROM nodeassociation a LEFT OUTER JOIN projectversion c ON (a.sink_node_id = c.id)
WHERE association_type = 'IssueFixversion'
GROUP BY a.source_node_id) y
ON (x.source_node_id=y.source_node_id)
LEFT OUTER JOIN
(SELECT a.source_node_id, MAX(c.vname) AS betrifft_Version
FROM nodeassociation a LEFT OUTER JOIN projectversion c ON (a.sink_node_id = c.id)
WHERE association_type = 'Issueversion'
GROUP BY a.source_node_id) z
ON (x.source_node_id=z.source_node_id)) xx
ON (xx.source_node_id = yy.id)
WHERE Projekt ='Testprojekt'
ORDER BY pkey DESC


Wir haben ein Update unsere Datenbank gemacht. Seitdem kommt immer die Fehlermeldung:

Duplicate colum name 'id'

Hat jemand eine Idee?
 
Hallo Bacaaardi,

von bzw. auf welche MySql-Version bist du gewechselt?

Dein Problem habe ich mal rot markiert.
SELECT Projekt,pkey AS Schlüssel,reporter AS Autor,assignee AS Bearbeiter,
created AS Erstellt,updated AS Aktualisiert,Vorgangstyp,Lösung,Status,
Priorität,Komponente,betrifft_Version, Lösungsversion FROM

(SELECT *
FROM jiraissue k

LEFT OUTER JOIN (SELECT id, pname AS Projekt FROM project) l on (k.project= l.id)
LEFT OUTER JOIN (SELECT id, pname AS Vorgangstyp FROM issuetype) m on (k.issuetype= m.id)
LEFT OUTER JOIN (SELECT id, pname AS Lösung FROM resolution) o on (k.resolution= o.id)
LEFT OUTER JOIN (SELECT id, pname AS Status FROM issuestatus) u on (k.issuestatus= u.id)
LEFT OUTER JOIN (SELECT id, pname AS Priorität FROM priority) n on (k.priority= n.id)) yy

LEFT OUTER JOIN
(SELECT * FROM
(SELECT a.source_node_id, MAX(b.cname) AS Komponente
FROM nodeassociation a LEFT OUTER JOIN component b ON (a.sink_node_id = b.id)
WHERE association_type = 'IssueComponent'
GROUP BY a.source_node_id) x
LEFT OUTER JOIN
(SELECT a.source_node_id, MAX( c.vname) AS Lösungsversion
FROM nodeassociation a LEFT OUTER JOIN projectversion c ON (a.sink_node_id = c.id)
WHERE association_type = 'IssueFixversion'
GROUP BY a.source_node_id) y
ON (x.source_node_id=y.source_node_id)
LEFT OUTER JOIN
(SELECT a.source_node_id, MAX(c.vname) AS betrifft_Version
FROM nodeassociation a LEFT OUTER JOIN projectversion c ON (a.sink_node_id = c.id)
WHERE association_type = 'Issueversion'
GROUP BY a.source_node_id) z
ON (x.source_node_id=z.source_node_id)) xx
ON (xx.source_node_id = yy.id)
WHERE Projekt ='Testprojekt'
ORDER BY pkey DESC
Die yy.id aus dem SubSelect ist nicht eindeutig (5x). Die alte MySql-Version hat das ignoriert, aber die jetztige nimmt das etwas genauer.
 
Hi Bernd1984

und wie kann ich das umgehen?

Eine Idee?


neue DB: Datenbankversion 5.0.77-log
alte DB: Database version 4.1.22-standard-log
 
Zuletzt bearbeitet:
Hallo Bacaaardi,

machs doch genau so wie bei pname, die hast du ja auch benannt.

Code:
(SELECT id as ProID, pname AS Projekt FROM project) l on (k.project= l.ProID)
usw.

und hier nimmst du dann eine von den 5
Code:
ON (xx.source_node_id = yy.ProID)
 
Hi Bernd 1984

habe es so geändert:

Code:
SELECT Projekt,pkey AS Schlüssel,reporter AS Autor,assignee AS Bearbeiter,
created AS Erstellt,updated AS Aktualisiert,Vorgangstyp,Lösung,Status,
Priorität,Komponente,betrifft_Version, Lösungsversion  FROM

(SELECT *
FROM jiraissue k

LEFT OUTER JOIN (SELECT id as ProID,pname AS Projekt FROM project) l on (k.project= l.ProID)
LEFT OUTER JOIN (SELECT id as IssID, pname AS Vorgangstyp FROM issuetype) m on (k.issuetype= m.IssID)
LEFT OUTER JOIN (SELECT id as ResID, pname AS Lösung FROM resolution) o on (k.resolution= o.ResID)
LEFT OUTER JOIN (SELECT id as StaID, pname AS Status FROM issuestatus) u on (k.issuestatus= u.StaID)
LEFT OUTER JOIN (SELECT id as PriID, pname AS Priorität FROM priority) n on (k.priority= n.PriID)) yy
LEFT OUTER JOIN
(SELECT * FROM
(SELECT a.source_node_id AS Komponente, MAX(b.cname)
FROM nodeassociation a LEFT OUTER JOIN component b ON (a.sink_node_id = b.id)
WHERE  association_type = 'IssueComponent'
GROUP BY a.source_node_id) x
LEFT OUTER JOIN
(SELECT a.source_node_id AS Lösungsversion, MAX( c.vname)
FROM nodeassociation a LEFT OUTER JOIN projectversion c ON (a.sink_node_id = c.id)
WHERE  association_type = 'IssueFixversion'
GROUP BY a.source_node_id) y
ON (x.source_node_id=y.source_node_id)
LEFT OUTER JOIN
(SELECT a.source_node_id AS betrifft_Version, MAX(c.vname)
FROM nodeassociation a LEFT OUTER JOIN projectversion c ON (a.sink_node_id = c.id)
WHERE  association_type = 'Issueversion'
GROUP BY a.source_node_id) z
ON (x.source_node_id=z.source_node_id)) xx
ON (xx.source_node_id = yy.ProID)
WHERE Projekt ='Test '
ORDER BY pkey DESC

Jetzt kommt die meldung:
Unknown column 'x.source_node_id' in 'on clause'

Hast da einen Tippp. Sorry wenn ich nerve :D
 
Hallo Bacaaardi,

auch dieser Fehler hat mit der geringeren Fehlertoleranz der neuen MySql-Version zu tun.

Die "source_node_id" aus diesem Subselect
Code:
(SELECT a.source_node_id AS Komponente, MAX(b.cname)
    FROM nodeassociation a 
    LEFT OUTER JOIN component b ON (a.sink_node_id = b.id)
    WHERE  association_type = 'IssueComponent'
    GROUP BY a.source_node_id
) x
verknüpft du mit
Code:
) z    ON (x.source_node_id=z.source_node_id)
aber korrekt muss es
Code:
) z    ON (x.Komponente=z.source_node_id)
lauten.

[edit]
und auch
Code:
) xx    ON (xx.Komponente=yy.ProID)
[/edit]
 
Zuletzt bearbeitet:
Hi Bernd 1984,

erstmal vielen Dank für deine Tipps ich komme immer einen Schritt weiter. Du bist der erste der mir richtig helfen kann...

Ich bin ein wahrer SQL-Newbie. Ich habe deine Änderung angepasst doch dann taucht an anderer Stelle wieder ein Fehler auf...

Könntest du die Änderungen komplett posten. Also alle meine Denkfehler beseitigen. Ich hoffe das ist nicht zu viel verlangt. Jedes mal wenn ich eine Stelle löse, hänge ich bereits an der nächsten

Könntest du meine komplette Abfrage mal korrekt posten? Wäre dir sehr dankbar, weil wir auf diesem SQL unsere Auswertungen fahren...

Gruß
 
Hallo Bacaaardi,

hier die Version, die die bekannten Fehler wegen der neuen MySql-Version nicht mehr enthält:
Code:
SELECT    Projekt,pkey AS Schlüssel,reporter AS Autor,assignee AS Bearbeiter,
    created AS Erstellt,updated AS Aktualisiert,Vorgangstyp,Lösung,Status,
    Priorität,Komponente,betrifft_Version, Lösungsversion  
FROM    (SELECT *
        FROM jiraissue k
        LEFT OUTER JOIN (SELECT id as ProID,pname AS Projekt FROM project) l on (k.project= l.ProID)
        LEFT OUTER JOIN (SELECT id as IssID, pname AS Vorgangstyp FROM issuetype) m on (k.issuetype= m.IssID)
        LEFT OUTER JOIN (SELECT id as ResID, pname AS Lösung FROM resolution) o on (k.resolution= o.ResID)
        LEFT OUTER JOIN (SELECT id as StaID, pname AS Status FROM issuestatus) u on (k.issuestatus= u.StaID)
        LEFT OUTER JOIN (SELECT id as PriID, pname AS Priorität FROM priority) n on (k.priority= n.PriID)
        ) yy
LEFT OUTER JOIN
    (SELECT * FROM
        (SELECT a.source_node_id AS Komponente, MAX(b.cname)
        FROM nodeassociation a 
        LEFT OUTER JOIN component b ON (a.sink_node_id = b.id)
        WHERE  association_type = 'IssueComponent'
        GROUP BY a.source_node_id
        ) x
    LEFT OUTER JOIN    
            (SELECT a.source_node_id AS Lösungsversion, MAX( c.vname)
            FROM nodeassociation a LEFT OUTER JOIN projectversion c ON (a.sink_node_id = c.id)
            WHERE  association_type = 'IssueFixversion'
            GROUP BY a.source_node_id
            ) y    ON (x.source_node_id=y.source_node_id)
    LEFT OUTER JOIN 
            (SELECT a.source_node_id AS betrifft_Version, MAX(c.vname)
            FROM nodeassociation a LEFT OUTER JOIN projectversion c ON (a.sink_node_id = c.id)
            WHERE  association_type = 'Issueversion'
            GROUP BY a.source_node_id
            ) z    ON (x.source_node_id=z.source_node_id)
            ) z ON (x.Komponente=z.source_node_id)
    ) xx ON (xx.Komponente=yy.ProID)
WHERE Projekt ='Test '
ORDER BY pkey DESC
D.h. aber nicht, das da noch nicht noch mehr Versionsabhängige Fehler sind.
 
Hi Bernd,

mehr als Danke kann ich wohl nicht sage. Hut ab für deine Mühe :)

Habe deinen geposteten Code eingefügt.

Hier die Fehlermeldung:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') xx ON (xx.Komponente=yy.ProID)
WHERE Projekt ='Test'
ORDER BY pkey DESC' at line 33

Nachtrag: der von dir gepostet Code läuft auch auf der "alten" DB nicht --> gleiche Fehlermeldung
 
Zuletzt bearbeitet:
Hallo Bacaaardi,

diese Zeile
Code:
) z ON (x.Komponente=z.source_node_id)
sollte diese
Code:
) z    ON (x.source_node_id=z.source_node_id)
ersetzen.

Hab nach der Kontrolle leider beide drin gelassen.
Hier jetzt der korrekte SQL:
Code:
SELECT    Projekt,pkey AS Schlüssel,reporter AS Autor,assignee AS Bearbeiter,
    created AS Erstellt,updated AS Aktualisiert,Vorgangstyp,Lösung,Status,
    Priorität,Komponente,betrifft_Version, Lösungsversion  
FROM    (SELECT *
        FROM jiraissue k
        LEFT OUTER JOIN (SELECT id as ProID,pname AS Projekt FROM project) l on (k.project= l.ProID)
        LEFT OUTER JOIN (SELECT id as IssID, pname AS Vorgangstyp FROM issuetype) m on (k.issuetype= m.IssID)
        LEFT OUTER JOIN (SELECT id as ResID, pname AS Lösung FROM resolution) o on (k.resolution= o.ResID)
        LEFT OUTER JOIN (SELECT id as StaID, pname AS Status FROM issuestatus) u on (k.issuestatus= u.StaID)
        LEFT OUTER JOIN (SELECT id as PriID, pname AS Priorität FROM priority) n on (k.priority= n.PriID)
        ) yy
LEFT OUTER JOIN
    (SELECT * FROM
        (SELECT a.source_node_id AS Komponente, MAX(b.cname)
        FROM nodeassociation a 
        LEFT OUTER JOIN component b ON (a.sink_node_id = b.id)
        WHERE  association_type = 'IssueComponent'
        GROUP BY a.source_node_id
        ) x
    LEFT OUTER JOIN    
            (SELECT a.source_node_id AS Lösungsversion, MAX( c.vname)
            FROM nodeassociation a LEFT OUTER JOIN projectversion c ON (a.sink_node_id = c.id)
            WHERE  association_type = 'IssueFixversion'
            GROUP BY a.source_node_id
            ) y    ON (x.source_node_id=y.source_node_id)
    LEFT OUTER JOIN 
            (SELECT a.source_node_id AS betrifft_Version, MAX(c.vname)
            FROM nodeassociation a LEFT OUTER JOIN projectversion c ON (a.sink_node_id = c.id)
            WHERE  association_type = 'Issueversion'
            GROUP BY a.source_node_id
            ) z ON (x.Komponente=z.source_node_id)
    ) xx ON (xx.Komponente=yy.ProID)
WHERE Projekt ='Test '
ORDER BY pkey DESC
 

Neue Beiträge

Zurück