2016-07-01 4 views
0

別名フィールドを持つサブクエリとして(読みやすくなるように、私は私の作業クエリを単純化しています):MySQLのUNIONは、私が怒鳴るようUNIONクエリを持って

SELECT count(*) FROM 
(SELECT DISTINCT `tableA`.`Store Name` FROM `tableA` UNION SELECT DISTINCT `tableB`.`Store Name` FROM `tableB`) t 

これは正常に動作して、単一の数の結果列名のCOUNT(*)

と私は別のクエリに別の列としてこの値を取得したいので、私は実行します。

SELECT DISTINCT `tableC`.`id as PID, 
(SELECT count(*) from (SELECT DISTINCT `tableA`.`Store Name` FROM `tableA` UNION SELECT DISTINCT `tableB`.`Store Name` FROM `tableB`) t) AS noofstores 
WHERE 
.....; 

しかし、それは動作文句を言いません!私は間違って何をしていますか?これは、大きなクエリの一部である、と私は貧しいエラーの説明のために申し訳ありません

, 
(SELECT ....) AS column_name 
, 

を行う際に他のすべてのサブクエリは正常に動作します。アップデート: これは私の完全なクエリです:私は労働組合の権利とすべてを持っていたよう

SELECT DISTINCT 
`tableC`.`id` as PID, 
(SELECT count(*) 
from 
(SELECT DISTINCT `tableA`.`Store Name` FROM `tableA` WHERE `tableA`.`id` = PID 
union 
SELECT DISTINCT `tableB`.`Store Name` FROM `tableB` WHERE `tableB`.`id` = PID) t) AS mycolumn_name 
FROM 
`tableC` 

は見えるが、問題は、私は労働組合内にrefferingいPIDです:

1054 - 不明な列「PID 'in' where句 '

どうすればこの問題を解決できますか?

+1

Plsは正確なエラーメッセージを出力しますが、それだけでは機能しません。あなたのサンプルクエリでは、 'from'節がありませんが、それはサンプルコードの問題です。要点は、正確なエラーメッセージと完全な質問がなければ、何が間違っているのかを知ることは不可能です。 – Shadow

+0

私のポストを更新しました。 –

答えて

0

あなたはPID列が唯一の外側のクエリでは、内側の副問合せには存在しない結果

SELECT DISTINCT c.id as PID from table C inner join 
     (SELECT count(*) from 
(SELECT DISTINCT `tableA`.`Store Name` as st 
FROM `tableA` UNION SELECT DISTINCT `tableB`.`Store Name` as st 
    FROM `tableB`) t on t.some_id=c.id WHERE 
1

を取得するためにTHOS 2つのテーブルを結合する必要があります。どちらの場合も、tableCの共用体の両方のクエリで内部結合を行い、そこでフィルタリングを行うか、またはユニオンクエリのid列を返してフィルタリングを行うためにPIDを結合する必要があります。

select tableC.id as PID, count(distinct storename) 
from 
    (select distinct id, storename from tableA 
    union 
    select distinct id, storename from tableB) t1 
inner join tableC on t1.id=tableC.id 
group by tableC.id 
+0

私はカウントを選択したい店名のみを選択してください。上記のクエリはIDをカウントします。 –

+0

count()関数を更新しました。 – Shadow

関連する問題