2017-08-24 6 views
0

Ich möchte Aliase aus einer Unterabfrage verwenden.Verwenden Sie Alias ​​von Unterabfrage

Fruit table: 
name: is_bio: from_id: to_id: 
Apple yes  Spain  Italy 

Country table: 
id:  packaging_type: packaging_quantity: 
Italy wood box   12 
Spain paper box   18 

Und habe ich versucht, so etwas wie dieses:

with subquery as (SELECT a.packaging_type, a.packaging_quantity, b.packaging_type, b.packaging_quantity 
FROM fruit 
    inner join country a on a.country.id = fruit.from_id 
    inner join country b on b.country.id = fruit.to_id 
WHERE fruit.name = 'Apple') 
SELECT a.packaging_quantity from subquery; 

Aber ich einen Fehler bekam:

ORA-00904: "A"."PACKAGING_QUANTITY": invalid identifier 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 
Error at Line: 7 Column: 14 
+0

MySQL, wenn es das ist wirklich die Datenbank, die Sie verwenden, unterstützt keine gemeinsame Ausdrücke Tabelle. –

+0

Entschuldigung, ich möchte auf sql klicken, aber ich habe stattdessen auf mysql geklickt und ich habe vergessen, es zu löschen. – tmsblgh

+1

entfernen a. von Select-Abfrage und erneut ausführen - SELECT Packaging_quantity von Unterabfrage; --- überprüfen, ob dies funktioniert. – Nidhi257

Antwort

3

Dies beantwortet die ursprüngliche Version der Frage.

Ihr CTE hat vier Spalten, aber nur zwei Spaltenaliasnamen: packaging_type und packaging_quantity. Der Tabellenaliasname ist nicht der vollständige qualifizierte Spaltenname (dh einschließlich des Alias- oder Tabellennamens), sondern nur der Spaltenname.

Sie müssen sie verschiedene Namen mit as, wie geben:

with subquery as (
     select a.packaging_type as packaging_type_a, 
      a.packaging_quantity as packaging_quantity_a, 
      b.packaging_type as packaging_type_b, 
      b.packaging_quantity as packaging_quantity_b 
     from fruit inner join 
      country a 
      on a.country.id = fruit.from_id inner join 
      country b 
      on b.country.id = fruit.to_id 
     where fruit.name = 'Apple' 
    ) 
select packaging_quantity_a 
from subquery; 
+0

Ich habe meine Frage aktualisiert, bitte überprüfen Sie das. Vielen Dank! – tmsblgh

+0

@ tmsblgh. . . Sie sollten eine * neue * Frage stellen. Eine Frage zu ändern, nachdem sie beantwortet wurde, ist unhöflich, weil sie dazu beitragen kann, die ursprünglichen Antworten zu bewerten. –

+0

Ich wusste das nicht, sorry! – tmsblgh

Verwandte Themen