2016-06-18 5 views
0

2つのクエリがあります。 クエリ1: -ポストグルで複数のクエリを結合する

select mr.id,count(ml.id) as labor_cnt 
from mreq Mr 
join mlbr ml on Mr.id = ml.mrid 
where Mr.id in(1235,3355) 
group by Mr.id 

クエリ2: -

select mr.id,count(mm.id) as mtrial_cnt 
from mreq Mr join mmrm mm on Mr.id = mm.mrid 
where Mr.id in(1235,3355) 
group by Mr.id 
組合すべてを使用しようと

が、動作しません。それらを組み合わせるための代替案を提案する。

+0

..結果がためにどのように見えますか?両方のクエリ? –

答えて

1

あなたは、両方のクエリでmr.idによってグループ化しているので、私はあなたが結果を望むようなものと仮定します。それはあなたが探しているものだならば、あなたは共通テーブル式でのクエリを組み合わせることができます

mr.id | labor_cnt | mtrial_cnt 
-------------------------------- 
    1 |   5 |   3 
    2 |  null |   6 
    3 |   4 |   2 
    4 |   3 |  null 
... 

を。 MySQLを使っているように見え、およびMySQLが共通テーブル式をサポートしていません

を追加する

WITH labor as (
    SELECT mr.id AS mrid, count(ml.id) AS labor_cnt 
    FROM mreq mr JOIN mlbr ml ON mr.id = ml.mrid 
    WHERE mr.id IN (1235, 3355) 
    GROUP BY mr.id), 

mtrial as (
    SELECT mr.id AS mrid, count(mm.id) AS mtrial_cnt 
    FROM mreq mr JOIN mmrm mm ON mr.id = mm.mrid 
    WHERE mr.id in (1235, 3355) 
    GROUP BY mr.id) 

SELECT COALESCE(l.mrid, m.mrid), l.labor_cnt, m.labor_cnt 
    FROM labor l FULL OUTER JOIN mtrial m ON mrid 
ORDER BY mrid; 

編集:ような何か。 MySQLはサポートサブクエリを行いますので、これは動作する可能性があり(注:私は可能な実行中のMySQLインスタンスを持っていないように私は、構文を確認していません):あなたが結合呼ん

SELECT COALESCE(l.mrid, m.mrid), l.labor_cnt, m.labor_cnt 
    FROM 
    (SELECT mr.id AS mrid, count(ml.id) AS labor_cnt 
     FROM mreq mr JOIN mlbr ml ON mr.id = ml.mrid 
     WHERE mr.id IN (1235, 3355) 
    GROUP BY mr.id) AS labor 

    FULL OUTER JOIN 

    (SELECT mr.id AS mrid, count(mm.id) AS mtrial_cnt 
     FROM mreq mr JOIN mmrm mm ON mr.id = mm.mrid 
     WHERE mr.id in (1235, 3355) 
    GROUP BY mr.id) AS mtrial 

    ON mrid 

ORDER BY mrid; 
+0

はい私は探していますこのようなsomethinkは私のために働く!ありがとう。 –

+0

#1064の取得 - SQL構文に誤りがあります。あなたのMySQLサーバのバージョンに対応するマニュアルを調べて、正しい構文を使って 'labor as(near m)を使用する(SELECT mr.id AS mrid、count(ml.id)AS labor_cnt FROM' in line 1)を確認してください。 –

+0

これを 'postgresql'私はpostgresの構文を使っていましたが、mysqlと同等の構文が何か分かりません。 – jmelesky

関連する問題