Har programmerat grunden till en blog, som de på ASP.Net forumet är fullt medvetna om. I alla fall så tänkte jag mig att i grundutförandet så skulle det vara möjligt att välja många kategorier för varje post, och i och med att jag vill använda relationsdatabaser istället för att lägga in en enda post 20 grr med små ändringar, så valde jag att lägga en tabell: blog_entries som har ett fält: entryId.
Sedan har jag en referenstabell: entries2cats, som innehåller tre kolumner: id, entryId och catId
Sedan har jag en tabell över kategorierna: blog_cats, med kolumner - typ "catId" och "name".
Jag vill ställa en fråga liknande den här:
SELECT blog_entries.title, blog_entries.entry, blog_entries.date, blog_entries.entryId, blog_entries.authorId,
blog_authors.name AS author,
COUNT(blog_comments.CommentID) AS nbrComments
FROM blog_entries
INNER JOIN blog_authors ON blog_entries.authorId = blog_authors.authorId
/* here it would be great to add some checkup on what categories this entry is in and concenate a string with them*/
LEFT OUTER JOIN blog_comments ON blog_entries.entryId = blog_comments.entryId
GROUP BY blog_entries.Title, blog_entries.entryId, blog_entries.date, author
ORDER BY Date DESC;
och jag vill göra exakt det som kommentaren säger - skapa en kolumn i det returnerade DataTable (eller recordset-et) som innehåller till exempel:
Categories
-----------
Design, SQL
ASP.Net
Life
Rantings
Life, Rantings
Hur skriver jag mitt SQL uttryck?
Edit: När jag sedan ska lägga till ett till blog-inlägg - ska jag skriva en INSERT fråga som är skitlång då eller ska jag bara använda mig av ett par anrop? Det kanske blir enklare om jag gör två anrop? Kan man ens lägga till i flera tabeller samtidigt med INSERT?
SELECT blog_entries.title, blog_entries.entry, blog_entries.date, blog_entries.entryId, blog_entries.authorId,
blog_authors.name AS author,
COUNT(blog_comments.CommentID) AS nbrComments ,
group_concat(blog_cats.name)
FROM blog_entries
INNER JOIN blog_authors
ON blog_entries.authorId = blog_authors.authorId
inner join entries2cats on blog_entries.entryid = entries2cats.entryid
inner join blog_cats on entries2cats.catid = blog_cats.catid
LEFT OUTER JOIN blog_comments ON blog_entries.entryId = blog_comments.entryId
GROUP BY blog_entries.Title, blog_entries.entryId, blog_entries.date, author
ORDER BY Date DESC
Sedan har jag en referenstabell: entries2cats, som innehåller tre kolumner: id, entryId och catId
En liten sak till bara - När jag sedan ska lägga till ett till blog-inlägg - ska jag skriva en INSERT fråga som är skitlång då eller ska jag bara använda mig av ett par anrop? Det kanske blir enklare om jag gör två anrop? Kan man ens lägga till i flera tabeller samtidigt med INSERT?
Och sedan undrar jag också hur jag lägger till ett mellanrum mellan varje kategori (space)?