Hallo !
Ich würde gerne wissen, ob ich eine „IN“ Anweisung nur in Verbindung mit einem geschachtelten SELECT ausführen kann.
Kann mir jemand das Grundschema einmal kurz erläutern ?
Vielen Dank
mfg
Alexandro
Hallo !
Ich würde gerne wissen, ob ich eine „IN“ Anweisung nur in Verbindung mit einem geschachtelten SELECT ausführen kann.
Kann mir jemand das Grundschema einmal kurz erläutern ?
Vielen Dank
mfg
Alexandro
Hi!
Ich würde gerne wissen, ob ich eine „IN“ Anweisung nur in
Verbindung mit einem geschachtelten SELECT ausführen kann.
Nein
Kann mir jemand das Grundschema einmal kurz erläutern ?
„IN“ beinhaltet immer eine Werte"menge", d.b., Du kannst auch hardcodiert Werte reinschreiben („where xyz in (‚a‘,‚b‘,‚c‘)“)
Da gibt’s so einen schönen Namen für diese Abfrageform, aber der fällt mir seit der abgelegten Prüfung nimmer ein (muß also ganz wichtig gewesen sein)
Grüße,
Tomh
Moin, Tomh,
Da gibt’s so einen schönen Namen für diese Abfrageform
fällt’s Dir wieder ein, wenn Du auf Deine Visitenkarte schaust? Chrchrchrr
Ich kenne auch keinen Ausdruck dafür, aber das ist wohl eine Domäne, die da abgefragt wird.
Gruß Ralf
„IN“ beinhaltet immer eine Werte"menge", d.b., Du kannst auch
hardcodiert Werte reinschreiben („where xyz in (‚a‘,‚b‘,‚c‘)“)Da gibt’s so einen schönen Namen für diese Abfrageform, aber
der fällt mir seit der abgelegten Prüfung nimmer ein (muß also
ganz wichtig gewesen sein)Grüße,
Tomh
Vieen Dank !
kann man bei in nur eine Spalte auswählen ?
Nabend, Ralf!
Da gibt’s so einen schönen Namen für diese Abfrageform
fällt’s Dir wieder ein, wenn Du auf Deine Visitenkarte
schaust? Chrchrchrr
MULTI-ROW QUERY
Ich geb’s zu, ich hab nachschaun müssen …
Grüße,
Tomh
Moin, Alexandro,
kann man bei IN nur eine Spalte auswählen ?
das liegt in der Natur der Sache: IN fragt nach einer Domäne, und die kann halt nur in einer Spalte abgebildet werden.
Wenn in zwei Domaänen zu suchen ist, schreibst Du halt zwei IN-Klauseln und verknotest sie mit und oder oder. Tomh hat ein schönes Muster in seiner Visitenkarte hinterlegt
Gruß Ralf
Hi Ralf !
Vielen Dank:smile:
Aber wie versteht man in diesem Fall Domäne ? als Spalte `?
Gruß
Alexandro
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Moin, Alexandro,
eine Domäne ist einfach ein Wertevorrat, zB alle gültigen Postleitzahlen oder Länderkürzel oder Währungen oder wasweißichnochalles. Manchmal wird Domäne auch als Namensraum übersetzt, das heißt nichts anderes: Eine Menge als gültig vereinbarter Zeichenketten.
Ein Wertevorrat kann durch Regeln beschrieben werden (siehe die ganzen Zahlen) oder durch eine Aufzählung, dann eignet sich zur Ablage eine Tabelle in einer Datenbank.
Gruß Ralf
kann man bei in nur eine Spalte auswählen ?
Zumindest bei Oracle XE (vermutlich auch schon deutlich eher) kann man das auch mit tupeln machen:
create table one (a varchar2(10), b varchar2(10));
insert into one values ('alpha', 'beta');
insert into one values ('gamma','zeta');
select \* from one
where (a,b) in (('eins','zwei'), ('alpha','beta'), ('alpha','zeta'));
-- liefert den Datensatz ('alpha', 'beta')
Diese Form ist natürlich ein völlig anderer logischer Ausdruck als zwei Spalten in zwei separaten IN Klauseln.
Jens
[ot] SQL und Oracle
Hi Jens,
create table one (a varchar2(10), b varchar2(10));
insert into one values (‚alpha‘, ‚beta‘);
insert into one values (‚gamma‘,‚zeta‘);select * from one
where (a,b) in ((‚eins‘,‚zwei‘), (‚alpha‘,‚beta‘),
(‚alpha‘,‚zeta‘));
– liefert den Datensatz (‚alpha‘, ‚beta‘)
wenn das nur eine andere Schreibweise für
select a,b
from one
where a = 'eins' and b = 'zwei'
or a = 'alpha' and b = 'beta'
or a = 'alpha' and b = 'zeta'
ist, fände ich das zwar sehr bequem, die Verwendung des Keywords IN aber als nicht angemessen.
Gruß Ralf
Hi Jens,
create table one (a varchar2(10), b varchar2(10));
insert into one values (‚alpha‘, ‚beta‘);
insert into one values (‚gamma‘,‚zeta‘);select * from one
where (a,b) in ((‚eins‘,‚zwei‘), (‚alpha‘,‚beta‘),
(‚alpha‘,‚zeta‘));
– liefert den Datensatz (‚alpha‘, ‚beta‘)wenn das nur eine andere Schreibweise für
select a,b
from one
where a = ‚eins‘ and b = ‚zwei‘
or a = ‚alpha‘ and b = ‚beta‘
or a = ‚alpha‘ and b = ‚zeta‘ist,
Ja ist es, halt exakt analog zum ‚normalen‘ IN Statement, insbesondere kann auch ein Subselect verwendet werden, der dann natürlich zwei Spalten zurückliefern muss.
Jens
Hi Ralf!
> select a,b
> from one
> where a = 'eins' and b = 'zwei'
> or a = 'alpha' and b = 'beta'
> or a = 'alpha' and b = 'zeta'
Bist Du sicher, das hier keine Klammern fehlen? Bei ORs und ANDs hab ich da immer ein ziemlich mulmiges Gefühl, wenn sie nicht kräftig eingeklammert sind …
Grüße,
Tomh
Moin, Tomh,
select a,b
from one
where a = ‚eins‘ and b = ‚zwei‘
or a = ‚alpha‘ and b = ‚beta‘
or a = ‚alpha‘ and b = ‚zeta‘Bist Du sicher, das hier keine Klammern fehlen?
Ja, AND bindet stärker als OR. Immer und überall. Das soll Dich nicht abhalten, nach Belieben zu klammern
Gruß Ralf