2017-02-13 1 views
0

Ich habe folgende Abfrage doppelte Zeilen zurückgibt, wie sie gereinigt weg zu bekommen:abschütteln doppelte Zeilen

select a.code, b.daytime, b.created_date 
from ov a, CURVE b 
where b.curve_object_id = a.object_id 
order by b.daytime 

Was ich suche ist der beste Weg, Objektnamen zu extrahieren (in meinem Fall ist es Code) von der zweiten Tabelle wo object_id das gleiche in zwei Tabellen?

+0

In TSQL es verschieden ist, aber ich bin nicht sicher Oracle – Paparazzi

+0

Dies ist nicht klar. Was macht ein "Duplikat" aus? In dem Text, den Sie sagen, Sie wollen "extrahieren" (was auch immer das bedeutet) Objektname (in Ihrem Fall ist es Code), aber in der Abfrage wählen Sie Code und tagsüber AND created_date. Also was ist es - willst du Code, oder willst du alle drei? Und was sind "Duplikate" - Zeilen mit demselben Code? (Das ist nicht die Definition von "Duplikaten" - Duplikate sind Zeilen, bei denen ALLE Werte gleich sind - aber ich nehme an, dass Sie "Duplikate" auf nicht-technische Weise verwenden). – mathguy

+0

Entschuldigung für die Unklarheit über dubicate Zeilen, Tabelle ov ist Tabelle, die nur einzelnen Codenamen und zugehörige Objekt-ID mit Codenamen speichert, Tabellenkurve ist tägliche Daten, so kann es mehrere Datensätze mit demselben Codenamen aber unterschiedlichen Daten (Tagesspalte) sein . –

Antwort

0

Haben Sie versucht, group by zu versuchen, die doppelten Zeilen wie folgt zu entfernen?

select a.code, b.daytime,b.created_date 
    from ov a, CURVE b 
    where b.curve_object_id=a.object_id 
    group by a.code, b.daytime,b.created_date 
    order by b.daytime 
+0

Haben Sie doppelte Zeilen, weil Sie doppelte Daten haben? Oder haben Sie doppelte Zeilen, weil Sie eine fehlende Join-Bedingung haben? Ich habe Fälle gesehen, in denen eine dieser Bedingungen mit einem GROUP-BY "behoben" wurde. Und es funktioniert gut für einen kleinen Testdatensatz. Aber Sie können sich in einer Welt der Verletzung finden, wenn der Datensatz groß wird. Vielleicht können Sie näher erläutern, was Sie erreichen möchten? – BobC

+0

zu Tumen_t: Danke, das funktioniert gut. zu BobC: Es gibt keine doppelten Daten in der Tabellenkurve, wahrscheinlich weil ich die Join-Bedingung nicht habe. Also, was Sie sagen, Gruppe ist keine gute Option für große Datenmenge, was wäre dann am besten für große Datenmenge? –

0

Verwenden Sie immer die moderne explizite JOIN-Syntax.

Das heißt, Sie distinct in Ihre Auswahl verwenden:

select distinct a.code, 
    b.daytime, 
    b.created_date 
from ov a 
join CURVE b on b.curve_object_id = a.object_id 
order by daytime