SQL-ABfrage ?

Hallo Zusammen!

Ich wollte in mySQL folgende Abfrage sinngemäß machen, bin aber leider zu keiner korrekten Abfrage gekommen:

Select id from tabelle1 where projekt1 regexp ‚B1‘ AND (IF exits berechtigt regexp ‚U40‘).

Also: Suche alle IDS, wo in projekt1 ‚B1‘ enthalten ist und berechtigt entweder =’’ oder wenn berechtigt nicht ‚‘, dann berechtigt ‚U40‘ enthält.

Kann mir da jemand n Tipp geben? Vielen Dank im Voraus!

tabelle1:

±—±-----------±--------------+
| id | berechtigt | projekt1 |
±—±-----------±--------------+
| 1 | | B1;B13;B19 |
| 2 | | B1;B9;B11;B13 |
| 3 | | B19 |
| 4 | | B19 |
| 7 | | B1 |
| 8 | | B1 |
| 9 | | B1 |
| 12 | U19 | B1 |
| 13 | U19;U40 | B1 |
| 15 | U19 | B1 |
| 16 | U19 | B1;B2;B3;B4 |
| 17 | | B1 |
| 21 | | B1 |
±—±-----------±--------------+

Hallo Habanera!

Select id from tabelle1 where projekt1 regexp ‚B1‘ AND (IF
exits berechtigt regexp ‚U40‘).

Ich bin ja mit der mySQL-Syntax nicht vertraut, aber in Oracle sähe das so aus:

SELECT id FROM tabelle1 WHERE projekt1 LIKE '%B1%' AND (berechtigt IS NULL OR berechtigt LIKE '%U40%');

Wenn der regexp bei NULL auch TRUE liefert (was ich persönlich für falsch hielte, aber man weiss ja nie *g*), dann müsstest du das gegebenenfalls noch erweitern:

SELECT id FROM tabelle1 WHERE projekt1 LIKE '%B1%' AND (berechtigt IS NULL OR (berechtigt IS NOT NULL AND berechtigt LIKE '%U40%'));

Ich hoffe das ergibt das von dir gewünschte Resultat.

Gruß
Martin