Zitat von
Hansa:
Das Problem stellte sich so heraus, daß mit folgender Konstruktion keine Daten zurückgeliefert wurden :
SELECT * FROM RECHNUNG WHERE ID_ART = :ID_ART AND ID_KUNDE = :ID_KUNDE
Der Standard ist jedoch, daß der Parameter ID_KUNDE in 95% der Fälle nicht gebraucht wird. Die
DB hat in diesen Fällen NULL genommen und deshalb schlug das SELECT fehl. Ich habe deshalb vor, zu jeder Tabelle einen 0-ten Datensatz (also alles 0 oder ' ') anzulegen und dessen Werte für die Referenzen zu nutzen. Dann wären keine NULL-Werte mehr da.
Das würde ich nicht tun. Besser so:
SELECT * FROM RECHNUNG WHERE ID_ART = :ID_ART AND (ID_KUNDE = :ID_KUNDE OR ID_KUNDE IS NULL)
NULL-Werte sind dazu da, verwendet zu werden, wenn keine Information über den Inhalt eines Feldes vorhanden ist. Natürlich muss man seine Abfragen auf die Gegebenheiten abstimmen.