2016-05-12 4 views
0

a similar questionが見つかりましたが、エイリアスを使用していなかったのでこの質問を投稿しています。Mysqlテーブルからすべてを選択し、別のテーブルからテーブルを選択する別名を使用する

私は2つのテーブルを持っている - 私はtable1からすべてを取得し、ちょうどtable2からuser_nameTeamをつかむしたいです。 、

私の元のクエリは、すべてが順調と良いことだと正常に動作しますtable2

SELECT * 
FROM qabin.allqas t1 
JOIN login.users t2 
ON (t1.Submitter = t2.user_name) 
WHERE t1.Status='Complete' 

からすべてを奪っているが、私は物事をより面白くするためにuser_nameTeam

を取得したいと思い彼らは別のデータベースにありますが、それは問題ではありません。

1つはqabinデータベースにあり、もう1つはloginデータベースにあります。

私が試してみました:

SELECT 
    qabin.allqas.* AS t1, 
    login.users.Team, 
    login.users.user_name 
JOIN login.users t2 
ON (t1.Submitter = t2.user_name) 
WHERE t1.Status='Complete' 

をそれらが大きなクエリ文字列を構築するために他の場所で使用されているので、私はT1とT2の別名が必要です。

ありがとうございます!

+0

あなたが指摘しているのであなたがその答えに従うことができ、テーブル名のエイリアスを代用できることを知っておくと便利です。 – dan08

+0

私はこれらのエイリアスを使用する多くの行のコードがあるので、これを避けようとしていました。 – user1274820

答えて

1

なぜサブクエリを使用しないのですか?

SELECT * 
FROM qabin.allqas t1 
JOIN (SELECT user_name, Team FROM login.users) t2 
ON (t1.Submitter = t2.user_name) 
WHERE t1.Status='Complete' 
+0

素晴らしい、非常に速い答えとそれは働く:)また、TILサブクエリは何ですか。 – user1274820

+0

これは、はるかに簡単なものを達成するためのラウンドアバウトの方法です。 – dan08

+1

彼は後で大規模なクエリでこのエイリアスを使用すると言いました。もし何らかの理由で彼がこの2つのフィールドだけをこのエイリアスで利用できるようにしたいのであれば、これはあなたのやり方です。 – rgvassar

1

一連の列には1つのエイリアス(t1)を使用できません。私は、あなたが探していることのようなものだと思います:私は代わりに、T1のt1から実際の列名を使用することをお勧めします

SELECT t1.*, t2.team, t2.user_name 
FROM qabin.allqas t1 
JOIN login.users t2 
    ON (t1.Submitter = t2.user_name) 
WHERE t1.Status='Complete' 

*

+0

私は、送信されるパラメータの束に基づいて文字列を作成します。 "$ queryString =" AND t1.DateCompleted BETWEEN '$ startDate' AND '$ endDate' ";'後でコードを書き直すのを避けることを望んでいた – user1274820

+0

私は比較的新しい私はすべての投稿データをエスケープしています – user1274820

1

このクエリをお試しください:

SELECT t1.*, t2.user_name, t2.Team 
FROM qabin.allqas t1 
JOIN login.users t2 
ON t1.Submitter 1= t2.user_name 
WHERE t1.Status='Complete' 
関連する問題