Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Anmeldungen zum Forentreffen 2018 sind auf der Anmeldeseite möglich
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

ADS 12 Distinct mit Fehler?

Advantage Database Server

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2459
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

ADS 12 Distinct mit Fehler?

Beitrag von UliTs » Mo, 09. Mai 2016 15:08

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
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 275
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72181 Starzach
Kontaktdaten:

Re: ADS 12 Distinct mit Fehler?

Beitrag von nightcrawler » Mo, 09. Mai 2016 15:44

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: 2459
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: ADS 12 Distinct mit Fehler?

Beitrag von UliTs » Mo, 09. Mai 2016 16:57

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
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 275
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72181 Starzach
Kontaktdaten:

Re: ADS 12 Distinct mit Fehler?

Beitrag von nightcrawler » Mo, 09. Mai 2016 17:15

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: 2459
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: ADS 12 Distinct mit Fehler?

Beitrag von UliTs » Mo, 09. Mai 2016 17:32

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
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 275
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72181 Starzach
Kontaktdaten:

Re: ADS 12 Distinct mit Fehler?

Beitrag von nightcrawler » Mo, 09. Mai 2016 21:33

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