Problem mit mySQL-Abfrage

mysql_user

Grünschnabel
hallo zusammen,

bin keine große leuchte in (my)sql. wäre euch sehr dankbar wenn mir jemand helfen würde. mir raucht bereits der kopf. ich soll für statistikzwecke abfragen machen und habe u.a. folgende tabellen-objekte (tabelle(feld1,feld2...)):

- akten ( id, aktenzeichen, name, gebdat ... ) = vielleicht nicht so wichtig
- aktenbearbeitung ( id, aktenzeichen, arzt, erledigt, datum ... )
.

nun sind in aktenbearbeitung mehrere datensätze mit gleichen aktenzeichen-, aber verschiedenen arzt- bzw. datumseinträgen vorhanden. beispiel:

id, Aktenz., Arzt, erledigt, Datum
(1) 10.BL-1345, Dr. Meier, '0', 02.02.2002
(2) 10.BL-1345, Dr. Huber, '0', 03.03.2003
(3) 10.BL-1345, Dr. Meier, '0', 04.04.2004
(4) 10.BL-2020, Dr. Müller, '0', 02.05.2005
(5) 10.BL-2020, Dr. Kunz, '0', 03.05.2005
(6) 10.BL-2020, Dr. Müller, '0', 04.05.2005
(7) 10.BL-1345, '', '1', 05.05.2005

es fällt auf, dass im falle von "erledigt" (1) kein arzt eingetragen ist.
nun möchte ich wissen, welcher arzt noch unerledigte akten hat. d.h. im obigen fall wäre dies dr. müller (6), weil es unter seinem aktenzeichen keine "1" gibt und bis heute kein weiterer eintrag vorhanden ist (der dr. kunz ist nicht wichtig, weil jetzt die akte bei dr. müller liegt).

wie frage ich so etwas ab? oder wie verbinde ich hier php mit mysql? hoffentlich konnte ich mich verständlich ausdrücken. ich wäre euch überaus dankbar, wenn ihr mir helfen könntet. danke für euer bemühen.

gruß
mysql_user
 
Hallo,
gestatte mir zuerst eine allg. Frage: du hast nicht zufällig was mit der Programmierung des elektronischen Krankenscheines in Östrerreich zu tun?

Die folgende Abfrage gibt aus deinen Daten folgende Ausgabe zurück: 6 Dr. Müller
Code:
SELECT id, arzt 
  FROM aktenbearbeitung AS a1
  WHERE id = (SELECT max(id) 
              FROM aktenbearbeitung AS a2
              WHERE a1.aktenzeichen = a2.aktenzeichen
              GROUP BY aktenzeichen)
    AND a1.arzt <> ''
Die Übersetzung auf MySQL - wenn erforderlich - überlasse ich dir.

Diese Abfrage geht davon aus, dass die Daten in aufsteigender Reihenfolge eingegeben werden (so wie von dir dargestellt). Wenn deine Daten z. B. wie unten eingegeben werden, liefert die Abfrage Mist.
id, Aktenz., Arzt, erledigt, Datum
(1) 10.BL-1345, Dr. Meier, '0', 02.02.2002
(2) 10.BL-1345, '', '1', 05.05.2005
(3) 10.BL-1345, Dr. Huber, '0', 03.03.2003
(4) 10.BL-1345, Dr. Meier, '0', 04.04.2004
(5) 10.BL-2020, Dr. Müller, '0', 04.05.2005
(6) 10.BL-2020, Dr. Müller, '0', 02.05.2005
(7) 10.BL-2020, Dr. Kunz, '0', 04.05.2005

In diesem Fall kannst du die folgende Abfrage als Ausgangsbasis nehmen. Da es aber kein eindeutiges Kriterium gibt, welches der letzte Arzt war (s. DS-id 5 und 7), kann ich die Abfrage nicht ensprechend erstellen.
Code:
SELECT id, arzt 
  FROM aktenbearbeitung AS a1
  WHERE aktenzeichen NOT IN (SELECT DISTINCT(aktenzeichen) 
              FROM aktenbearbeitung AS a2
              WHERE a1.aktenzeichen = a2.aktenzeichen
                AND a2.arzt IS NULL)
  ORDER BY id
In diesem Fall werden alle Datensätze mit Aktenzeichen 10.BL-2020 ausgegeben. Um hier den letzten Arzt zu finden, ist eine Änderung der Tabellenstruktur erforderlich.
Hoffe ich kann dir damit helfen und habe nicht neue Problem geschaffen.
 
Hallo WieGehts,

herzlichen Dank für deine prompte Antwort. Leider habe ich jetzt gerade nicht viel Zeit, mir das Ganze in Ruhe anzuschauen. Habe aber trotzdem eben die sql-abfrage meinen Gegebenheiten angepasst und mal schnell drüberlaufen lassen, dann ist vom mysql-Server die Meldung gekommen: "Subquery returns more than 1 row". Damit kann ich momentan nichts anfangen, aber nächste Woche werde ich der Geschichte wieder nachgehen. Heute sind im Dienst wieder andere Prioritäten. Nochmals: vielen Dank für dein Bemühen und ich hoffe, dass ich nochmals auf dich zukommen darf, wenn's nötig ist.

Übrigens: mit der Programmierung des elektronischen Krankenscheines in Östrerreich habe ich nichts zu tun. Ich sitze in einem bayerischen Amt und bin hier leidlicher Webprogrammierer für's Intranet, damit die Benutzer auch über den Browser Akten abarbeiten können. Einen Browser hat hier jeder, Windows nur wenige.

Viele Grüße
mysql_user
 
Zurück