2016-07-21 7 views
0

のヘルプ、私は次のクエリを持っていますので、paper_idでグループ化されたすべてのORGSの数である4列である私は必要なものMySQLのカウントクエリ

id  org initial 
1001 org1 J. Doe 
1001 org1 J.Smith 
1003 org2 A. Doe 
1004 org3 A. Smith 
1004 org3 B. Doe 
1006 org4 B. Smith 
1007 org5 C. Doe 

select AP.paper_id as id, 
concat(A.organization, A.country)as org, 
group_concat(SUBSTR(first_name, 1, 1), '. ', last_name SEPARATOR ', ') as initial 
       from authors A 
           inner join authors__papers AP ON A.author_id = AP.author_id 
           join tmp_orgs ORGS ON ORGS.paper_id = AP.paper_id 
           where ORGS.organization=A.organization AND 
           AP.is_contact_author < 1 
           group by A.organization, AP.paper_id 
       order by AP.paper_id, idx 

それはにデータがsimlar出力

id  org initial org_count 
1001 org1 J. Doe 2 
1001 org1 J.Smith 2 
1003 org2 A. Doe 1 
1004 org3 A. Smith 2 
1004 org3 B. Doe 2 
1006 org4 B. Smith 1 
1007 org5 C. Doe 1 

I疲れアドオンサブクエリ:

結果は次のようになります。

(著者からのdcntとしてSELECT COUNT(DISTINCT(編成))A INNER JOIN authors__papers AP.author_id = A.author_id AP.is_contact_author < 1 AND paper_id = ??? GROUP BY paper_id)as org_count

...ただし、各行(上記のクエリの???)のpaper_idの指定方法を理解できません。 ?!私が誰かのためで埋めていますので、私は本当にSQLの男ではないけど、それを必要している選択するか、またはそれは本当に問題ない任意のヘルプは高く評価されますが、ほとんどがある

答えて

1

を、これを試してみてください。

SELECT 
    AP.paper_id AS id, 
    CONCAT(A.organization, A.country) AS org, 
    GROUP_CONCAT(SUBSTR(first_name, 1, 1), '. ', last_name SEPARATOR ', ') AS initial, 
    (
     SELECT COUNT(DISTINCT(organization)) AS dcnt 
     FROM authors t1 
     INNER JOIN authors__papers t2 ON t2.author_id = t1.author_id 
     -- INNER JOIN tmp_orgs t3 ON t3.paper_id = t2.paper_id AND t3.organization = t1.organization 
     WHERE t2.is_contact_author < 1 
    ) AS org_count 
FROM authors A 
INNER JOIN authors__papers AP ON A.author_id = AP.author_id 
INNER JOIN tmp_orgs ORGS ON ORGS.paper_id = AP.paper_id 
WHERE ORGS.organization = A.organization 
AND AP.is_contact_author < 1 
GROUP BY A.organization, AP.paper_id 
ORDER BY AP.paper_id, idx 
+0

tmp_orgsはテンポラリテーブルであり、getttingです。#1137 - テーブルを再オープンできません: 't3' –

+0

@DDurham 'JOIN'行をコメントアウトして、もう一度チェックしてください。 – Blank

+0

実際に私はあなたの例を使用して、代わりに一時テーブル内のクエリを挿入する結合を取得することができたので、今私はそれをメインクエリで選択することができます。ありがとう! –

関連する問題