AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Probleme mit GROUP BY
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit GROUP BY

Ein Thema von scrat1979 · begonnen am 10. Jun 2007 · letzter Beitrag vom 11. Jun 2007
Antwort Antwort
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#1

Probleme mit GROUP BY

  Alt 10. Jun 2007, 13:33
Datenbank: Absolute Database • Version: 5.13 • Zugriff über: Komponenten
Hallo zusammen,

es geht um folgendes. ich schreibe gerade ein kleines Programm zur Fotodokumentation (Arztpraxis). die Tabellenstruktur sieht vereinfacht so aus:

Tabelle "patienten": lfdnr (AutoINC), Nachname, Vorname, Geburtsdatum
Tabelle "tbl_diagnosen": DiagNr (AutoINC), Zu_Patient (= lfdnr d. Tabelle "patienten"), Bezeichnung, Export (boolean).

Nun möchte ich alle Patienten der Tabelle "patienten" anzeigen lassen, bei denen eine Diagnose zum Export markiert worden ist (Export = true).

So weit bin ich schon:

SQL-Code:
select patienten.lfdnr, patienten.Nachname, patienten.vorname, patienten.geburtsdatum
from patienten, tbl_diagnosen
where (patienten.lfdnr = tbl_diagnosen.zu_patient) and (tbl_diagnosen.export = true)
Sollte ein Patient nun 2 Diagnosen zum Export markiert haben, dann erscheint der patient doppelt in der Abfrage-Tabelle. Folgende Anweisung liefert aber eine Fehlermeldung (sollte es wichtig sein, werde ich sie natürlich nachliefern):

SQL-Code:
select patienten.lfdnr, patienten.Nachname, patienten.vorname, patienten.geburtsdatum
from patienten, tbl_diagnosen
where (patienten.lfdnr = tbl_diagnosen.zu_patient) and (tbl_diagnosen.export = true)
group by patienten.lfdnr
Frage: Wie lassen sich bei den erhaltenen Datansätze die doppelten herausfiltern? Hoffe Ihr könnt mir ein wenig auf die Sprünge helfen...

SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Probleme mit GROUP BY

  Alt 10. Jun 2007, 13:37
SQL-Code:
select patienten.lfdnr, patienten.Nachname, patienten.vorname, patienten.geburtsdatum, count(tbl_diagnosen.export)
from patienten, tbl_diagnosen
where (patienten.lfdnr = tbl_diagnosen.zu_patient) and (tbl_diagnosen.export = true)
group by patienten.lfdnr, patienten.Nachname, patienten.vorname, patienten.geburtsdatum
Ungetestet
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#3

Re: Probleme mit GROUP BY

  Alt 10. Jun 2007, 13:38
Wenn Du mit GROUP BY arbeitest, dann dürfen IMHO im SELECT nur gruppierte Felder und Aggregatfunktionen stehen. Ein Workarround wäre die Anwendung der Funktion MAX auf die einzelnen Felder, falls es gibt auch die Funktion First. Oder Du gruppierst auch über die anderen Felder im SELECT.

Ooops, da war jemand schneller...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Probleme mit GROUP BY

  Alt 10. Jun 2007, 13:38
Beim Group by muß jedes Feld entweder in der Gruppierung stehen oder als Aggegat vorliegen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Probleme mit GROUP BY

  Alt 10. Jun 2007, 13:41
Vielen Dank an alle!

Die Lösung von DeddyH funktioniert problemlos, sogar ohne "count(*) !!

Hier mein Code:

SQL-Code:
select patienten.lfdnr, patienten.Nachname, patienten.vorname, patienten.geburtsdatum
from patienten, tbl_diagnosen
where (patienten.lfdnr = tbl_diagnosen.zu_patient) and (tbl_diagnosen.export = true)
group by patienten.lfdnr, patienten.Nachname, patienten.vorname, patienten.geburtsdatum
Nochmal thanks für die schnelle Hilfe. Darauf wäre ich - trotz langem suchen im iNet - nie draufgekommen

SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Probleme mit GROUP BY

  Alt 10. Jun 2007, 13:44
Zitat von scrat1979:
sogar ohne "count(*)
Das war auch nur rein informativ gemeint (ich wusste ja nicht, ob Du es verwenden willst).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Probleme mit GROUP BY

  Alt 11. Jun 2007, 09:19
Wäre ein

SQL-Code:
select distinct patienten.lfdnr, patienten.Nachname, patienten.vorname, patienten.geburtsdatum
from patienten, tbl_diagnosen
where (patienten.lfdnr = tbl_diagnosen.zu_patient) and (tbl_diagnosen.export = true)
nicht schneller?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz