2017-10-13 52 views
-1

對不起,我是newbee,無法一次性在漂亮的代碼列表中完成everyhing。我正在(讓)​​在網站上啓動我的數據庫的前期階段,但在此之前,我需要使用內部聯接創建(全部)視圖。我在'on clause'中收到臭名昭着的1054未知列的消息。這是實際的MySQL腳本。有人能幫助我成功完成腳本嗎?圍繞腳本中的這段代碼,它會搜索(在FROM SYNTAX中的星星之間的):INNER JOIN zorgaanbieder AS zorgaanbieder_1 ON(zorgverlener.Zorgaanbieder_ID = zorgaanbieder_1.Zorgaanbieder_ID)。請參閱下面的代碼錯誤1054未知列在'on子句' - 內部連接爲視圖

CREATE VIEW `fetch_data` AS 

SELECT 
    zorgactiviteiten.ZA_code, 
    zorgactiviteiten.ZA_naam, 
    zorgactiviteiten.ZA_omschr_consument, 
    zorgprofielklasse.ZPK_oms, 
    behandelingen.Behandeling_criteria, 
    aanspraak.Aanspraak_omschr, 
    aanspraak.Aanspraak_machtiging, 
    cluster.Cluster_naam, 
    diagnosen.Diagnose_code, 
    diagnosen.Diagnose_naam, 
    diagnosen.Diagnose_groep, 
    diagnosen.Diagnose_hoofdstuk, 
    specialisme.Specialisme_naam, 
    zorgproducten.ZP_code, 
    zorgproducten.ZP_naam, 
    zorgproducten.ZP_omschr_consument, 
    zorgproductgroepen.ZPG_naam, 
    declaratie.Declaratie_code, 
    declaratie.Declaratie_zorg, 
    contractueel.Contractueel_uitleg, 
    contract.Contract_zorg, 
    contract.Contract_verzekerd, 
    contract.Contract_uitsluiting, 
    zorgverzekeraar.Zorgverzekeraar_verzekeraar, 
    zorgverzekeraar.Zorgverzekering_verzekering, 
    zorgverzekeraar.Zorgverzekering_soort, 
    zorgverzekeraar.Zorgverzekering_zorgkeuze, 
    concern.Concern_inkoop, 
    concern.Concern_label, 
    zorgverlener.Zorgverlener_plaats, 
    zorgverlener.Zorgverlener_regio, 
    zorgverlener.Zorgverlener_soort, 
    zorgaanbieder.Zorgaanbieder_informatie, 
    zorgaanbieder.Zorgaanbieder_website, 
    zorgaanbieder.Zorgaanbieder_reviews, 
    zorgaanbieder.Zorgaanbieder_rapport, 
    zorgaanbieder.Zorgaanbieder_oordeel, 
    zorgaanbieder.Zorgaanbieder_prijslijst, 
    prijslijst.Prijslijst_tarief, 
    prijslijst.Prijslijst_actie, 
    prijslijst.Prijslijst_soort, 
    prijslijst.Prijslijst_jaar 
FROM 
    concern_zorgaanbieder_prijslijst 
INNER JOIN 
    prijslijst ON (concern_zorgaanbieder_prijslijst.Prijslijst_ID = prijslijst.Prijslijst_ID) 
INNER JOIN 
    concern ON (concern_zorgaanbieder_prijslijst.Concern_ID = concern.Concern_ID)  
INNER JOIN 
    zorgaanbieder ON (concern_zorgaanbieder_prijslijst.Zorgaanbieder_ID = zorgaanbieder.Zorgaanbieder_ID) 
INNER JOIN 
    zorgaanbieder AS zorgaanbieder_1 ON (zorgverlener.Zorgaanbieder_ID = zorgaanbieder_1.Zorgaanbieder_ID) 
INNER JOIN 
    zorgverlener ON (contract.Zorgverlener_koppel = zorgverlener.Zorgverlener_ID) 
INNER JOIN 
    concern AS concern_1 ON (zorgverzekeraar.Concern_ID = concern_1.Concern_ID) 
INNER JOIN 
    zorgverzekeraar ON (contract.Zorgverzekeraar_koppel = zorgverzekeraar.Zorgverzekeraar_ID) 
INNER JOIN 
    contract ON (contractueel_contract.Contract_ID = contract.Contract_ID) 
INNER JOIN 
    contractueel_contract ON (contractueel.Contractueel_ID = contractueel_contract.Contract_ID) 
INNER JOIN 
    contractueel ON (contractueel_decaratie.Contractueel_ID = contractueel.Contractueel_ID) 
