PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (Erledigt) - Query mit mehreren Bedingungen



syrius
04.04.2018, 14:56
Hallo miteinander,

bin auf der Suche nach einem Query für folgendes.

Spalten
name | addy1 | addy2 | addy3 |

Beispiel
Max | 0 | 1 | 0 |
Lea | 0 | 1 | 1 |
Tom | 1 | 1 | 0 |
Pia | 1 | 1 | 1 |
Kai | 1 | 0 | 1 |

Jetzt möchte ich per Query all die ausgeben, die nicht 1 in den Spalten addy1 bis addy3 stehen haben. Demnach also Max, Lea, Tom und Kai.

Danke vorab!

y0l0sw4gg3r
04.04.2018, 15:13
... WHERE (addy1 = 0) OR (addy2 = 0) OR (addy3 = 0)
meinst du das?

TeeB
04.04.2018, 15:42
gelöscht

syrius
04.04.2018, 16:19
... WHERE (addy1 = 0) OR (addy2 = 0) OR (addy3 = 0)
meinst du das?

Werds probieren. Wenn mich nicht alles täuscht sollte das ja auch klappen:

WHERE addy1 != '1' AND addy2 != '1' AND addy3 != '1'

bzw.

WHERE !(addy1 = 1 AND addy2 = 1 AND addy3 = 1)

ob das "schön" ist, ... lassen wir mal so im Raum stehen ^^

y0l0sw4gg3r
04.04.2018, 18:15
Das erste dürfte nicht funktionieren - zumindest nicht mit den AND. Dieses statement sollte nur datensätze auflisten, die überall 0 haben.
Das zweite ist die exakte negation von meinem statement - das sollte funktionieren.

Für schöneres müsste man vermutlich das schema ändern - aber dann werden die statements auch um mindestens einen join komplexer.

Nimbus
04.04.2018, 20:29
Wenn ich den Startpost korrekt verstanden habe und die Werte nur 0 und 1 annehmen, dann müsste deine erste Anfrage verodert werden (also überall OR anstelle von AND). Unter der selben Bedingung dürfte das zweite Statement stimmen.

Ohne die Bedeutung und die Ausprägungen der Werte zu kennen und die Struktur zu ändern fällt mir spontan auch nichts schöneres ein. Eine Option wäre es natürlich noch addy1, addy2 und addy3 zu addieren um das Resultat dann mit 3 zu vergleichen. Die Performance davon ist eventuell nicht so bombastisch, aber wenn es um Lesbarkeit geht kann es zur der Bedeutung passt, dann wäre das je nach Einsatzzweck vertretbar.

syrius
05.04.2018, 11:21
Das erste dürfte nicht funktionieren - zumindest nicht mit den AND. ...

Richtig. ^^

Das von dir funktioniert super. Danke!

Tiara
20.04.2018, 18:50
Hallo,
ein paar mehr Infos wären gut gewesen aber reines Sql Statment baut sich folgend auf:

SELECT name FROM Tabellenname WHERE addy1 = '0' OR addy2 = '0' OR addy3 = '0'

hoffe ich habe deine Frage richtig verstanden :)

LG