2016-07-19 11 views
0

ich folgende Stackoverflow Post verwendet haben, um zu versuchen und einen Datensatz mit den jeweils neuesten Termin zu erhalten: Select info from table where row has max dateUnbekannte Spalte, wenn Tabellen verknüpft und mit einer Unterabfrage

ich die folgende Abfrage geschrieben:

SELECT AR_SQ.SYMBOL, AR_SQ.NAME, AR_SQ.LAST, FF_PS.SECTOR, FF_PS.SECTOR_TAGS, HP.LAST_10_DAYS, HP.YTD_PERF 
FROM AR_STOCK_QUOTE AR_SQ 
LEFT JOIN (
SELECT HP.SYMBOL, max(TRADE_DATE) as MaxDate 
FROM FF_HISTORICAL_STOCK_PRICE HP 
GROUP BY HP.SYMBOL 
) 
HP on HP.SYMBOL = AR_SQ.SYMBOL 
JOIN FF_PRIMARY_STOCK_TABLE FF_PS on FF_PS.SYMBOL = AR_SQ.SYMBOL 

Als ich dies aber tun, erhalte ich eine Fehlermeldung, die folgenden:

Fehlercode: 1054 Unknown column ‚HP.LAST_10_DAYS‘ in ‚field list‘

Warum sollte dies der Fall sein, da HP definiert ist und ein Feld in dieser Tabelle ist?

Antwort

2

weil Sie tun, ein auf einer select-Anweisung kommen nicht auf den Tisch „FF_HISTORICAL_STOCK_PRICE“ Sie können nicht von HP auf dem globalen select verwenden, weil HP auf die select-Anweisung das Feld nicht da

SELECT AR_SQ.SYMBOL, AR_SQ.NAME, AR_SQ.LAST, FF_PS.SECTOR, FF_PS.SECTOR_TAGS, HP.LAST_10_DAYS, HP.YTD_PERF #3- you cannot use HP here 
FROM AR_STOCK_QUOTE AR_SQ 
LEFT JOIN (
# 1- you are not doing ajoin on the table FF_HISTORICAL_STOCK_PRICE HP 
# 2- you can use HP on this select 
SELECT HP.SYMBOL, max(TRADE_DATE) as MaxDate 
FROM FF_HISTORICAL_STOCK_PRICE HP 
GROUP BY HP.SYMBOL 
) 
HP on HP.SYMBOL = AR_SQ.SYMBOL 
JOIN FF_PRIMARY_STOCK_TABLE FF_PS on FF_PS.SYMBOL = AR_SQ.SYMBOLenter code here 

hinzufügen in der definiert ist, Join Teil jetzt werden sie auf dem Ergebnis HP existieren und versuchen, verschiedene Alias ​​für die Auswahl zu verwenden

SELECT AR_SQ.SYMBOL, AR_SQ.NAME, AR_SQ.LAST, FF_PS.SECTOR, FF_PS.SECTOR_TAGS, RS.LAST_10_DAYS, RS.YTD_PERF 
FROM AR_STOCK_QUOTE AR_SQ 
LEFT JOIN (
# add the last_10_days to the fields of you select statement now you can select them 
SELECT HP.SYMBOL, max(TRADE_DATE) as MaxDate ,HP.LAST_10_DAYS, HP.YTD_PERF 
FROM FF_HISTORICAL_STOCK_PRICE HP 
GROUP BY HP.SYMBOL 
) RS on RS.SYMBOL = AR_SQ.SYMBOL #HP is a result of select statement 
JOIN FF_PRIMARY_STOCK_TABLE FF_PS on FF_PS.SYMBOL = AR_SQ.SYMBOL 
+0

Wie würde ich das richtig dann auf die Werte in dieser Tabelle zugreifen? – user1048676

+0

Ich versuche immer, verschiedene Aliase für Werte innerhalb einer SELECT-Anweisung und beim JOINing der SELECT-Anweisung aus genau diesem Grund zu verwenden. SQL-Abfragen sind bereits verwirrend genug. – RIanGillis

+0

Sie müssen die Spalte LAST_10_DAYS einbeziehen, wenn Sie die SELECT-Anweisung innerhalb des LINKEN JOIN ausführen (und auch in die GROUP BY einbeziehen oder in einer Aggregatfunktion verwenden). – RIanGillis

Verwandte Themen