Jag listar mina blogg-inlägg med rubrik, text, skribent och datum via en repeater (ASP.NET 2.0 och MySQL via phpMyAdmin)... till detta så skulle jag vilja samla ihop mina blogg-taggar för att kunna visa dessa tillsammans med rubriken m.m. Borde gå att lösa med GROUP_CONCAT(), se http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat"Udda" SQL-fråga för SUBquery....
En lösning är att köra en repeater för varje blogg-inlägg som hämtar upp taggarna... det innbär att jag får vid 20st blogginlägg 21st db-anrop för varje visning av sidan...
Finns det något sätt att kunna göra en subquery där man kan hämta upp alla taggar och returnera dessa kommaseparerade eller med något annat tecken?
Typ: <b>SELECT id, rubrik, text, skribent, datum, (SELECT newTag = newTag + tag FROM taggar WHERE blogg_id = id) as tags FROM blogg WHERE blogg_id = id </b>
"tag" är då fältets namn i databasen, medan "newTag" är då ett virituellt "fält" som samlar ihop alla taggar...
Så att jag vill då få ut...
id = 1
rubrik = "Min nya blogg"
text = "Det var inte mycket till blogg detta..."
skribent = "Tommy"
datum = "2008-04-02 08:19"
tags = "chips, popcorn, cola"
Tidigare så har jag löst en sak med SUBquery med att jag har behövt hämta två värden ifrån en separat tabell, slagit ihop dessa för att slippa göra dubbla subquerys till en SQL-sats. SELECT *, (SELECT id+'|'+headline FROM news WHERE newsID = id) as fldNews FROM info och i min kod så har jag splittat "fldNews" på | och fått ut id och rubrik... men då har jag haft två separata fält som jag slagit ihop...
Eftersom jag har enbart phpmyadmin så har jag inte hittat något sätt som jag kan leka med SP... Sv: "Udda" SQL-fråga för SUBquery....
Detta är kanske inte helt rätt tabell-struktur, men nått åt detta hållet:
SELECT blogg.id, rubrik, text, skribent, datum, GROUP_CONCAT(tag) as tags FROM blogg LEFT JOIN taggar ON blogg.id = taggar.blogg_id GROUP BY blogg.id, rubrik, text, skribent, datum
/Johan