Hallo,
habe ein Problem mit einer Abfrage, meine Tabelle:
BRP=# select * from testkunden;
personennr | nachname | vorname | geburtsdatum | test1 | test2 | kaufsumme
------------+----------+------------------------------+--------------+-------+-------+-----------
0000000002 | Meier | Maria | 1990-01-01 | 10111 | 10111 | 10000
0000000003 | Meier | Markus und Maria | | 10111 | 10111 | 10000
0000000006 | Huber | Ariane | 1976-01-01 | 10146 | 10166 | 10000
0000000007 | Huber | Annabella | 1978-01-01 | 10146 | 10166 | 10000
0000000008 | Huber | Angela, Ariane und Annabella | | 10146 | 10166 | 10000
0000000005 | Huber | Angela | 1970-01-01 | 10155 | 10166 | 10000
0000000004 | Müller | Angela | 1950-01-01 | 10155 | 10111 | 10000
0000000001 | Meier | Markus | 1980-01-01 | 10111 | 10111 | 99999
(8 rows)
Meine Abfrage:
BRP=# select * from (select personennr, nachname, vorname, substring(test1 from 4 for 1)::int as bad1, substring(test2 from 5 for 1)::int as bad2, kaufsumme from testkunden) as foo
where (bad1 < 3 and bad2 < 3 and kaufsumme < 10001);
personennr | nachname | vorname | bad1 | bad2 | kaufsumme
------------+----------+------------------+------+------+-----------
0000000002 | Meier | Maria | 1 | 1 | 10000
0000000003 | Meier | Markus und Maria | 1 | 1 | 10000
(2 rows)
Mein Problem ist die where-Bedingung. Ich hätte hier gerne noch den Kunden Meier Markus dabei, da die Kaufsumme nur Berücksichtigung finden soll, wenn bad1 und bad2 größer 2 sind.
Mein Wunschergebnis wäre sozusagen:
0000000002 | Meier | Maria | 1 | 1 | 10000
0000000003 | Meier | Markus und Maria | 1 | 1 | 10000
0000000001 | Meier | Markus | 1 | 1 | 99999
Ich hoff das ganze ist einigermaßen verständlich ausgedrückt,… steh grad voll aufm Schlauch.
Meine Idee wäre noch ein Subselect, oder gehts evtl einfacher?