INNER JOIN 
    contractueel_decaratie ON (declaratie.Declaratie_code = contractueel_decaratie.Declaratie_code) 
INNER JOIN 
    declaratie ON (zorgproducten_declaratie.Declaratie_code = declaratie.Declaratie_code) 
INNER JOIN 
    zorgproducten_declaratie ON (zorgproducten.ZP_code = zorgproducten_declaratie.ZP_code) 
INNER JOIN 
    zorgproductgroepen ON (zorgproducten.ZPG_code = zorgproductgroepen.ZPG_code) 
INNER JOIN 
    zorgproducten ON (dbc.ZP_code = zorgproducten.ZP_code) 
INNER JOIN 
    specialisme ON (diagnosen.Specialisme_code = specialisme.Specialisme_code) 
INNER JOIN 
    diagnosen ON (diagnosebereik.Diagnose_ID = diagnosen.Diagnose_ID) 
INNER JOIN 
    diagnosebereik ON (dbc_diagnosebereik.Diagnosebereik_naam = diagnosebereik.Diagnosebereik_naam) 
INNER JOIN 
    dbc_diagnosebereik ON (diagnosebereik.Diagnosebereik_naam = dbc_diagnosebereik.Diagnosebereik_naam) 
INNER JOIN 
    dbc ON (dbc_diagnosebereik.DBC_koppel = dbc.DBC_koppel) 
INNER JOIN 
    behandelingen ON (dbc.DBC_koppel = behandelingen.DBC_koppel) 
INNER JOIN 
    cluster ON (behandelingen.Cluster_ID = cluster.Cluster_ID) 
INNER JOIN 
    aanspraak ON (behandelingen.Aanspraak_code = aanspraak.Aanspraak_code) 
INNER JOIN 
    zorgactiviteit_behandelingen ON (behandelingen.Behandeling_naam = zorgactiviteit_behandelingen.Behandeling_naam) 
INNER JOIN 
    zorgactiviteiten ON (zorgactiviteit_behandelingen.ZA_code = zorgactiviteiten.ZA_code) 
INNER JOIN 
    zorgprofielklasse ON (zorgactiviteiten.ZPK_code = zorgprofielklasse.ZPK_code) 
+0

請您可以檢查有一個在zorgverlener表命名Zorgaanbieder_ID列? –

+0

在Mysql中使用語句來查看它:SELECT Zorgaanbieder_ID FROM zorgverlener並給出結果。也許正如你可以看到我有兩個內部聯接(表zorgaanbieder和關注)與別名(_1),因爲否則該函數會給出另一個錯誤(不唯一)。它是由我的同事告知的(他是我工作的醫院的查詢構建者)。 ON後面的'(...)'是我的工作;-)是MySQL用戶指南中的一種狀態。希望你能找出答案並樂意得到如此快速的答覆。提前致謝 ! – Evert

+0

請閱讀並按照[mcve]進行操作。你廣泛的谷歌搜索出現了什麼? – philipxy

回答

2

調試建議:從小開始測試,然後通過小增量增長並重新測試。

我相信你的問題是連接的不正確的序列,而不是不正確的列引用。例如

## this will fail 
select a.* from a 
join c on b.id = c.id ## c attempts to join to b = incorrect sequence of joins 
join b on a.id = b.id 

下面,表zorgverlener試圖加入到contract,但尚未加入。

SELECT 
     czp.* 
FROM concern_zorgaanbieder_prijslijst as czp 
... 
INNER JOIN zorgverlener ON (contract.Zorgverlener_koppel = zorgverlener.Zorgverlener_ID) 
... 
INNER JOIN contract ON (contractueel_contract.Contract_ID = contract.Contract_ID) 

其他提示:

  1. 不要使用表的別名
  2. 不要使用不必要的括號

要解決這一問題更改順序的加入:

SELECT 
     czp.* 
FROM concern_zorgaanbieder_prijslijst as czp 
... 
INNER JOIN contract AS C ON contractueel_contract.Contract_ID = contract.Contract_ID 
... 
INNER JOIN zorgverlener ON c.Zorgverlener_koppel = zorgverlener.Zorgverlener_ID 

但現在我們看到contractueel_contract需要超出合約等等。

相信喬伊斯的更正確的順序如下,但也有2加入我解決不了:

SELECT 
     czp.* 
FROM concern_zorgaanbieder_prijslijst AS czp 
INNER JOIN prijslijst ON czp.Prijslijst_ID = prijslijst.Prijslijst_ID 
INNER JOIN concern ON czp.Concern_ID = concern.Concern_ID 

