SQL-Abfrageproblem
superbat
- programmiertechnik
Hallo,
ich mache folgende Abfrage:
select x from tab where
feld1 = 'A' and
feld2 = 'B'
or
feld1 = 'T' and
-> feld2 like 'D%' or 'E%'
Ich will erreichen, daß der 2.Abfragebereich (feld1 = T und feld2 wie D% oder E%) geschlossen selektiert werden.
Es soll also alles mitgelesen werden, wo feld1 = T und gleichzeitig feld2 dem Kriterium D% oder E% entspricht (D1, D2, E4....)
Wahrscheinlich simple, aber ich fange ja auch erst an.... :-)
Hi,
-> feld2 like 'D%' or 'E%'
fast alle programmatischen Sprachen unterscheiden sich signifikant von natürlichen Sprachen. Du kannst nicht einfach so schwätze wie Dir der Mund g'wachse isch. Was Du dort dem Computer gesagt hast, ist identisch mit folgendem:
'E%' or feld2 like 'D%'
Wie müsste es in dieser Reihenfolge richtig lauten?
Cheatah
Hi,
-> feld2 like 'D%' or 'E%'
fast alle programmatischen Sprachen unterscheiden sich signifikant von natürlichen Sprachen. Du kannst nicht einfach so schwätze wie Dir der Mund g'wachse isch. Was Du dort dem Computer gesagt hast, ist identisch mit folgendem:
'E%' or feld2 like 'D%'
Wie müsste es in dieser Reihenfolge richtig lauten?
Cheatah
das dies programmiertechnisch dort nicht richtig steht, weiß ich..., deshalb schrieb ich dazu:
Es soll also alles mitgelesen werden, wo feld1 = T und gleichzeitig feld2 dem Kriterium D% oder E% entspricht (also Werte wie D1, D223, E4AS....)
Meine Frage ist nun, wie ich diesen 2.Abfragebereich nach dem OR schreiben muß:
...OR
feld1 = 'T' and
feld2... ????
Hi,
'E%' or feld2 like 'D%'
Es soll also alles mitgelesen werden, wo feld1 = T und gleichzeitig feld2 dem Kriterium D% oder E% entspricht (also Werte wie D1, D223, E4AS....)
vergiss mal kurz feld1 und betrachte nur obigen von mir geschriebenen Teil. Wie muss er richtig lauten?
Cheatah
Mahlzeit,
select x from tab where
feld1 = 'A' and
feld2 = 'B'
or
feld1 = 'T' and
-> feld2 like 'D%' or 'E%'
Einerseits das, was Cheatah schrieb, andererseits können dabei - wie in fast allen gängigen Sprachen - Klammerungen behilflich sein:
SELECT x
FROM tab
WHERE (feld1 = 'A' AND feld2 = 'B')
OR (feld1 = 'T' AND (feld2 LIKE 'D%' OR feld2 LIKE 'E%'))
MfG,
EKKi
Hallo
select x from tab where
feld1 = 'A' and
feld2 = 'B'
or
feld1 = 'T' and
-> feld2 like 'D%' or 'E%'
grundsätzlich empfehle ich Dir bei Ausdrücken Klammersetzung:
SELECT
x
FROM
tab
WHERE
(feld1 = 'A' AND feld2 = 'B')
OR
(feld1 = 'T' AND (feld2 LIKE 'D%' OR feld2 LIKE 'E%'))
sollte das liefern, was Du haben möchtest. Eine Kurzschreibweise, so wie Du Dir das vorstellst, funktioniert anders als Du denkst und führt zu anderen Ergebnissen als Du haben willst.
Freundliche Grüße
Vinzenz
Hallo
select x from tab where
feld1 = 'A' and
feld2 = 'B'
or
feld1 = 'T' and
-> feld2 like 'D%' or 'E%'grundsätzlich empfehle ich Dir bei Ausdrücken Klammersetzung:
SELECT
x
FROM
tab
WHERE
(feld1 = 'A' AND feld2 = 'B')
OR
(feld1 = 'T' AND (feld2 LIKE 'D%' OR feld2 LIKE 'E%'))
>
> sollte das liefern, was Du haben möchtest. Eine Kurzschreibweise, so wie Du Dir das vorstellst, funktioniert anders als Du denkst und führt zu anderen Ergebnissen als Du haben willst.
>
> Freundliche Grüße
>
> Vinzenz
Vielen Dank für die schnelle Hilfe....