Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

PHP/SQL sorusu


Sypro

Öne çıkan mesajlar

komik gelecek muhtemelen de bi türlü kafayı toplayıp yazamadım şunu. diyelim ki elimde şöyle 3 tane tablo var:



Objects
-------
ID
Parent
...

Languages
---------
ID
Name
Code
...

Names
--------
ObjID
LangID
Text
...



içlerinde de diyelim ki:



objects:
1, 0, ...

languages:
1, 'Türkçe', 'TR', ...
2, 'English', 'EN', ...

names:
1, 1, 'Türkçe isim', ...
1, 2, 'İngilizce isim', ...



gibi şeyler var. ulaşmaya çalıştığım nokta ise:



[
{
ID: 1,
Parent: 1,
Names: {
TR: "Türkçe isim",
EN: İngilizce isim,
..
}
},
...
]



böyle bir json üretmek. kafamın durduğu nokta bunu recursive bir sorgu halinde mi yazmak daha mantıklı olur yoksa iki parçaya ayırıp php tarafında mı birleştirmek daha mantıklı olur kısmı.

saygılar, sevgiler.
Link to comment
Sosyal ağlarda paylaş

Adım adım nasıl yaptığımı (sorguları) yazdım.
En sondaki istediğini veriyor.

Önemli olan, DB'den alabildiğini tek seferde almak; defalarca query gönderirsen yavaş olur.

Birkaç subselect'i kaldırmak mümkün olabilir, oturup incelemedim ama nasıl yapıldığını görebilmen için olabildiğince açık yazdım.

SELECT o.id
, o.parent
, l.name
, l.code
FROM names n
left join Objects o
on n.objid = o.id
left join languages l
on n.langid = l.id
;


SELECT o.id
, o.parent
, group_concat(concat(l.code,': ',n.text))
FROM names n
left join Objects o
on n.objid = o.id
left join languages l
on n.langid = l.id
group by o.id, o.parent
;


select concat('{'
, 'ID: ', id, ','
, 'Parent: ', parent, ','
, 'Names: {', names, '}'
, '}')
from (
SELECT o.id
, o.parent
, group_concat(concat(l.code,': ',n.text)) names
FROM names n
left join Objects o
on n.objid = o.id
left join languages l
on n.langid = l.id
group by o.id, o.parent
) t2
;


select concat(
'['
, group_concat(
rec
)
,']') json
from (
select concat('{'
, 'ID: ', id, ','
, 'Parent: ', parent, ','
, 'Names: {', names, '}'
, '}') rec
from (
SELECT o.id
, o.parent
, group_concat(concat(l.code,': ','"',n.text,'"')) names
FROM names n
left join Objects o
on n.objid = o.id
left join languages l
on n.langid = l.id
group by o.id, o.parent
) t2
) t3
;
Link to comment
Sosyal ağlarda paylaş

  • 2 hafta sonra ...
  • 4 hafta sonra ...
üzerinden çokça vakit geçmiş olmasına rağmen gerçekten çok teşekkür ediyorum. biraz değiştirip, biraz düzenleyip güzel bir şekle soktum ve tam olarak istediğim şeyi yaptı.
aylardır çok vakit ayıramıyorum sosyal ortamlara, o yüzden geç kalmış da olsa umarım kabul görür bu teşekkür.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...