Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Datasnap defalarca veri çekme sorunu
#1
Merhaba,

şimdi datasnap ile mysql'den veri çekip client'teki listbox'a bu verileri ekliyorum.
1) server kısmında query'e   "select * from admin" sorgusuyla verileri çektiğimde hiçbir sorun yok
ZXMzJV.jpg

Fakat "select * from admin,uye" diye sorgulattığımda defalarca aynı şeyleri ekliyor. 

lq3N9r.jpg

Bavb4M.jpg


Buradaki amacım hem admin hem uye tablolarındaki kolonları fields'a ekletip client kısmında Bindsource ile listbox'ta eşleştirmek
Nasıl yapabilirm şimdiden çok teşekkürler Sad
v6XNbm.jpg
Cevapla
#2
Hocam oyle bi select kullanımini ilk defa görüyorum..

Datasnapda hata oldugunu sanmiyoeum.. sql manager programinda boyle selecti yazinca iatediginiz dataui alabiliyormusunuz?
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#3
merhaba
select * from admin,uye
kartezyen listesi yapar,
diyelim admin'de 4 kayıt, uye'de 12 kayıt var
yukardaki select 4*12=48 satır getirir.
senin yapman gereken her iki tablo arasında join kullanman
Cevapla
#4
Merhaba,
@meko bey'in de belirttiği gibi join kullanmadan from ibaresinden sonra yazılan her tablonun her bir kaydı için diğer tablo/tabloların tüm kayıtları alınır ve bu işlen tablo sonuna kadar devam eder. İhtiyaç olmayan bir kayıt kümesi döner. İşlem oldukça zaman alır. 
Her iki tablonuzun tüm alanları aynı ise veya ortak alanlardan oluşan bir kayıt kümesi almak istiyorsanız, UNION/UNION ALL ile tablolarınızı birleştirebilirsiniz. 
Bu ifade her iki tablodaki kayıtları kayıt sayısınca alacak, birleştirecek ve her iki tablonun kayıt sayısı toplamı kadar (benzer kayıtlar hariç) bir kayıt kümesi geri döndürecektir.
Cevapla
#5
(15-01-2019, Saat: 21:56)hakanharbeli Adlı Kullanıcıdan Alıntı: Merhaba,

Fakat "select * from admin, uye" diye sorgulattığımda defalarca aynı şeyleri ekliyor. 

Burada admin tablosnunun kayıtlarını mı yoksa uye tablosunun kayıtlarını mı çekmek istiyorsunuz? Yoksa admin ve uye arasında bir ilişiki (bağlantı) mi var? Bu tür sorgularda böyle bir yazım yerine ANSI uyumlu JOIN veya almak istediğiniz sonuca bağlı olarak UNION deyimini kullanın. Yazdığınız sorguda admin tablosunda 10 kayıt ve uye tablosunda 15 kayıt varsa sorgu 150 kayıt donderecektir.
WWW
Cevapla
#6
cevaplarınız için çok teşekkür ederim sorgudaki mantıksızlığı anladım farklı bir sorgu yöntemiyle işlem gerçekleştirmem gerektiğini anladım. Yani amacım şu tek bir sorgu ile admin ve uye tablolarındaki verileri edit1 edit2 listbox gibi bileşenlerle bağlantılarını oluşturmak. admin ve uye tabloları arasında hiçbir bağlantı yok sadece fields kısmında bu tablolardaki bütün column nameler görünmeli zaten en alttaki resimde bu çabam görünmüş add soyadd uye ad soyaduye gibi column nameler hep farklı tablolardan ve bağlantıları yok fakat listbox'ta bu durumda defalarca kayıt çekilmiş oluyor. bunu aşmaya çalışıyorum join ve union all sorgularını deneyeceğim teşekkür ederim herkese
Cevapla
#7
merhaba,
admin ve uye tablolarının yapısını paylaşman mümkün mü?
Cevapla
#8
(17-01-2019, Saat: 00:23)hakanharbeli Adlı Kullanıcıdan Alıntı: cevaplarınız için çok teşekkür ederim sorgudaki mantıksızlığı anladım farklı bir sorgu yöntemiyle işlem gerçekleştirmem gerektiğini anladım. Yani amacım şu tek bir sorgu ile admin ve uye tablolarındaki verileri edit1 edit2 listbox gibi bileşenlerle bağlantılarını oluşturmak. admin ve uye tabloları arasında hiçbir bağlantı yok sadece fields kısmında bu tablolardaki bütün column nameler görünmeli  zaten en alttaki resimde bu çabam görünmüş add soyadd uye ad soyaduye gibi column nameler hep farklı tablolardan ve bağlantıları yok fakat listbox'ta bu durumda defalarca kayıt çekilmiş oluyor. bunu aşmaya çalışıyorum join ve union all sorgularını deneyeceğim teşekkür ederim herkese

Aralarında bağlı yoksa tablo tasarımınızı gözden geçirmeniz lazım. Bu sorunun datasnapile ya da Delphi tarafındaki hiç bir şeyle alakası yok. Öncelike tablo tasarımınızı ve sorgunuzu düzeltin, almaya çalıştığınız veri setini üreten sorguyu yazıp kullandığınız veri tabanına ait Query Editor'de istediğiniz sonucun geldiğinden emin olun, sonrasında diğer kısımlara devam edersiniz.
Cevapla
#9
select * from admin, uye
bu sql cümlesinin devamında
şöyle bir şey olması lazım yoksa bu zaten normal olarak dönmez
yani normal olarak dönmezden kastım her iki tabloyuda cros outher join yapmış olur.

Örnek
select * from admin, uye
where uye.id = admin.id diyerek her iki tablodaki aynı alanları eşitlemen lazım
buradaki id örnek olarak veriyorum orada sizin tablonuzda kod vardır vs aynı olan yerleri eşitlemezseniz eğer
sorgunun öyle dönmesi normal
Cevapla
#10
Merhaba,
Admin ve Uye bir kişidir. Her iki tipin özellikleri de muhtemelen aynıdır. Bu nedenle tek tabloda olması ve her iki tipe ait ayırt edici özelliklerin alanlarla veya detay tablolarla ayrıştırılması gerekir.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  CSV'ye veri aktarma Altıner 5 102 4 dakika önce
Son Yorum: Mr.X
  Web ipnut alanına veri girme Altıner 4 325 12-03-2024, Saat: 21:26
Son Yorum: Altıner
  Mapview üzerinde splash ekran logo sorunu arsl01 4 881 05-12-2023, Saat: 23:00
Son Yorum: arsl01
  IOS SDK Ekleme Esnasında Yavaş Aktarım Sorunu Çözümü Mr.X 0 246 23-11-2023, Saat: 21:18
Son Yorum: Mr.X
  Android Fmx uzak veri tabanından veri çekmek erkutolga 12 1.505 22-11-2023, Saat: 10:27
Son Yorum: Mesut



Konuyu Okuyanlar: 1 Ziyaretçi