2017-08-24 5 views
0

約5つの表からすべてを選択してそれらをすべて結合する問合せがあります。 問題は、各テーブルに、すべてのテーブルで同じ2つの列名があることです。私はすべてのデータを選択したいと思いますが、私はこれらの2つの列を与えられたものとは異なる名前で結びたいと思います。列名がupdatedalreadyCorrectあるすべて選択表から1つの列を別名に設定するAS

select updatedInfo.*, 
       nameInfo.*, 
       addressInfo.*, 
       phoneInfo.*, 
       emailInfo.*, 
       positionInfo.* 
       from updatedInfo join nameInfo on updatedInfo.IndivId=nameInfo.nameInfoId 
         join addressInfo on updatedInfo.IndivId=addressInfo.addressInfoId 
         join emailInfo on updatedInfo.IndivId=emailInfo.emailInfoId 
         join phoneInfo on updatedInfo.IndivId=phoneInfo.phoneInfoId 
         join positionInfo on updatedInfo.IndivId=positionInfo.IndivId 
         where updatedInfo.correctedInFNV is not null 
         order by updatedInfo.IndivId 

私のクエリは、現在、次のようになります。 は情報が何らかの方法で更新されていることに注意してください。AlreadyCorrectは、更新のために情報を送信したときに正しいことを示します。

私はこれを行うことはできますか?

select updatedInfo.*, 
     nameInfo.*, nameInfo.updated as nameUpdated ..... 

その作業はありますか?またはテーブルのすべての列を一覧表示する必要がありますか?これにより、名前が変更されていない列の両方がエイリアス化されますか?

+0

を行いますとにかく選択*を使用しないでください。実際にすべてのテーブルのすべての列を使用していますか? –

+0

私はすべてのテーブルからすべての単一の列を使用します。非常にリーンなスキーマです。テーブルはたかだか10列しかありません。 –

+0

明示的に列名を付ける必要があります。とにかくすべてのクエリを書く必要があります。 10列の場合は、ここでのクエリは60列です。また、スキーマを変更すると、必要以上のデータが返されます。 –

答えて

2

(*で選択しているように)以前の列名を使用しているので、代わりの方法では機能しません。結果では、「更新済み」列が2回表示されます。一度「更新」という名前で、「名前更新」で一度。

唯一の解決策は、すべての列を列挙し、必要に応じて別名を与えることです。

オルタナティブ: あなたは、すべてのデータを挿入するために、あなたの質問から選択を使用して、あなたの列別の名前を与える一時的な/ハッシュテーブルを作成することができ、最後にあなただけのあなたが本当にすべきSelect * from tempTable

+0

これはありがとう、元とエイリアスの両方を私に受け入れています。確認していただいてありがとうございます! –

関連する問題