Select Statement

wSam

Erfahrenes Mitglied
Hallo zusammen

Ich habe ein SELECT Statement erstellt, welches mir diverse Daten zu den registrierten Benutzern holt:

SQL:
select
       u.user_id, 
       u.first_name, 
       u.last_name, 
       u.email, 
       p.lang_id, 
       u.gender_id,
       u.reg_date
from user u, young_user yu, address a, user_profile p 
where u.user_id = yu.user_id and u.user_id = a.user_id and u.user_id = p.user_id;

Das Feld user_id ist jeweils ein Primary-Key, als Datenbank fungiert eine Oracle-DB.

Nun hat es im Feld email der Tabelle user E-Mail Adressen. Es können mehrmals die gleichen E-Mail Adressen vorhanden sein.
Ich möchte jedoch, dass es immer nur 1 gleiche E-Mail Adresse darstellt. Es soll der Datensatz genommen werden, bei dem
das reg_date (Registrierungsdatum) am wenigsten zurück liegt.

Wie sollte dafür das select statement aussehen?

Vielen Dank im Voraus und Gruss
 
Zuletzt bearbeitet von einem Moderator:
Hallo zusammen

Ich habe ein SELECT Statement erstellt, welches mir diverse Daten zu den registrierten Benutzern holt:

SQL:
select
       u.user_id, 
       u.first_name, 
       u.last_name, 
       u.email, 
       p.lang_id, 
       u.gender_id,
       u.reg_date
from user u, young_user yu, address a, user_profile p 
where u.user_id = yu.user_id and u.user_id = a.user_id and u.user_id = p.user_id;

Das Feld user_id ist jeweils ein Primary-Key, als Datenbank fungiert eine Oracle-DB.

Nun hat es im Feld email der Tabelle user E-Mail Adressen. Es können mehrmals die gleichen E-Mail Adressen vorhanden sein.
Ich möchte jedoch, dass es immer nur 1 gleiche E-Mail Adresse darstellt. Es soll der Datensatz genommen werden, bei dem
das reg_date (Registrierungsdatum) am wenigsten zurück liegt.

Wie sollte dafür das select statement aussehen?

Vielen Dank im Voraus und Gruss

Hallo, Versuch mal :

SQL:
select
       u.user_id, 
       u.first_name, 
       u.last_name, 
       u.email, 
       p.lang_id, 
       u.gender_id,
       u.reg_date
from user u, young_user yu, address a, user_profile p 
where u.user_id = yu.user_id and u.user_id = a.user_id and u.user_id = p.user_id
AND u.reg_date =select max(reg_date) from user  where user_id=u.user_id);

(Ungetestet)

Gruss
 
Zuletzt bearbeitet von einem Moderator:
Hallo

Das geht so nicht, daran hat die DB keine freude:
AND u.reg_date =SELECT max

Folgender Fehler: ORA-00936: missing expression

Hat noch jemand einen Tipp?
 
Zuletzt bearbeitet:
Hallo

Ich musste noch die user_id durch das email Attribut umtauschen in AND u.reg_date =(SELECT max(reg_date) FROM user WHERE user_id=u.user_id), dann gings.

Danke.
 
Zuletzt bearbeitet:
Zurück