badger
Goto Top

SQL and not

Hallo Leute,

ich weiß, dass es unter SQL den Befehl "and not" nicht gibt.
Dennoch bin ich auf der Suche, wie ich so etwas realisieren kann:

SELECT * from Tabelle WHERE a = 1 and b = 2 and (c != 1 and d != 1)

Also ich will alle Daten, wo a = 1 ist, b = 2 ist und c und d gemeinsam nicht 1 sind (also in dieser Kombination).

Wie kann ich das lösen?

Mit der Methode oben (Klammern und and) funktioniert es nicht.


Herzlichen Dank

Patrick

Content-Key: 234102

Url: https://administrator.de/contentid/234102

Printed on: April 18, 2024 at 14:04 o'clock

Member: Xaero1982
Xaero1982 Mar 31, 2014 at 18:44:52 (UTC)
Goto Top
Hi,

versuch mal das:

SELECT * FROM Tabelle WHERE a = 1 AND b = 2 AND (NOT c= 1) and (NOT d = 1)

Vielleicht gehts auch ohne den zweiten Klammern...
SELECT * FROM Tabelle WHERE a = 1 AND b = 2 AND (NOT c= 1 and d = 1)

Gruß
Member: LianenSchwinger
LianenSchwinger Apr 01, 2014 at 06:58:37 (UTC)
Goto Top
Hallo Patrick,

es geht mit

SELECT * FROM Tabelle WHERE a = 1 AND b = 2 AND NOT(c = 1 OR d = 1)

Gruß Jörg
Member: WinCobold
WinCobold Apr 01, 2014 at 13:57:42 (UTC)
Goto Top
Hallo Patrick,

die zweite Lösung von Xaero1982 wird wohl eher nicht das gewünschte Ergebnis bringen, aber seine erste und die von Jörg schon.

Und "ungleich" kannst du in SQL normalerweise mit "<>" abfragen, also

SELECT * from Tabelle WHERE a = 1 and b = 2 and c <> 1 and d <> 1

Gruß vom WinCobold
Member: LianenSchwinger
LianenSchwinger Apr 01, 2014 at 14:23:11 (UTC)
Goto Top
Hallo WinCobold,

unter Oracle ist != die gängige Variante für Ungleichheit.

Wobei ich nicht verstehe wieso beim TO die Abfrage nicht das gewünschte Ergebnis bringt?!?

c und d müssen ungleich 1 sein und a = 1 und b = 2 damit die Verknüpfung 1 wird

Ich habe nur die Variante mit dem OR gebracht damit sein Wunsch "AND NOT" erfüllt ist. face-smile

G Jörg
Member: Badger
Badger Apr 01, 2014 at 15:13:53 (UTC)
Goto Top
Herzlichen Dank für eure Antworten.

Ich bin ganz verwundert, dass es AND NOT doch gibt.
Ich habe gestern etwas gegoogelt und dazu nur Beiträge gefunden wo geschrieben stand, dass es dies so nicht gibt.

der Code:
SELECT * FROM Tabelle WHERE a = 1 AND b = 2 AND NOT(c = 1 AND d = 1)

funktioniert bei mir genau wie gewünscht.

Danke für eure Hilfe!

Patrick
Member: Xaero1982
Xaero1982 Apr 01, 2014 at 15:16:57 (UTC)
Goto Top
Schön, dann bitte noch auf gelöst setzen face-smile

Gruß
Member: WinCobold
WinCobold Apr 02, 2014 at 13:47:32 (UTC)
Goto Top
Hallo Jörg,

da bin ich wohl nicht ganz auf dem aktuellen Stand. Die Variante mit "<>" funktioniert aber (zumindest meiner Erfahrung nach) auch mit anderen Datenbanken. Außerdem hatte ich ein meiner Naivität gedacht, Patrick hätte seine Version schon ausprobiert und als fehlerhaft erkannt.

Und das mit dem "AND NOT" hatte ich nicht als Wunsch, sondern als Fehlinformation aufgefasst. Vielleicht hat er "NOT =" gemeint?

So oder so, Patrick hat eine Lösung, die noch dazu seinem wirklichen Wunsch (im Text) entspricht, nicht seinem SQL-Statement, und das war ja der Zweck des Ganzen.

WinCobol