データベース内のさまざまなテーブルで多数のカウントを実行する必要があります。
これらのカウントを1つの結果にまとめたいと思います。行ではなく列として複数の結果を結合する
SELECT 100 As SomeCount
UNION
SELECT 200 As SomeOtherCount
UNION
SELECT 300 As YetAnotherCount
出力:
> SomeCount
> ---------
> 100
> 200
> 300
私は
UNION
を使用してそれらを組み合わせた場合、結果のそれぞれは、最終結果の行になります
SELECT 100 As SomeCount
SELECT 200 As SomeOtherCount
SELECT 300 As YetAnotherCount
:次のクエリConider
私が代わりにしたいのは
> SomeCount | SomeOtherCount | YetAnotherCount
> --------------------------------------------
> 100 | 200 | 300
私は結果がこのような何か使用している「名前」を切ったと思うことができる唯一の他の方法:
> Name | Value
> ---------------------------------
> 'SomeCount' | 100
> 'SomeOtherCount' | 200
> 'YetAnotherCount' | 300
があります:のように結果が見え
SELECT 'SomeCount' As Name, 100 As Value
UNION ALL
SELECT 'SomeOtherCount', 200
UNION ALL
SELECT 'YetAnotherCount', 300
た場合を私が望む結果を得る方法、 または行く方法の最後の方法ですか?
上記のクエリは、コアの問題を説明するために非常に簡単であることを言及する必要があります。 現実に組み合わせる必要が2つのクエリは次のようになります。
クエリ1:
SELECT Count(Id) As UndeliveredSms
FROM
(
SELECT Id
FROM IncomingSms
WHERE Id NOT IN (SELECT IncomingSmsId
FROM DeliveryAttempt
WHERE Status = 'Delivered' OR Status = 'FailedPermanently')
)
クエリ2:
SELECT Count(Id) As UndeliveredEMail FROM
(
SELECT Id
FROM IncomingEMail
WHERE Id NOT IN (SELECT IncomingEMailId
FROM DeliveryAttempt
WHERE Status = 'Delivered' OR Status = 'FailedPermanently')
)
は別のSELECT
文でこれらのラッピングは、SQLiteのでは動作しません。 。例の最後のメソッドを使用して
は仕事をし、そしてそれは悪い考えでない限り、私はそのソリューションで を行くかもしれない:
> Name | Value
> ---------------------------------
> UndeliveredEMail | 82
> UndeliveredSms | 0
そして、このような何かになり
SELECT 'UndeliveredSms' As Name, Count(Id) As Value
FROM
(
SELECT Id
FROM IncomingSms
WHERE Id NOT IN (SELECT IncomingSmsId
FROM DeliveryAttempt
WHERE Status = 'Delivered' OR Status = 'FailedPermanently')
)
UNION
SELECT 'UndeliveredEMail', Count(Id) FROM
(
SELECT Id
FROM IncomingEMail
WHERE Id NOT IN (SELECT IncomingEMailId
FROM DeliveryAttempt
WHERE Status = 'Delivered' OR Status = 'FailedPermanently')
)
実際には、実際にはさらに多くのものがあります。
ありがとう、あなたは歓迎されている@TimothyPことが – TimothyP
:-)私の問題を解決します! – Taryn
この場合、連合は必要ですか? 2つのクエリの性質を考慮せずに動作するように見えます:http://sqlfiddle.com/#!7/f8ac1/6 – user2480596