I’m trying to convert MySQL query to MsSql query but I’m having trouble. Here is my query:
MySQL
JavaScript
x
SELECT *,
(SELECT count(books.id)
FROM books
WHERE books.status = 1
AND FIND_IN_SET(categories.id, books.multiple_category_id)) AS book_count
FROM categories, books
WHERE categories.parent_id=0
AND categories.status=1 ;
SQL I’ve tried
JavaScript
SELECT *,
(SELECT count(books.id)
FROM books
WHERE books.status = 1
AND CHARINDEX(categories.id, books.multiple_category_id) > 0) AS book_count
FROM categories, books
WHERE categories.parent_id=0
AND categories.status=1 ;
The errors I’m getting are:
JavaScript
Argument data type int is invalid for argument 1 of charindex function.
For reference. http://sqlfiddle.com/#!3/4ed19/3
does anyone have any ideas? Thanks in advance!
Advertisement
Answer
Use this query. I just changed categories.id
to CAST(categories.id AS VARCHAR)
. Because the id
is integer
in categories
table.
JavaScript
SELECT *,
(SELECT count(books.id)
FROM books
WHERE books.status = 1
AND CHARINDEX(CAST(categories.id AS VARCHAR), books.multiple_category_id) > 0) AS book_count
FROM categories,
books
WHERE categories.parent_id=0
AND categories.status=1 ;