2016-09-14 15 views
2

次のステートメントは、SQLテーブル "HistoryDB.HistoryDB"が存在しないと、1146エラーを返します。私は同じデータベース内の2つのテーブルを結合しようとしています。私は、カラム/テーブル名がセキュリティ上の理由から混乱していると混乱しているとお詫び申し上げます。あなたはなぜあなたが参加するための句に、元のテーブル名とエイリアスを使用していますか?TableInfo_tbl私のSQLクエリは、エラー1146でDatabase.Databaseを探しているのはなぜですか?

としてReporttblのエイリアスを使用している

select Reporttbl.id, TableInfo_tbl.lastTime 
    from HistoryDB 
    INNER JOIN Reporttbl AS TableInfo_tbl on Reporttbl.statID = TableInfo_tbl.statID 
    WHERE lastReportTime BETWEEN '2016-09-13 00:00:00' and '2016-09-13 23:00:00' 
    Group BY id, UNIX_TIMESTAMP(lastReportTime) DIV 3600 ORDER BY id ASC 
+0

あなたはそれを把握しましたか? – kbball

答えて

3

この:

select Reporttbl.id, TableInfo_tbl.lastTime 
     ^^^^^^^ 
    INNER JOIN Reporttbl AS TableInfo_tbl etc... 
         ^^^^^^^^^^^^^^^^ 

あなたいったんテーブルエイリアス、あなたは、もはや「オリジナル」のテーブル名、エイリアスのみを使用することはできません。

+0

私は、このクエリの次の問題は '内部結合' – Shaharyar

0

あなたはHistoryDB

INNER JOIN Reporttbl AS TableInfo_tbl on Reporttbl.statID = HistoryDB.statID 

またはHistoryDBはデータベースの名前であれば、あなたの句の例からで適切なテーブルを呼び出す必要がありますことを意味することができますYour_table_name

select Reporttbl.id, TableInfo_tbl.lastTime 
from Your_table_name 
INNER JOIN Reporttbl AS TableInfo_tbl on Your_table_name.statID = TableInfo_tbl.statID 
WHERE lastReportTime BETWEEN '2016-09-13 00:00:00' and '2016-09-13 23:00:00' 
Group BY id, UNIX_TIMESTAMP(lastReportTime) DIV 3600 ORDER BY id ASC 
0

あなたは間違っていますFROM句にデータベース名を指定します。これを最初のテーブルの名前にする必要があります。

SELECT Reporttbl.id, TableInfo_tbl.lastTime 
FROM TableInfo_tbl 
INNER JOIN Reporttbl on Reporttbl.statID = TableInfo_tbl.statID 
WHERE lastReportTime BETWEEN '2016-09-13 00:00:00' and '2016-09-13 23:00:00' 
Group BY id, UNIX_TIMESTAMP(lastReportTime) DIV 3600 ORDER BY id ASC 

あなただけのオリジナルのテーブル名を保つことができるようあなたも参加してエイリアスReporttblする必要はありません。

0

ON文にHistoryDBを含める必要があります。エイリアスを使用する場合は一貫性を持たせるか、削除するだけで済みます。このようなクエリを試してみてください:

SELECT Reporttbl.id, Reporttb1.lastTime 
    FROM HistoryDB 
    INNER JOIN Reporttbl 
    ON HistoryDB.statID = Reporttbl.statID 
    WHERE lastReportTime 
    BETWEEN '2016-09-13 00:00:00' and '2016-09-13 23:00:00' 
    Group BY id, UNIX_TIMESTAMP(lastReportTime) DIV 3600 
    ORDER BY id ASC 
関連する問題