1

2 つ (または 3 つ、または 4 つ...) のテーブルを一度に選択して、すべてのテーブルのエントリ数をまとめてカウントしたいと考えています。

たとえば、いくつかのテーブルがある場合:「ニュース」、「記事」、「ギャラリー」

すべてのテーブルに、「author_id」のような行があります

今、次の選択ステートメントを使用すると:

SELECT *
FROM
news as n, articles as a, galleries as g
WHERE
n.author = 1
AND a.user = 1
AND g.uploader = 1

すべてのテーブルに「1」に一致する作成者 (またはユーザーまたはアップローダー) を持つ行が少なくとも 1 つある場合にのみ結果が得られます。

4

3 に答える 3

1

UNION ALLまたは、サブクエリで使用して、すべてのテーブルの結果を組み合わせることができます。次にCOUNT()、指定しAuthor_IDた . author_id次のクエリは、すべてのテーブルで指定されたレコードの総数を取得します。

SELECT COUNT(author_ID)
FROM
(
    SELECT userID AS Author_ID FROM news
    UNION ALL
    SELECT user_ID AS Author_ID FROM articles
    UNION ALL
    SELECT UiD AS Author_ID FROM galleries
) a
WHERE a.Author_ID = 1

フォローアップの質問、

  • 結果をどのように表示しますか? これもテーブルを結合することで解決できるからです。
  • または、レコードをカウントするメインテーブルと参照テーブルは何ですか?
于 2012-10-09T05:48:50.423 に答える
0

フィールドを使用して、次のようにすべてのテーブルから表示する必要があります

SELECT n.author, a.user, g.uploader FROM news as n, articles as a, galleries as g
WHERE n.author = 1 AND a.user = 1 AND g.uploader = 1

その後、それは動作します

于 2012-10-09T05:48:56.603 に答える
0

あなたのnewsテーブルは親テーブルのように見えるので、次のように、著者の数を取得するにはテーブルを含むテーブルを使用する必要LEFT JOINarticlesあります。galleriesnews

SELECT * 
FROM 
    news n
    LEFT JOIN articles a
    ON n.author_id = a.author_id AND a.user = 1
    LEFT JOIN galleries g
    ON n.author_id = g.authori_id AND g.uploader = 1
于 2012-10-09T05:50:56.383 に答える