在条款'中的错误1054未知列 - 内部联接视图

时间:2017-10-13 18:10:10

标签: mysql join mysql-error-1054

抱歉,我在这里遇到了新手,并且无法在漂亮的代码列表中同时获得正确的东西。我正准备(让)在网站上启动我的数据库,但在此之前,我需要创建一个内部联接的(总)视图。我收到了关于条款'中臭名昭着的1054未知专栏的消息。这是实际的MySQL脚本。有人可以帮助我成功继承剧本吗?在脚本中的这段代码中,它会卡住(在FROM SYNTAX中的星星之间):INNER JOIN zorgaanbieder AS zorgaanbieder_1 ON( zorgverlener.Zorgaanbieder_ID = zorgaanbieder_1.Zorgaanbieder_ID)。请参阅下面的代码

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)

1 个答案:

答案 0 :(得分:2)

调试建议:从小开始,测试,然后通过小增量增长并重新测试。

我相信你的问题是不正确的连接序列,而不是错误的列引用。 e.g。

## 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. 请勿使用不必要的括号
  3. 要更正该问题,请更改联接的顺序:

    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需要超越合同等等。

    我相信一个更正确的jois序列如下,但有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