[]

MYSQL Sorusu (gruplama ile ilgili)

umarım doğru anlatabilirim;

select * from (select * from tasarim) as tsr
INNER JOIN tasarim_comment as ts ON ts.tasarimId = tsr.tasarimId
group by tsr.tasarimId

diye bir yapı var diyelim.

ben bunu böyle yaptığımda ne olacak?
bu query yi tasarımId ye göre gruplayacak. haliyle bana tasarıma ait commentlerden sadece 1er tanesi gelecek. halbuki ben istiyorum ki, bir parametre altında da şu gelsin:

tasarim_comments parametresi altında; (json ile örnekleyeceğim)


[
{
tasarim_commentId: 1,
comment: 'güzel},
{tasarim_commentId: 2,
comment: 'çirkin'
}
]

blabla bla.

bunu nasıl sağlyabilirim tek queryde?
group_concat içine concat vs. koyarak bir şeyler yapılıyor. ancak o sadece tek column için çalışıyor. bana sadece comment değil, commente ait id de lazım.

nasıl yapabilirim?

 
yapmaya çalıştığın şeyi json ile örneklediğin için mümkün geliyor olabilir sana ama bu sql tarafında mümkün değil.

çünkü sen dallanmış bir yapı istiyorsun, sql'de elde edebileceğin sonuç yatay.

tasarım-1
-----tasarım-1'e ait commentler
tasarım-2
-----tasarım-2'e ait commentler

gibi bir şey istiyorsun. ya da güncelden örnek vermek gerekirse instagram'da timeline'daki tüm paylaşımları ve her bir paylaşıma ait altındaki commentleri istiyorsun.

bunu tek query'de sql ile yapamazsın. araya bir dil daha sokman lazım, mesela c#'ta linq to sql ile istediğin şeyi elde edebilirsin. ama aslında arkada bir değil her bir tasarım için query çalışacaktır.

var query =
from tsr in db.tasarim
join ts in tasarim_comment on ts.tasarimId equals tsr.tasarimId
select new { tsr.name, tum_commentler = ts}

edit:

bir diğer yöntem de, tüm commentleri çekip(grupid'ye göre gruplamadan) yine ara dilde (php, c# ne ise) o liste üzerinden filtreleyerek json'daki istediğin yapıyı oluşturmak.
  • aziz dostum jack  (10.09.19 12:53:26 ~ 13:21:29) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.