Beide Bedingungen müssen erfüllt sein

Bubas

Neuer Benutzer
Beiträge
4
Hallo zusammen,

habe da ein kleines Blackout :(

select CarID, Lagerbereich from Lager where Lagerbereich = 'BE' and Lagerbereich = 'AN'

Ich möchte, dass alle CarID angezeigt werden, bei welchen der Lagerbereich BE UND AN (beide zusammen) enthalten ist.


Beispiel:
Bei dem Datensatz unten würde dann NUR CarID 3 angezeigt werden, da nur dieser BE und AN hat:

CarID | Lagerbereich
------------------------------
3 | BE
3 | AN
4 | BE
5 | An


Danke für die Hilfe
Bubas
 
Werbung:

Walter

Administrator
Teammitglied
Beiträge
421
AW: Beide Bedingungen müssen erfüllt sein

Das sind also 4 Datensätze? Dann mach ein

SELECT DISTINCT carid FROM lager WHERE lagerbereich in( 'BE', 'AN')

oder alternativ

SELECT DISTINCT carid FROM lager WHERE lagerbereich ='BE' or lagerbereich='AN'

Du willst ja offenbar alle Datensätze bekommen wo entweder BE oder AN enthalten ist. Ein Datensatz kann ja nur entweder BE oder AN sein ....
 

Bubas

Neuer Benutzer
Beiträge
4
AW: Beide Bedingungen müssen erfüllt sein

Hallo walter

Das sind also 4 Datensätze? ...
Nein von diesen 4 Datensätze sollen nur die erste zwei abgefragt werden. Die 4 Datensätze stellen die Datenbank (Tabelleninhalt) dar.


Du willst ja offenbar alle Datensätze bekommen wo entweder BE oder AN enthalten ist. Ein Datensatz kann ja nur entweder BE oder AN sein ....

Eben nicht entweder oder, sondern erst wenn eine CarID ein 'BE' und ein 'AN' hat, dann soll die CarID ngezeigt werden. Ich will nur die CarID, welche im Lagerbereich 'BE' und 'AN' sind. Das ist ja das schwierige daran, weil das nicht in einem Datensatz ist sondern in zwei wie in meinem Beispiel aufgeführt.
 

thomas_w

Datenbank-Guru
Beiträge
104
AW: Beide Bedingungen müssen erfüllt sein

Meinst Du sowas.... ? (mit MySQL getestet)

Code:
CREATE TABLE lager (
 carid INT NOT NULL,
 lagerbereich VARCHAR(2)
);

INSERT INTO lager VALUES
( 3 , 'BE'),
( 3 , 'AN'),
( 4 , 'BE'),
( 5 , 'AN');

SELECT l.carid, MIN(l.lagerbereich) AS an, MAX(l.lagerbereich) AS be
  FROM lager l
  JOIN ( SELECT carid 
           FROM lager
          WHERE lagerbereich = 'BE' ) be
    ON be.carid = l.carid
  JOIN ( SELECT carid 
           FROM lager
          WHERE lagerbereich = 'AN' ) an
    ON an.carid = l.carid
GROUP BY carid
ORDER BY carid;
    
+-------+------+------+
| carid | an   | be   |
+-------+------+------+
|     3 | AN   | BE   |
+-------+------+------+
1 row in set (0.00 sec)

mysql>
Grüße
Thomas
 

Bubas

Neuer Benutzer
Beiträge
4
AW: Beide Bedingungen müssen erfüllt sein

Hey Thomas,

woow sieht richtig spannend aus. Kann ich das einfach so in Oracle kopieren und ausführen? Ich werde morgen berichte, wie es gelaufen ist.

Vielen Dank im Vorraus :)
Bis morgen
 

Bubas

Neuer Benutzer
Beiträge
4
AW: Beide Bedingungen müssen erfüllt sein

Genau das scheint es zu sein, doch die Abrage funktioniert so nicht in Oracle. Wie es aussieht kennt es keinen Befehl "join" :(

Wie muss man das für Oracle umschreiben?
THX
 
Werbung:

thomas_w

Datenbank-Guru
Beiträge
104
AW: Beide Bedingungen müssen erfüllt sein

Genau das scheint es zu sein, doch die Abrage funktioniert so nicht in Oracle. Wie es aussieht kennt es keinen Befehl "join" :(

Das ORACLE keinen JOIN kennt, kann ich mir ehrlich nicht vorstellen, ausser es handelt sich um eine ur-uralte ORACLE-Version. Der Fehler liegt garantiert wo anders. Die Abfrage entspricht ziemlich genau dem SQL-Standard.

Zeige doch mal den SQL-Fehler, den ORACLE ausgibt.

Grüße
Thomas
 
Oben