2010-02-23 6 views
0

Je suis en train de migrer une application client de ColdFusion sur Windows avec SQL Server vers ColdFusion sur Linux avec MySQL et je rencontre des problèmes pour recréer leurs vues en ce qui concerne les jointures.Comment puis-je convertir cette requête INNER JOIN de SQL Server à MySQL?

Quelqu'un peut-il m'aider à déterminer comment les éléments suivants devraient être convertis.

SELECT 
<columns> 
FROM assetType 
INNER JOIN assets 
INNER JOIN AssetToContent ON assets.asset_id = AssetToContent.asset_id 
ON assetType.asset_typeID = assets.asset_typeID 
RIGHT OUTER JOIN ContentType 
INNER JOIN Content ON ContentType.ContentTypeID = Content.ContentTypeID 
ON AssetToContent.ContentID = Content.ContentID 
LEFT OUTER JOIN Page_Content ON Content.ContentID = Page_Content.ContentID 
RIGHT OUTER JOIN Page ON Page_Content.PID = Page.PID 

Le INNER JOIN de sans clause ON sont ce me trébuche et je ne peux trouver aucune bonne documentation SQL Server sur l'ordre des jointures imbriquées.

+0

Sélectionnez quoi cependant ?? – JonH

+2

D'abord, veuillez mettre un peu d'effort dans le formatage de vos questions afin qu'elles soient lisibles. Deuxièmement, maintenant que votre SQL est lisible, il ne semble même pas être syntaxiquement valide. Vous avez des clauses ON sans JOIN. (Lignes 6 et 9). S'il vous plaît adresse – hobodave

+1

S'il vous plaît noter également que vôtre est la seule question avec le tag "mssql". C'est parce que la balise correcte est "sql-server". –

Répondre

3

Cela devrait fonctionner. Je ne sais pas quelle syntaxe vaudou SQL Server utilise, mais vos clauses ON étaient partout:

SELECT 
<columns> 
FROM assetType 
INNER JOIN assets ON assetType.asset_typeID = assets.asset_typeID 
INNER JOIN AssetToContent ON assets.asset_id = AssetToContent.asset_id 
INNER JOIN Content ON AssetToContent.ContentID = Content.ContentID 
RIGHT OUTER JOIN ContentType ON ContentType.ContentTypeID = Content.ContentTypeID 
LEFT OUTER JOIN Page_Content ON Content.ContentID = Page_Content.ContentID 
RIGHT OUTER JOIN Page ON Page_Content.PID = Page.PID 
+0

Je ne sais pas pourquoi cela a été déprécié. Il est syntaxiquement valide MySQL et associe les clauses ON avec le JOIN approprié de la seule façon logique. – hobodave

+0

La syntaxe de SQL Server n'est pas plus Voodoo que tout autre dialecte SQL ... surtout quand on regarde ce que MySQL laisse passer comme valide. ;) +1 pour mettre les jointures droites. – Tomalak

+0

L'emplacement étrange des clauses on n'était pas requis par SQL Server, je suppose que Cold Fusion vient de créer la requête de manière non-standrd. C'était valide parce que les clauses ON étaient là, mais les gens ne les séparaient pas normalement quand ils écrivaient manuellement une requête. – HLGEM

Questions connexes