Mysql Veri Çekme Sorunu
-
gencbeyin bunu yazdı:
-----------------------------left join, inner join kullanmalısın.
http://www.bidb.itu.edu.tr/?d=228
-----------------------------
Hocam iki farklı tabloda bir veriyi referans alıp (örneğin id) birleştirerek yazmak için kullanmışlar joini. Benimkiyse çok farklı. Ama istediğim şey joinle de olabilir tabi tam anlamadım join i. -
iki tablonun birbirine bağlanması için ya mantıksal ya foreign key gibi yazılımsal bir bağlarının olması gerek
yani uyeler tablosundaki sehir_id int değeri , sehirler tablosunun id değeri ile eşleşiyor ise
SELECT A.*,B.baslik AS sehir_ismi FROM uyeler AS A LEFT JOIN sehirler AS B ON A.sehir_id=B.id WHERE bla bla ORDER BY A.bla bla
gibi birşey yazabilirsin , iki tabloyu birleştirmek için hangi join komutunu kullanırsan kullan , iki tablonun ilişkisini ifade edeceğin yer ON kısmıdır
bu şekilde N tane tablo birbirine bağlanılabilir , dikkat edilecek husus , birden fazla tablodaki alan adlarının aynı olabilmesidir örneğin iki tabloda da başlık varsa
başlıklardan birine alias takmalısın bunu da AS ile yapabilirsin , order by id dersen de olmaz , id de hangi id , A.id ya da B.id demen gerekir
-
anladığım kadarıyla bu şekilde çalışması lazım
select distinct a.baslik, b.baslik from haberler as a, moduller as b order by b.tarih, a.tarih
edit: distinct i koyarsak her bir değerden bir kere gelmesi gerek
-
xzxz bunu yazdı:
-----------------------------iki tablonun birbirine bağlanması için ya mantıksal ya foreign key gibi yazılımsal bir bağlarının olması gerek
yani uyeler tablosundaki sehir_id int değeri , sehirler tablosunun id değeri ile eşleşiyor ise
SELECT A.*,B.baslik AS sehir_ismi FROM uyeler AS A LEFT JOIN sehirler AS B ON A.sehir_id=B.id WHERE bla bla ORDER BY A.bla bla
gibi birşey yazabilirsin , iki tabloyu birleştirmek için hangi join komutunu kullanırsan kullan , iki tablonun ilişkisini ifade edeceğin yer ON kısmıdır
bu şekilde N tane tablo birbirine bağlanılabilir , dikkat edilecek husus , birden fazla tablodaki alan adlarının aynı olabilmesidir örneğin iki tabloda da başlık varsa
başlıklardan birine alias takmalısın bunu da AS ile yapabilirsin , order by id dersen de olmaz , id de hangi id , A.id ya da B.id demen gerekir
-----------------------------
Hocam ellerine sağlık çok güzel yazmışsın sağolasın. Fakat benim tablolarımda hiçbirşekildekilde eşitleyebileceğim bir değer yok. Yani birbirine eşitleme yok. İki adet farklı bambaşka veri çektiğini düşün ikisi de tarihe göre sıralı. Bu iki veriyi harmanlamam gerekiyor. -
unbalanced bunu yazdı:
-----------------------------anladığım kadarıyla bu şekilde çalışması lazım
select a.baslik, b.baslik from haberler as a, moduller as b order by b.tarih, a.tarih
-----------------------------
Hocam ben de mantıken böyle düşündüm şuan önümde duran kodlar aynen böyle. Ama sıralamada sorun çıkıyor.
Mesela haber-1,haber-3,haber-2,haber-1,haber-3,haber-2,haber-1,haber-3,haber-2,
Bu şekilde oluyor -
eğer sadece iş veritabanında değilse bu kadar uğraşmaya gerek yok bence..
iki tane sorgu yaz iki tane tablon olsun, sonra programlama ile bunları birleştirip gridde göster..
-
by_Tet bunu yazdı:
-----------------------------Hocam ellerine sağlık çok güzel yazmışsın sağolasın. Fakat benim tablolarımda hiçbirşekildekilde eşitleyebileceğim bir değer yok. Yani birbirine eşitleme yok. İki adet farklı bambaşka veri çektiğini düşün ikisi de tarihe göre sıralı. Bu iki veriyi harmanlamam gerekiyor.
-----------------------------ozaman bi şekilde bir ilişki kurman gerek ki yaptığının bir anlamı olsun
SELECT A . * , B. * FROM `semt` AS A INNER JOIN adminler AS B ORDER BY A.SEMT_IDgibi birşey çalıştırdım da , ne manası var bunun ?
-
unbalanced bunu yazdı:
-----------------------------eğer sadece iş veritabanında değilse bu kadar uğraşmaya gerek yok bence..
iki tane sorgu yaz iki tane tablon olsun, sonra programlama ile bunları birleştirip gridde göster..
-----------------------------
Mesela hocam siteye en son eklenenler tablosu ekleyeceğim bana tek lazım olan baslik ve tarih ancak farklı tablolar. Şimdi sorgulama yaptım eyvallah. Birincisi haber-1 haber-2 haber-3 ikincisi de modul-1 modul-2 modul-3 bunları nasıl harmanlayabilirim ki? Web yazılım diliyle. Php asp.net asp farketmez bir örnek bulunsun ben aspye çeviririm. Jquery ile de yapılabilir kanımca ama hiçbir fikrim yok.
Buarada ilgin için tekrar teşekkürler. -
CROSS JOIN ile ilişkisiz bağlanabilir diyor.
SELECT * FROM tablo1 CROSS JOIN tablo2 ORDER BY tablo1.tarih, tablo2.tarih
gibi bir dene?
-
xzxz bunu yazdı:
-----------------------------by_Tet bunu yazdı:
-----------------------------Hocam ellerine sağlık çok güzel yazmışsın sağolasın. Fakat benim tablolarımda hiçbirşekildekilde eşitleyebileceğim bir değer yok. Yani birbirine eşitleme yok. İki adet farklı bambaşka veri çektiğini düşün ikisi de tarihe göre sıralı. Bu iki veriyi harmanlamam gerekiyor.
-----------------------------ozaman bi şekilde bir ilişki kurman gerek ki yaptığının bir anlamı olsun
SELECT A . * , B. * FROM `semt` AS A INNER JOIN adminler AS B ORDER BY A.SEMT_IDgibi birşey çalıştırdım da , ne manası var bunun ?
-----------------------------
Hocam ne manası var diyerek de anlamı olsun diyerek de ne dediğini anlamadım kusura bakma :) Ben diyorum ki hiçbir şekilde bağlantısı yok bu bir yani where a.id = b.id olayı yok. 2.si tabloları birleştirmek gibi bir olay da yok. Birinci sıralama haber 1 haber 3 haber 2 . İkinci sıralama modul 2 modul 3 modul 1 modul 4 ikisini harmanlayınca misalen haber 1 modul 2 modul 3 haber 3 modul 4 haber 2 gibi bir sıra çıkmalı.
