1

次のようなクエリがあります。

select q.question, e.filename
from question q
join actions a on a.FK_QId = q.PK_Id
join action_params ap on ap.FK_AId = a.PK_Id
join envfile e on e.FK_Qid = ap.value
where e.EnvType = 0

問題は、がvarcharで、が整数であるJOIN ON句です。私は何かをしなければならないことを知っていますが、私が試したことは失敗しました:e.FK_Qid = ap.valuevalueFK_QIdCASTCONVERT

select q.`question`, e.filename
from question q
join actions a on a.FK_QId = q.PK_Id
join action_params ap on ap.FK_AId = a.PK_Id
join envfile e on CAST(e.FK_Qid as nvarchar(3)) = ap.value
where e.EnvType = 0

基本的に、valueフィールドには「1」、「2」などの文字列が含まれます。したがって、文字列間の比較またはintからintへの変換のいずれかを実行できれば問題ありません。結論は"1" = 1"2" = 2などです。

編集:CAST(e.FK_Qid as char3) = ap.value同様に機能しました。

4

1 に答える 1

4

もしapvalue「1」、「2」などの値しかない場合、最初のクエリを使用できます。サーバーはすべてを実行します。すべての値が数値に変換され、ON 条件が機能します。

于 2012-08-02T09:14:15.360 に答える