2017-10-13 3 views
-1

Désolé, je suis un newbee ici et ne peut pas obtenir tout à la fois dans de belles listes de codes. Je suis dans une préphase pour (laisser) lancer ma base de données sur un site Web, mais avant je dois créer une vue (totale) avec la jointure interne. Et je reçois un message de la fameuse colonne inconnue 1054 dans 'on clause'. Voici le script MySQL réel. Quelqu'un peut-il m'aider à réussir le scénario en vue? Autour de ce code dans le script il stuck (entre les étoiles dans le FROM SYNTAXE): INNER JOIN zorgaanbieder AS zorgaanbieder_1 ON (zorgverlener.Zorgaanbieder_ID = zorgaanbieder_1.Zorgaanbieder_ID). S'il vous plaît voir le code ci-dessouserreur 1054 colonne inconnue dans 'on clause' - jointure interne en tant que vue

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

S'il vous plaît pouvez-vous vérifier qu'il ya une colonne nommée Zorgaanbieder_ID dans la table zorgverlener? –

+0

Considéré avec une déclaration dans Mysql: SELECT Zorgaanbieder_ID FROM zorgverlener et il donne des résultats. Peut-être que vous pouvez voir que j'ai deux jointures internes (table zorgaanbieder et inquiétude) avec un alias (_1), car sinon la fonction donnerait une autre erreur (pas unique). Il a été conseillé par un de mes collègues (il est un constructeur de question dans l'hôpital où je travaille). Le '(...)' derrière ON était mon travail ;-) Était l'une des stratégies selon le guide de l'utilisateur de MySQL. J'espère que vous pouvez le comprendre et heureux d'avoir une réponse si rapide. Merci d'avance ! – Evert

+0

Veuillez lire et agir sur [mcve]. Qu'est-ce que votre googling étendu a révélé? – philipxy

Répondre

2

conseils de débogage: Commencez petit, test, puis par la croissance par petits incréments et re-test. Je crois que votre problème est une séquence INCORRECTE de jointures, pas de références de colonnes incorrectes. par exemple.

## 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 

Ci-dessous, une table zorgverlener tente de se joindre à contract mais il n'a pas encore été rejoint.

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) 

Autres conseils:

  1. Do alias de table d'utilisation
  2. Ne pas utiliser entre parenthèses inutiles

Pour corriger ce problème modifier l'ordre des jointures:

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 

mais maintenant nous voyons que contractueel_contract doit aller au-dessus du contrat et ainsi de suite il va.

Je crois qu'une plus séquence correcte de jois est la suivante, mais il y a 2 Assemble Je ne peux pas résoudre:

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

Désolé Used_By_Already. La réponse ci-dessus a été prise comme commentaire, mais a ajouté un commentaire erroné. Je crois proche de résoudre avec le codage. J'ai fusionné les lignes de problème (tables diagnosebereik et dbc_diagnosebereik) dans la table 'dbc_diagnosen'. Donc, le code de votre déclaration est: "## problèmes ... INNER JOIN dbc_diagnosen ON diagnosticen.Diagnose_ID = dbc_diagnosen.Diagnose_ID INNER JOIN dbc SUR dbc_diagnosen.DBC_koppel = dbc.DBC_koppel "Et plus tard ..." INNER JOIN diagnosen ON dbc_diagnosen.Diagnose_ID = diagnosticen.Diagnose_ID "est l'endroit où je tombe sur une autre erreur 1054 colonne inconnue diagnosticen.Diagnose_ID. ? – Evert

+0

J'ai remarqué que la même table INNER JOIN zorgproducten_declaratie dans votre déclaration a été nommée deux fois.J'ai supprimé le plus ci-dessous pour appliquer dans MySql.J'aime mettre à jour le code de l'instruction FROM que j'ai en ce moment, mais je ne sais pas comment (à moins de caractères laissés à mettre du code comme commentaire) – Evert

+0

Le but de ma réponse est de vous montrer pourquoi vous avez eu le problème et de suggérer comment le résoudre.Bur seul vous pouvez tester n'importe quelle version de la requête. Souvenez-vous du débogage pour commencer petit et ajouter petit à petit. –