2016-06-23 6 views
0

Ist es möglich, in MySQL, die Attribute einer Tabelle in einer NATURAL wie diese JOIN zu umbenennen:Rename-Attribut auf NATURAL JOIN

select * FROM AAA NATURAL JOIN BBB AS NEW_NAME(ATTR_ONE, ATTR_TWO); 

Laut Grundlagen der Datenbanksysteme - Ramez Elmasri ein DBMS sollte es erlauben, , aber ich fand keine Möglichkeit, es auf MySQL zu tun

Antwort

0

Ich habe MySQL seit über einem Jahrzehnt gearbeitet und ich habe es nie gesehen; und wenn es eine solche Funktion unterstützt, bin ich ziemlich sicher, dass es in der offiziellen Dokumentation here erwähnt werden würde.

In der Tat, ich bin mir nicht sicher, dass ich jemals über eine solche Funktion sogar in relationalen Algebra lesen, obwohl meine formale Ausbildung vor über einem Jahrzehnt endete.

Wie würde eine solche Operation sogar funktionieren; Soll es AAA.ATTR_ONE für eine fehlende AAA.ATTR_TWO im JOIN ersetzen? oder soll es das Ergebnisfeld aliasieren? oder etwas anderes?


Ziemlich sicher die einzige Alternative ist so etwas wie

SELECT * 
FROM AAA 
NATURAL JOIN (
    SELECT field0 AS ATTR_ONE, field1 AS ATTR_TWO FROM BBB 
) AS NEW_NAME 

wo Field0 und field1 sollten mit den tatsächlichen Feldnamen aus, um BBB ersetzt werden.

... tatsächlich fange ich an, den Anspruch des Buches eher zweifelhaft zu finden; es nimmt eine Spaltenreihenfolge an, die (obwohl sie in der Praxis existieren kann) nicht als stärker als die Zeilenreihenfolge angenommen werden kann.

+0

Wenn BBB Attribute namens (eins, zwei) hatte, sollte das Ergebnis von NEW_NAME (ATTR_ONE, ATTR_TWO) eine "neue" Tabelle mit den angegebenen Tabellen- und Attributnamen erstellen. – zer0uno

+0

Ah, also Aliasing der Tabelle und Spalten zusammen? Hat das irgendetwas mit NATURAL JOIN zu tun, oder war das nur dein beabsichtigter Gebrauch? Wie auch immer, nach dem Aliasing in MySQL im Allgemeinen sieht es so aus, als ob es keine solche Syntax bietet. – Uueerdo

+0

Es sollte hilfreich sein, wenn die Tabellen keine Attributnamen gemeinsam haben. Wenn Sie das Buch haben, finden Sie Informationen auf pag. 123 – zer0uno