Hallo,
ich stehe wieder einmal vor einem Problem und hoffe auf die Hilfe hier im Forum.
Ich habe eine Tabelle mit Angeboten und eine mit Adressen, wobei zu einem Angeot mehrere Adressen möglich sind. Aus diesen Adressen soll eine bestimmte Adresse, entweder sie ist Aktiv oder nach dem letzten Datum selektiert werden.
Soweit komme ich, allerdings kann ich das "WHERE test_adresse.pid = 1" aus dem Subselect nicht im WHERE von test_angebot verwenden
SELECT test_angebot.*,
s.adresse
FROM test_angebot,
( SELECT adresse
FROM ( SELECT test_adresse.*,
ROW_NUMBER() OVER ( ORDER BY pid ) rno
FROM test_adresse
ORDER BY aktiv DESC, datum DESC )
WHERE rno = 1 ) s
WHERE test_angebot.id = 2
AND s.pid = test_angebot.pid
Der Fehler lautet: s.pid ungültiger bezeichner
Danke
Urwi
ich stehe wieder einmal vor einem Problem und hoffe auf die Hilfe hier im Forum.
Ich habe eine Tabelle mit Angeboten und eine mit Adressen, wobei zu einem Angeot mehrere Adressen möglich sind. Aus diesen Adressen soll eine bestimmte Adresse, entweder sie ist Aktiv oder nach dem letzten Datum selektiert werden.
SELECT test_angebot.*,
s.adresse
FROM test_angebot,
( SELECT adresse
FROM ( SELECT test_adresse.*,
ROW_NUMBER() OVER ( ORDER BY pid ) rno
FROM test_adresse
WHERE test_adresse.pid = 1
ORDER BY aktiv DESC, datum DESC )
WHERE rno = 1 ) s
WHERE test_angebot.id = 2
s.adresse
FROM test_angebot,
( SELECT adresse
FROM ( SELECT test_adresse.*,
ROW_NUMBER() OVER ( ORDER BY pid ) rno
FROM test_adresse
WHERE test_adresse.pid = 1
ORDER BY aktiv DESC, datum DESC )
WHERE rno = 1 ) s
WHERE test_angebot.id = 2
SELECT test_angebot.*,
s.adresse
FROM test_angebot,
( SELECT adresse
FROM ( SELECT test_adresse.*,
ROW_NUMBER() OVER ( ORDER BY pid ) rno
FROM test_adresse
ORDER BY aktiv DESC, datum DESC )
WHERE rno = 1 ) s
WHERE test_angebot.id = 2
AND s.pid = test_angebot.pid
drop table IBISAdm.test_angebot cascade constraints;
/*================================================= =============*/
/* Table: test_angebot */
/*================================================= =============*/
create table IBISAdm.test_angebot
(
id NUMBER,
pid NUMBER,
preis DECIMAL(10, 2)
);
INSERT INTO test_angebot (ID,PID,PREIS)
VALUES(1,1,10000);
INSERT INTO test_angebot (ID,PID,PREIS)
VALUES(2,1,12000);
INSERT INTO test_angebot (ID,PID,PREIS)
VALUES(3,2,15000);
create table IBISAdm.test_adresse
(
id NUMBER,
pid NUMBER,
adresse VARCHAR2(30),
aktiv INT,
datum DATE
);
INSERT INTO test_adresse (ID,ADRESSE,AKTIV,DATUM,PID)
VALUES(1,'adresse 1',0,TO_DATE('23.02.2015','DD/MM/RRRR'),1);
INSERT INTO test_adresse (ID,ADRESSE,AKTIV,DATUM,PID)
VALUES(2,'adresse 2',1,TO_DATE('4.02.2015','DD/MM/RRRR'),1);
INSERT INTO test_adresse (ID,ADRESSE,AKTIV,DATUM,PID)
VALUES(3,'adresse 3',0,TO_DATE('10.03.2015','DD/MM/RRRR'),1);
INSERT INTO test_adresse (ID,ADRESSE,AKTIV,DATUM,PID)
VALUES(4,'adresse 1',1,TO_DATE('24.02.2015','DD/MM/RRRR'),2);
INSERT INTO test_adresse (ID,ADRESSE,AKTIV,DATUM,PID)
VALUES(5,'adresse 1',0,TO_DATE('2.03.2015','DD/MM/RRRR'),3);
COMMIT;
/*================================================= =============*/
/* Table: test_angebot */
/*================================================= =============*/
create table IBISAdm.test_angebot
(
id NUMBER,
pid NUMBER,
preis DECIMAL(10, 2)
);
INSERT INTO test_angebot (ID,PID,PREIS)
VALUES(1,1,10000);
INSERT INTO test_angebot (ID,PID,PREIS)
VALUES(2,1,12000);
INSERT INTO test_angebot (ID,PID,PREIS)
VALUES(3,2,15000);
create table IBISAdm.test_adresse
(
id NUMBER,
pid NUMBER,
adresse VARCHAR2(30),
aktiv INT,
datum DATE
);
INSERT INTO test_adresse (ID,ADRESSE,AKTIV,DATUM,PID)
VALUES(1,'adresse 1',0,TO_DATE('23.02.2015','DD/MM/RRRR'),1);
INSERT INTO test_adresse (ID,ADRESSE,AKTIV,DATUM,PID)
VALUES(2,'adresse 2',1,TO_DATE('4.02.2015','DD/MM/RRRR'),1);
INSERT INTO test_adresse (ID,ADRESSE,AKTIV,DATUM,PID)
VALUES(3,'adresse 3',0,TO_DATE('10.03.2015','DD/MM/RRRR'),1);
INSERT INTO test_adresse (ID,ADRESSE,AKTIV,DATUM,PID)
VALUES(4,'adresse 1',1,TO_DATE('24.02.2015','DD/MM/RRRR'),2);
INSERT INTO test_adresse (ID,ADRESSE,AKTIV,DATUM,PID)
VALUES(5,'adresse 1',0,TO_DATE('2.03.2015','DD/MM/RRRR'),3);
COMMIT;
Urwi
Comment