Newbie Frage zu MySQL-Abfragen

Newbie Frage zu MySQL-Abfragen

am 24.01.2008 12:33:23 von michael.fan

Hallo,

ich habe mal eine (hoffentlich) einfache Frage zu Abfragen.
Folgende Abfrage:

select name from table where eigenschaft1=3Dbla and eigenschaft2=3Dblub
and eigenschaft3=3Dflop or eigenschaft4=3Dklip or eigenschaft5=3Dklap

1. Wie muss ich die Abfrage definieren, dass eigenschaft1 und
eigenschaft2 zwingend sind, sowie entweder eigenschaft3 oder
eigenschaft4 oder eigenschaft5?

2. Wie müsste ich die Abfrage definieren, dass eigenschaft1 und
eigenschaft2 und eigenschaft3 zusammen möglich ist - oder eigenschaft4
oder eigenschaft5?

Danke schon mal!
Gruß
Micha

Re: Newbie Frage zu MySQL-Abfragen

am 24.01.2008 12:46:27 von Sebastian Suchanek

Michael Fana schrieb:

Weil ich tippfaul bin, mit Abkürzungen:

> [...]
> 1. Wie muss ich die Abfrage definieren, dass eigenschaft1 und
> eigenschaft2 zwingend sind, sowie entweder eigenschaft3 oder
> eigenschaft4 oder eigenschaft5?

e1 AND e2 AND (e3 OR e4 OR e5)

Klammer nicht vergessen!

> 2. Wie müsste ich die Abfrage definieren, dass eigenschaft1 und
> eigenschaft2 und eigenschaft3 zusammen möglich ist - oder eigenschaft4
> oder eigenschaft5?

Was heißt "zusammen möglich ist"? Zwingend erforderlich?

Dann: e1 AND e2 AND e3 OR e4 OR e5

Generell empfehle ich aber einen Blick in ein Grundlagenbuch
boolscher Algebra o.ä.


Tschüs,

Sebastian

Re: Newbie Frage zu MySQL-Abfragen

am 24.01.2008 13:43:58 von Christian Kirsch

Michael Fana schrieb:
> Hallo,
>
> ich habe mal eine (hoffentlich) einfache Frage zu Abfragen.
> Folgende Abfrage:
>
> select name from table where eigenschaft1=bla and eigenschaft2=blub
> and eigenschaft3=flop or eigenschaft4=klip or eigenschaft5=klap
>

Das riecht nach einem kaputten Tabellendesign. Was machst Du, wenn
irgendein Ding plötzlich sechs Eigenschaften hat?

> 1. Wie muss ich die Abfrage definieren, dass eigenschaft1 und
> eigenschaft2 zwingend sind, sowie entweder eigenschaft3 oder
> eigenschaft4 oder eigenschaft5?
>

Mit geeigneten logischen Operatoren und passender Klammerung?

> 2. Wie müsste ich die Abfrage definieren, dass eigenschaft1 und
> eigenschaft2 und eigenschaft3 zusammen möglich ist - oder eigenschaft4
> oder eigenschaft5?

Mit geeigneten logischen Operatoren und passender Klammerung?

Das Stichwort hier heißt "Boolsche Algebra", nicht (My)SQL. Wenn Du Dich
damit vertraut gemacht hast, sollten solche Aufgabenstellungen kein
Problem mehr sein. Zumal sie sich umgangssprachlich ohnehin kaum so
formulieren lassen, dass jemand anders versteht, was Du meinst. Bei 1.
z.B. weiß ich nicht, ob Du (1 & 2) & (3 | 4 | 5) oder vielleicht (1 & 2
& 3) | ( (1 & 2) & (4 | 5)).

Re: Newbie Frage zu MySQL-Abfragen

am 24.01.2008 17:07:09 von Claus Reibenstein

Christian Kirsch schrieb:

> Michael Fana schrieb:
>
>> select name from table where eigenschaft1=bla and eigenschaft2=blub
>> and eigenschaft3=flop or eigenschaft4=klip or eigenschaft5=klap
>
> Das riecht nach einem kaputten Tabellendesign. Was machst Du, wenn
> irgendein Ding plötzlich sechs Eigenschaften hat?

Du meinst, wenn z.B. neben Vorname, Nachname, PLZ, Ort und Straße noch
die Telefonnummer dazu kommt? Nun, dann macht man genau das, was man in
solchen Fällen immer macht: man erweitert seine Programme entsprechend.

Was genau "riecht" da Deiner Meinung nach "nach einem kaputten
Tabellendesign"?

Gruß. Claus