Im Folgenden finden Sie einige Oracle PL/SQL-Codes zum Verknüpfen von Tabellen ohne Verwendung von JOIN-Schlüsselwörtern. Das sieht aus wie ein Cross beitreten? Wie würde ich zu Netezza SQL-Code konvertieren? Da stecke ich fest.Konvertieren Sie Oracle (Cross Join?) Zu Netezza, wenn Sie eine durch Komma getrennte Tabellenliste anstelle von JOIN-Schlüsselwörtern verwenden
SELECT COUNT(*)
FROM TABLE_A A, TABLE_A B
WHERE A.X = 'Y' AND A.PATH LIKE '/A/A/A'
AND B.X = 'Z' AND B.PATH LIKE '/B/B/B';
Oracle Kreuz verbinden:
http://www.sqlguides.com/sql_cross_join.php
Hier ist, was ich bisher versucht:
SELECT *
from TABLE_A A
cross join (
select * from TABLE_A
) B
WHERE
A.X = 'Y' AND A.PATH LIKE '/A/A/A'
AND B.X = 'Z' AND B.PATH LIKE '/B/B/B';
EDIT:
a_horse_with_no_name:
Wenn ich in Netezza eine der beiden Syntaxen für COUNT (*) benutze, funktioniert es und gibt eine Zahl von 60 zurück, die bei der Ausführung in Oracle der ersten obigen Abfrage entspricht. Ohne die WHERE-Klausel in Netezza werden 125316 Ergebnisse zurückgegeben, die bei der Ausführung in Oracle mit der ersten obigen Abfrage übereinstimmen. Wenn ich so oder Syntax in Netezza für die SELECT * in der ersten Stunde nutzen, bekomme ich Fehler
ERROR [HY000] ERROR: Record size 70418 exceeds internal limit of 65535 bytes'
einfach wie in INNER? X ist ein Spaltenname. – MacGyver
(Ihre Edit '= Y' zu' = 'Y'' änderte die Bedeutung der Abfrage) Die Oracle SQL sollte so in jeder SQL-Datenbank arbeiten (obwohl die Cross-Join ** sehr ** seltsam für mich aussieht). Aber wenn Sie es mit einem 'Cross-Join 'ersetzen wollen, wäre es' von Tabelle_a eine Kreuz-Verknüpfung Tabelle_b b wobei ... ' –
siehe EDIT ... ... – MacGyver