2016-09-21 2 views
0

Wir verwenden SQL Server hauptsächlich für unsere Abfragen, aber wenn wir Java verwenden, scheint es in einer Oracle-Engine ausgeführt zu werden. In this question fragte ich nach der SQL Server-Methode zum Zählen von Datensätzen aus mehreren Tabellen seit den meisten Zeit SQL Server läuft genauso wie Oracle. Ich konnte Daten von dieser Abfrage erhalten:Oracle-Unterabfrage, die keine Datensätze zurückgibt

declare @count table (count1 int, count2 int, count3 int) 
INSERT INTO @count 
select (SELECT COUNT(*) FROM Bike), 
(SELECT COUNT(*) FROM Car), 
(SELECT COUNT(*) FROM Truck) 
select * from @count; 

Allerdings, wenn ich dies in Java, bekomme ich einen Fehler, dass keine Datensätze zurückgegeben wurden. Irgendeine Idee, was ich hier tun kann, um das zu beheben?

+0

Oracle hat keine Tabellenvariablen, daher bin ich verwirrt darüber, welchen Code Sie tatsächlich ausgeführt haben. –

+0

Unabhängig von dem Code, den ich ausgeführt habe, muss ich wissen, wie man die Zählungen für drei separate Tabellen in einer Abfrage erhält. –

+0

Ich bevorzuge es, mein Java und mein SQL zu trennen, indem ich Abfragen in gespeicherte Prozeduren setze. Wenn Sie in der Lage sind, Ihr SQL direkt in der Datenbank arbeiten zu lassen, dann wäre es wahrscheinlich eine Strategie, die in einem gespeicherten Prozess läuft. – mba12

Antwort

1

In Oracle, müssen Sie die dual Tabelle verwenden:

select (SELECT COUNT(*) FROM Bike), 
     (SELECT COUNT(*) FROM Car), 
     (SELECT COUNT(*) FROM Truck) 
from dual; 

Wenn Sie diese Werte in einer einzigen Zeile zurück, dann sollte Folgendes entweder in der Datenbank arbeiten:

select b.bcnt, c.ccnt, t.tcnt 
from (SELECT COUNT(*) as bcnt FROM Bike) b cross join 
    (SELECT COUNT(*) as ccnt FROM Car) c cross join 
    (SELECT COUNT(*) as tcnt FROM Truck) t; 
+0

Diese zweite Abfrage hat es für mich getan. Ich danke dir sehr! –

Verwandte Themen