*Markus: Wie Abfrage logisch richtig gestalten.

Beitrag lesen

Hallo,

ich wollte eigentlich eine simple logische Verknüpfung verwenden, aber im Endeffekt scheint die Sache doch nicht so trivial zu sein. a_id und h_id sind Primärschlüssel.

+------+------+------+------+--------------+------+-----------+----------+
| a_id | h_id | g_id | t_id | beschreibung | bild | artikelnr | style    |
+------+------+------+------+--------------+------+-----------+----------+
|    1 |   11 |    3 |    1 | test2        |      | 89768978  | XD/3D    |
+------+------+------+------+--------------+------+-----------+----------+

Ich möchte verhindern, dass neue Einträge dann nicht gespeichert werden, wenn folgendes zutrifft:

Die Parameter des zu speichernden Eintrags dürfen nicht die selben Werte haben wie h_id, g_id, t_id und style zusammen als ein Tupel. Die Artikelnummer darf überhaupt nur einmal in allen Einträgen vorkommen, ist aber kein Pflichtfeld. Müsste ich hier mit 2 SELECT-Anweisungen arbeiten indem ich zuerst prüfe ob artikelnr schon mal vorkommt, und dann prüfe, ob die 4 Parameter einem Tupel entsprechen, oder geht das irgendwie eleganter?

Die Artikelnummer kann nicht als PK definiert werden, da

1.) a_id auto_increment ist
2.) a_id nicht weggelassen werden kann, da h_id öfter als ein Mal vorkommen darf. Somit ist man auf a_id angewiesen.
3.) die Artikelnummer kein Pflichtfeld ist. Somit kann die Artikelnummer kein Schlüssel sein.

Markus