2012-04-02 6 views
0

Ich habe zwei Tabellen (Oracle): Holen Sie sich auf einer verknüpften Tabellen zählen

Tabelle 1 (ich habe den Primärschlüssel mit einem Sterne vor dem Spaltennamen markiert) Spalten sind:
* Datum,
* Code,
* Symbol,
Preis,
Gewicht

Table2 Spalten sind:
* DescriptionId
Code
Symbol
Datum
Beschreibung

ich die folgenden Informationen mit Hilfe von Abfrage,

Für einen bestimmten Code und ein Symbol an einem bestimmten Tag finden müssen, gibt es eine Beschreibung .
zum Beispiel: code = "AA" und symbol = "TEST" am 2012-4-1 in Tabelle 1 => gibt es mindestens eine Zeile wie ID =, code = "AA", symbol = "TEST", date = 2012.04.01 in Tabelle 2

ich mit der folgenden Abfrage versucht:

select * from Table1 t1 INNER JOIN 
Table2 t2 
on t1.code = t2.code and t1.symbol = t2.symbol and 
TO_CHAR(t1.date, 'YYYY/MM/DD') = TO_CHAR(t1.date, 'YYYY/MM/DD') 

Aber es tut mir Ausgang geben wie:

code = AA, Symbol = TEST, das Datum 2012-4 -1 => Deskriptoranzahl = 10
Code = AA, Symbol = TEST, Datum 2012-4-2 => Deskriptoranzahl = 5
cod e = BB, symbol = HELO, Datum 2012-4-1 => description count = 20

Kann mir jemand eine Abfrage vorschlagen, die die obige Ausgabe erreichen kann.

+0

sind Sie bereit für die Antwort? – Tom

+0

in Ihrer Abfrage haben Sie 'TO_CHAR (t1.date, 'JJJJ/MM/TT') = TO_CHAR (t1.date, 'JJJJ/MM/TT')' warum in Zeichenfolge konvertieren? sollte es nicht t2 auf der rechten (linken) seite sein? Ich meine, warum nicht einfach "t1.date = t2.date" –

Antwort

1

Ich verstehe nicht, warum Sie die Verbindung benötigen:

SELECT count(*) 
FROM Table2 
WHERE code='AA' 
AND symbol = 'TEST' 
AND date = to_date('2012-04-01', 'yyyy-mm-dd') 

UPDATE: (nach dem Kommentar zu lesen)
Ich verstehe immer noch nicht, warum Sie die Verbindung benötigen. Benötigen Sie Daten von table1?
Wie auch immer, wenn Sie die Zählung für alle (Code, Symbol, Datum) s dann warum nicht gruppieren möchten?
Wie für die Daten, besser verwenden Sie trunc, um die Zeit Teile loszuwerden. So
:

SELECT code, symbol, date, count(*) 
FROM Table2 
GROUP BY code, symbol, date 
+0

Ich brauche die Beschreibung Anzahl für alle Elemente in Tabelle1. nicht nur für code = "AA", symbol = "TEST". Das ist ein Beispiel. Deshalb benutze ich beitreten.Mit count (*) in der obigen Weise geben Sie nur die Anzahl der Beschreibung für AA-TEST-2012-04-01. Ich kann nicht einfach t1.date = t2.date verwenden, weil t1.date Zeitparameter und t2.date nur yyyymmdd hat. Ich muss nur den Datumsteil vergleichen. Ich brauche eine einzige Abfrage, die die Beschreibung für jede eindeutige Code-Symbol-Datum Elemente in Tabelle1 geben wird. – user1308004

+0

@ user1308004- Ich aktualisierte meine Antwort, wie für die Daten können Sie es so tun: 'trunc (t1.date) = trunc (t2.date)' –

0

die Trunc() Methode nimmt einen String \ Datum Eingabe und erstellt eine DATE Ausgabe, die in diesem Format ist: "DD \ MM \ YYYY". So sollte es genau das tun, was Sie wollen.

Verwandte Themen