L'obtention de la première ligne de la JOINTURE EXTERNE GAUCHE
J'ai 3 tables:
(SELECT DISTINCT ID
FROM IDS)a
LEFT OUTER JOIN
(SELECT NAME, ID
FROM NAMES)b
ON a.ID = b.ID
LEFT OUTER JOIN
(SELECT ADDRESS FROM ADDRESSES
WHERE ROWNUM <2
ORDER BY UPDATED_DATE DESC)c
ON a.ID = c.ID
Un ID ne peut avoir qu'un seul nom, mais peut avoir plusieurs adresses. Je veux seulement la dernière. Cette requête renvoie l'adresse null, même quand il y a une adresse, je suppose cause il ne récupère que la première adresse de la table et ensuite essaie de GAUCHE JOINDRE à l'ID d'adresses, il cano trouver. Quelle est la bonne façon d'écrire cette requête?
Le exemple est incomplète. Veuillez inclure le schéma de la table (comme
CREATE TABLE
consolidés), les données de l'échantillon (comme INSERT
) et les résultats escomptés.OriginalL'auteur Eosphorus | 2012-05-11
Vous devez vous connecter pour publier un commentaire.
Essayer GARDER DENSE_RANK
Source de données:
Requête:
Test en direct: http://www.sqlfiddle.com/#!4/7b1c9/2
Pas tous de la base de données a les mêmes fonctionnalités d'Oracle GARDER DENSE_RANK de fenêtrage fonction, vous pouvez utiliser de la plaine de fenêtrage fonction de la place:
Test en direct: http://www.sqlfiddle.com/#!4/7b1c9/48
Ou utiliser un tuple de test, est le travail sur les bases de données qui ne supporte pas la fonction de fenêtrage:
Test en direct: http://www.sqlfiddle.com/#!4/7b1c9/21
Pas tous de la base de données prend en charge tuple tester comme dans le code précédent. Vous pouvez utiliser le REJOINDRE à la place:
Test en direct: http://www.sqlfiddle.com/#!4/7b1c9/24
OriginalL'auteur Michael Buen
Vous pouvez utiliser l'analytique de la fonction
RANK
OriginalL'auteur Justin Cave
Sans avoir accès à une base de données à l'heure actuelle, vous devriez être en mesure de faire
Comme vous pouvez le voir, le "TOP 1" à "Adresse", vous obtiendrez uniquement la première ligne de résultat.
Aussi, êtes-vous sûr qu'un.ID et c.L'ID est le même?
J'imagine que vous besoin de quelque chose comme .... c SUR un.ID = c.AddressID
Si non, je ne suis pas entièrement sûr de savoir comment vous associer plusieurs adresses à un ID unique.
l'adresse de la table n'a pas de clé primaire unique tristement et un ID peut avoir plusieurs ID
TOP 1 n'est pas valide Oracle syntaxe
ah, n'est-ce pas l'avis de l'oracle de mots clés
OriginalL'auteur Neville
OriginalL'auteur rajath m.d.