![]() |
Datenbank: Absolute Database • Version: 5.13 • Zugriff über: Komponenten
Probleme mit GROUP BY
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:
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):
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)
SQL-Code:
Frage: Wie lassen sich bei den erhaltenen Datansätze die doppelten herausfiltern? Hoffe Ihr könnt mir ein wenig auf die Sprünge helfen...
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 SCRaT |
Re: Probleme mit GROUP BY
SQL-Code:
Ungetestet
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 |
Re: Probleme mit GROUP BY
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... |
Re: Probleme mit GROUP BY
Beim Group by muß jedes Feld entweder in der Gruppierung stehen oder als Aggegat vorliegen
|
Re: Probleme mit GROUP BY
Vielen Dank an alle!
Die Lösung von DeddyH funktioniert problemlos, sogar ohne "count(*) !! Hier mein Code:
SQL-Code:
Nochmal thanks für die schnelle Hilfe. Darauf wäre ich - trotz langem suchen im iNet - nie draufgekommen :-)
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 SCRaT |
Re: Probleme mit GROUP BY
Zitat:
|
Re: Probleme mit GROUP BY
Wäre ein
SQL-Code:
nicht schneller?
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) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz