In meinem Projekt habe ich eine Tabelle von e-Mail Benutzer E-Mails:mehr auswählen letzte E-Mails als eine Zeile
| ID | PROFILE_ID | EMAIL | LAST_UPDATED_TIMESTAMP|
___________________________________________________________________
| 1| 1| [email protected]| 2017-02-02 15:13:46|
| 2| 1| [email protected]| 2017-02-01 15:13:46|
| 3| 2| [email protected]| 2017-02-03 15:13:46|
wo PROFILE_ID zu den Benutzerprofilen Tabelle PROFILEN bezieht. Ich möchte 2 (N im Allgemeinen) erhalten jüngste verschiedene E-Mails für jedes Benutzerprofil als eine Zeile:
| PROFILE_ID | EMAIL_1 | EMAIL_2 |
__________________________________________________
| 1| [email protected]| [email protected]|
| 2| [email protected]| NULL|
ich viele Anfragen versucht, das letzte, das ich blieb auf unter:
SELECT
EMAIL1.PROFILE_ID,
EMAIL1.EMAIL AS EMAIL_1,
EMAIL2.EMAIL AS EMAIL_2
FROM EMAILS EMAIL1
LEFT JOIN
EMAILS EMAIL2
ON EMAIL1.PROFILE_ID = EMAIL2.PROFILE_ID AND EMAIL2.LAST_UPD_TMST <= EMAIL1.LAST_UPD_TMST AND EMAIL1.ID <> EMAIL2.ID
aber es gibt mir zusätzliche Datensätze für Profil mit mehreren E-Mail:
| PROFILE_ID | EMAIL_1 | EMAIL_2 |
__________________________________________________
| 1| [email protected]| [email protected]|
| 1| [email protected]| NULL|
| 2| [email protected]| NULL|
ich benutze 11g Oracle aber bedenken MySql Kompatibilität wenn möglich halten. Kann jemand sagen, was in der oben erwähnten Frage falsch ist?
Ist 2 die maximale Anzahl von E-Mails pro profile_id? – JohnHC
"Im Allgemeinen wird N" nicht funktionieren, weil in Oracle die Anzahl der Spalten in der Ausgabe zum Zeitpunkt der Analyse bekannt sein muss, lange bevor die Daten überprüft werden - und N ist abhängig von den Daten in der Tabelle. Warum möchten Sie dies in SQL und nicht in Ihrer Berichtsanwendung tun? – mathguy
@JohnHC, nein, pro Profil können mehr als zwei E-Mails vorhanden sein. – Doe