phpbar.de logo

Mailinglisten-Archive

[php] =?x-user-defined?Q?OT=3A_MySQL__nichtexistierende_Detaildatens? = =?x-user-defined?Q?=E4tze_finden?=

[php] =?x-user-defined?Q?OT=3A_MySQL__nichtexistierende_Detaildatens? = =?x-user-defined?Q?=E4tze_finden?=

Beck, Mike php_(at)_phpcenter.de
Fri, 26 Apr 2002 13:01:05 +0200


Hi,
stelle gerade fest dass meine DB Struktur vielleicht doch nicht so optimal
ist..
Es geht um eine Projektverwaltung, ich habe eine Tabelle Auftragsnummern mit
den Stammdaten und eine Tabelle ls_status in der festgelegt wird welche
Leistungsschlüssel (=Teilleistungen) für den jeweiligen Auftrag freigegeben
sind.

Tabellenstruktur verkürzt:

Auftragsnummern:
id		BEZEICH ...
599 28 C	Ich bin ein Auftrag

ls_status:
id	anr		lsts	frei	fertig
1	599 28 C	10	N	Y

für die Leistungsschlüssel gibts natürlich auch noch ne Tabelle:
lsts:
id	Bezeichnung
10	Objektüberwachung

bedeutet: Das der Datensatz für anr/lsts überhaupt existiert zeigt, dass der
Leistungsschlüssel 10 für die Auftragsnummer 599 28 C beauftragt war/ist. Er
ist nicht mehr frei (d.h. es können keine Stunden mehr drauf geschrieben
werden) und er ist fertig. (fertig = 'Y' bedeutet nicht zwangsläufig
frei='N' - ggf. wurde ein Entwurf abgegeben (d.h. Auftrag ist fertig) aber
es werden weiterhin Stunden darauf geschrieben, weil der Auftrag z.B. noch
im Stadtrat vorgestellt wird etc...)

Jetzt hätte ich gerne alle Auftragsnummern (aus der Auftragsnummernliste)
bei denen der Leistungsschlüssel 10 nicht beauftragt wurde, d.h. es
existieren zwar Einträge in ls_status (somit reicht ein LEFT JOIN und auf
NULL testen nicht) aber kein Eintrag mit lsts=10.

Übersehe ich was triviales oder kriege ich das nicht raus?

Problem ist doch, dass um erst mal mit einer Liste aller Aufträge anzufangen
ich auf jeden Fall mit FROM Auftragsnummern beginnen muss. Um alle Lst zu
kriegen und zu schauen welche davon nicht in ls_status sind müsste ich mit
FROM lsts beginnen und bei ls_status auf NULL testen. Von den
Auftragsnummern aus zu den Leistungsschlüsseln komme ich aber nur über
ls_status, und wenn da die 10 nicht existiert dann wars das halt...

(Und bevor jemand empfiehlt einfach auch für nicht beauftragte Lst einen
Eintrag in ls_status zu machen - das halte ich für nicht durchführbar -
müsste man ja ggf. beim anlegen der Auftragsnummer machen und gelegentlich
kommen irgendwann neue Leistungsschlüssel dazu.)

--
Gruß

Mike Beck
mike.beck_at_ibmiller.de
http://www.ibmiller.de


php::bar PHP Wiki   -   Listenarchive