Ben temelde satılan 5 en çok kitap alır altında sorgu var:
select top 5 count(id_book_orddetails) 'books_sold', bk.*
from orderdetails_orddetails ord inner join books_book bk
on ord.id_book_orddetails = bk.id_book
group by id_book, name_book,author_book,desc_book,id_ctg_book,qty_book,image_book,isdeleted
order by 'books_sold' desc
Sorun bu hatayı alıyorum ki:
The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.
books_book
tabloda, alan desc_book
türünde ntext
biridir, ve ben sorun geliyor emin değilim.
Ben desc_book
değişti önce ntext
, bu tip nvarchar
oldu ve o amele mükemmel olmasıdır.
Ben kitap açıklama (farklı sp) görüntülerken zaman nasılsa PHP web sitesinde, açıklamasına yaklaşık 200-255 karakter olarak kesildi ediliyordu çünkü bu alanın veri türünü değişti nedeni, böylece ben ([{bunu değiştirdi 0)]} ve (yani, bütün desc_book
sonunda görüntülenen ediliyordu) 'benim sorun çözüldü'.
Yani temelde bu benim sorular şunlardır:
- Why is the
desc_book
(nvarchar) bir PHP sayfası görüntülenirken alan kesilmiş? Strong> - How can i fix the SQL query to accommodate for grouping by an
ntext
alan? Strong>
Kayıt (sanmıyorum çok alakalı) Sadece, ben kullanıyorum MS SQL Server 2005
[UPDATE]
Ben denenmiş ve test edilmiş Bill Karwin 'nin önerilen çözümlerin hem ikisi de mükemmel çalışır. Ben bu nedenle ... Bir alt sorgu içine sayısı toplam sonucunu gruplama yani en Karwin en son çözüm verdi.
Yani burada benim güncellenen (tam çalışma) ifadedir:
SELECT bk.*, bc.books_sold
FROM books_book bk
INNER JOIN (
SELECT bk2.id_book, COUNT(*) books_sold
FROM books_book bk2
INNER JOIN orderdetails_orddetails ord
ON (bk2.id_book = ord.id_book_orddetails)
GROUP BY bk2.id_book
) bc
ON (bk.id_book = bc.id_book)
ORDER BY books_sold desc;