## problems in the next 2 lines, seem to be recursve 
INNER JOIN diagnosebereik ON dbc_diagnosebereik.Diagnosebereik_naam = diagnosebereik.Diagnosebereik_naam 
INNER JOIN dbc_diagnosebereik ON diagnosebereik.Diagnosebereik_naam = dbc_diagnosebereik.Diagnosebereik_naam 

INNER JOIN dbc ON dbc_diagnosebereik.DBC_koppel = dbc.DBC_koppel 
INNER JOIN zorgproducten ON dbc.ZP_code = zorgproducten.ZP_code 
INNER JOIN zorgproducten_declaratie ON zorgproducten.ZP_code = zorgproducten_declaratie.ZP_code 
INNER JOIN declaratie ON zorgproducten_declaratie.Declaratie_code = declaratie.Declaratie_code 
INNER JOIN contractueel_decaratie ON declaratie.Declaratie_code = contractueel_decaratie.Declaratie_code 
INNER JOIN contractueel ON contractueel_decaratie.Contractueel_ID = contractueel.Contractueel_ID 
INNER JOIN contractueel_contract ON contractueel.Contractueel_ID = contractueel_contract.Contract_ID 
INNER JOIN contract ON contractueel_contract.Contract_ID = contract.Contract_ID 
INNER JOIN zorgverlener ON contract.Zorgverlener_koppel = zorgverlener.Zorgverlener_ID 
INNER JOIN zorgaanbieder ON czp.Zorgaanbieder_ID = zorgaanbieder.Zorgaanbieder_ID 
INNER JOIN zorgaanbieder AS zorgaanbieder_1 ON zorgverlener.Zorgaanbieder_ID = zorgaanbieder_1.Zorgaanbieder_ID 
INNER JOIN zorgverzekeraar ON contract.Zorgverzekeraar_koppel = zorgverzekeraar.Zorgverzekeraar_ID 
INNER JOIN concern AS concern_1 ON zorgverzekeraar.Concern_ID = concern_1.Concern_ID 
INNER JOIN zorgproducten_declaratie ON zorgproducten.ZP_code = zorgproducten_declaratie.ZP_code 
INNER JOIN zorgproductgroepen ON zorgproducten.ZPG_code = zorgproductgroepen.ZPG_code 
INNER JOIN diagnosen ON diagnosebereik.Diagnose_ID = diagnosen.Diagnose_ID 
INNER JOIN specialisme ON diagnosen.Specialisme_code = specialisme.Specialisme_code 
INNER JOIN behandelingen ON dbc.DBC_koppel = behandelingen.DBC_koppel 
INNER JOIN cluster ON behandelingen.Cluster_ID = cluster.Cluster_ID 
INNER JOIN aanspraak ON behandelingen.Aanspraak_code = aanspraak.Aanspraak_code 
INNER JOIN zorgactiviteit_behandelingen ON behandelingen.Behandeling_naam = zorgactiviteit_behandelingen.Behandeling_naam 
INNER JOIN zorgactiviteiten ON zorgactiviteit_behandelingen.ZA_code = zorgactiviteiten.ZA_code 
INNER JOIN zorgprofielklasse ON zorgactiviteiten.ZPK_code = zorgprofielklasse.ZPK_code 
+0

對不起Used_By_Already。上面的回答是對你的評論,但是添加了評論錯誤。我相信接近解決與編碼。我將問題行(表diagnosebereik和dbc_diagnosebereik)合併到表'dbc_diagnosen'中。因此,您的聲明中的代碼是:「## problems ... INNER JOIN dbc_diagnosen ON diagnosen.Diagnose_ID = dbc_diagnosen。Diagnose_ID INNER JOIN dbc ON dbc_diagnosen.DBC_koppel = dbc.DBC_koppel「然後......」INNER JOIN diagnosen ON dbc_diagnosen.Diagnose_ID = diagnosen.Diagnose_ID「是我碰到另一個錯誤的地方1054 unknown column diagnosen.Diagnose_ID。What's next ? – Evert

+0

我注意到,在你的語句中完全相同的表INNER JOIN zorgproducten_declaratie被命名爲兩次,我刪除了最下面的在MySql中應用,我喜歡更新我在此時的FROM語句中的代碼,但不知道如何(把更少的字符留給代碼作爲註釋) – Evert

+0

我的答案的目的是告訴你爲什麼你遇到了問題並提出解決方法。只有你可以測試任何版本的查詢。請記住,調試時從小開始並以小增量添加。 –

相關問題