Я пытаюсь заменить NULL целочисленным значением 1 (или 0, если это сделано во вложенном sql-statment) в столбце «Antal tillgängliga språk».Некоторые строки получают правильное значение, но некоторые получают NULL.Я предполагаю, что это потому, что мой вложенный SQL-оператор возвращает только то, что соответствует моему предложению where.Есть некоторые bokid ведьмы, которые не имеют Språk из xpath-выражения.
- Я пробовал использовать SELECT COALESCE (COUNT (Språk) +1, 1) AS "Antal tillgängliga språk", ноэто не сработало.
- Я также пробовал SELECT IFNULL (COUNT (Språk) +1, 1) AS "Antal tillgängliga språk", но это тоже не сработало.
- У меня также естьпопытался изменить выражение where во вложенном sql-statment для использования FULL JOIN, ведьма также не сработала.
Теперь у меня нет идей, может кто-нибудь мне помочь?
SELECT DISTINCT Title AS "Titel",
OriginalLanguage AS "Orginalspråk",
Genre AS "Genre",
(SELECT COUNT(Id)
FROM Edition
WHERE Edition.Book = Book.Id) AS "Antal upplagor",
(SELECT COUNT(Språk)+1 AS "Antal tillgängliga språk"
FROM (SELECT Book.Id AS bokid, Språk
FROM Edition, XMLTABLE('$TRANSLATIONS//Translation/@Language'
COLUMNS Språk VARCHAR(20) PATH '.'), Book
WHERE Edition.Book = Book.Id
GROUP BY Språk, Book.Id)
WHERE bokid = Book.Id
GROUP BY bokid),
(SELECT COUNT(Author)
FROM Authorship
WHERE Authorship.Book = Book.Id) AS "Antal författare",
(SELECT MIN(Year)
FROM Edition
WHERE Edition.Book = Book.Id) AS "År första upplaga"
FROM Book
+1 - считать все доступные языки книг, все переводы + язык оригинала.