次の表があります。
CREATE TABLE "questions"
("counter" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE ,
"questionid" INTEGER NOT NULL ,
"chapter" INTEGER NOT NULL ,
"image" VARCHAR NOT NULL )
私はこれを取得したい:
CHAPTER, NUMBER OF QUESTIONS IN CHAPTER, NUMBER OF IMAGES IN CHAPTER
UNION で結果を得ることができましたが、これは上記の要件に従っていません (つまり、3 列ではなく 2 列の出力があります)。
// First query: get only chapters with images, and count all questions
SELECT Q1.chapter as "chapterID with images", count(q1.image) as c1
FROM questions AS Q1
where q1.chapter IN (SELECT chapter from questions where image NOT LIKE "")
group by q1.chapter
UNION
// Second query: get only chapters with images and count only images
SELECT Q2.chapter as "chapterID with images", count(q2.image) as c2
FROM questions AS Q2
WHERE Q2.image NOT LIKE ""
group by q2.chapter
単一のクエリを試してみると、次のように、最初の COUNT または 2 番目の COUNT のみが取得されます。
// NOT WORKING!
SELECT Q1.chapter as "chapterID with images", count(q1.image), count (q2.image)
FROM questions AS Q1, questions AS Q2
where q1.chapter IN (SELECT chapter from questions where IMAGE NOT LIKE "")
AND q1.counter= q2.counter
group by q1.chapter
どうもありがとう。
更新: 解決策
LS_dev によって提案されたアプローチに従って、次のように解決しました。
2つのサブクエリから値を取得してそれらを分割したいのですが(つまり、画像/質問)、うまくいきませんが、これは別の質問であることはわかっています...
SELECT chapter,
(SELECT COUNT(*) FROM questions WHERE chapter=Q1.Chapter AND image NOT LIKE "" ) as "number of images",
(SELECT COUNT(*) FROM questions WHERE chapter=Q1.Chapter) as "number of questions"
FROM questions AS Q1
WHERE chapter in (SELECT chapter from questions where IMAGE NOT LIKE "")
GROUP BY chapter