ADS 12 Distinct mit Fehler?

Advantage Database Server

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

ADS 12 Distinct mit Fehler?

Beitrag von UliTs »

Hallo allerseits,

in der ADS-Hilfe gibt es dieses Beispiel mit der neuen DISTINCT-Möglichkeit.

Code: Alles auswählen

SELECT 
  GROUP_CONCAT( DISTINCT language ORDER BY language ) 
FROM employees 
Ich habe die DISTINCT-Möglichkeit heute erstmals eingesetzt.
Aber dabei ich auf ein Problem gestoßen: wenn die Ergebnisliste aus keinem Datensatz besteht, kommt es bei Einsatz von "Order By" zu einem Fehler:

Code: Alles auswählen

SELECT 
  GROUP_CONCAT( DISTINCT language ORDER BY language ) 
FROM employees 
WHERE language='1234'
Ich vermute, es handelt sich um einen Fehler im ADS 12, da dieser Fehler ohne Angabe von "Order By" nicht kommt.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: ADS 12 Distinct mit Fehler?

Beitrag von nightcrawler »

Hallo Uli,
das kann ich mit dem Beispiel vom Forentreffen nicht nachvollziehen:

Code: Alles auswählen

SELECT e.branch, GROUP_CONCAT(DISTINCT trim(l.language) ORDER BY language SEPARATOR '; ' ) FROM employees e
  JOIN employee_languages el ON el.employeeid=e.id
  JOIN languages l ON el.languageid=l.id
  WHERE language='123'
GROUP BY 1
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: ADS 12 Distinct mit Fehler?

Beitrag von UliTs »

Bei meinem obigen Beispiel kommt die Fehlermeldung

Code: Alles auswählen

poQuery: Error 7200:  AQE Error:  State = HY000;   NativeError = 5068;  [SAP][Advantage SQL Engine][ASA] Error 5068:  There is no current record.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: ADS 12 Distinct mit Fehler?

Beitrag von nightcrawler »

Uli,
ohne ein GROUP BY kannst Du gar keine Aggregat Funktion verwenden. Wie sieht die Tabelle aus und was willst Du genau daraus abfragen?
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: ADS 12 Distinct mit Fehler?

Beitrag von UliTs »

Hallo Joachim,

ich glaube, dass Du dich irrst :D .
Ohne "Group by" gibt es als Ergebnis halt nur einen Datensatz. Ich möchte für einen Artikel alle Kommissionsnummern (KommNr), die diesen Artikel in ihrer Stückliste benutzen, in einem Feld aufführen. Und zwar eigentlich nach KommNr sortiert (darauf verzichte ich zur Zeit wegen des Problems).
Also:

Code: Alles auswählen

select Group_Concat( DISTINCT trim(cast(KommNr as SQL_Char)) /*MIT order by KommNr KOMMT Fehler*/ ) KommNrn
from Stuecklisten
inner join Komissionen  on Kommissionen.Kom1Id=Stuecklisten.Kom1Id
where Stuecklisten.ATId=1234
Wenn der Artikel in keiner Stückliste vorkommt, kommt es zu diesem Fehler bei Einsatz von "order by".

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: ADS 12 Distinct mit Fehler?

Beitrag von nightcrawler »

Dann versuche mal, die ATId mit in das Select zu packen:

Code: Alles auswählen

select Stuecklisten.ATId, Group_Concat( DISTINCT trim(cast(KommNr as SQL_Char)) /*MIT order by KommNr KOMMT Fehler*/ ) KommNrn
from Stuecklisten
inner join Komissionen  on Kommissionen.Kom1Id=Stuecklisten.Kom1Id
--where Stuecklisten.ATId=1234
GROUP BY 1
HAVING ATId=1234
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Antworten