İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

LEFT JOIN de problem yaşıyorum

hakanizm

0
İyinet Üyesi
Katılım
11 Mayıs 2006
Mesajlar
1,952
Reaction score
1
Konum
Nereye
2 tane tablom var.

1. Tablo Adı : Emlak

2. Tablo Adı : Resim

SELECT E.EId, E.EKod, E.ETurId, E.EFiyat, E.EKod, E.EFotoVarMi, R.REKod, R.ResimId, R.ResimKAd FROM Emlak E LEFT JOIN Resim R ON R.ResimId = (SELECT TOP 1 ResimId FROM Resim WHERE REKod = E.EKod)

LEFT Kullandığım için soldaki tablodaki yani emlak tablosundaki bütün bilgiler geliyor.. Ama bu bilgilerin gelirken şu kritere göre gelmesini istiyorum :

E.ETurId = "& GelenTurId &"

bunu birçok farklı şekilde ekledim ama beceremedim...

Yardımcı olursanız sevinirim.
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
SELECT E.EId, E.EKod, E.ETurId, E.EFiyat, E.EFotoVarMi, R.REKod, R.ResimId, R.ResimKAd
FROM Emlak E
LEFT JOIN Resim R
ON R.ResimId = (SELECT TOP 1 ResimId FROM Resim WHERE REKod = E.EKod)
WHERE E.ETurId = "& GelenTurId &"
 

hakanizm

0
İyinet Üyesi
Katılım
11 Mayıs 2006
Mesajlar
1,952
Reaction score
1
Konum
Nereye
iyinet malesef verdiğin sorguyu ben de denemiştim. Ama yemedi. İstediğim sonucu vermemişti.. Başka bir arkadaş şöyle bir cevap yazdı ve sorgu çalıştı işimi gördü.. Çalışsa bile mantığı pek anlamadım. Çünkü onun oluştur dediği E.RMainID nin default değerini 1 yaptım ve hep 1 kalacak... Ona hiç dokunmadığım halde sorgu iş görüyor.. Garip tarafı bu.. Ama çalıştığı için ben de fazla kurcalamadım..


-------------------------------------------------------------


Bu kadar kastırma
Emlak tablosuna bir field daha ekle "RMainID int DEFAULT 0"

SELECT E.EId, E.EKod, E.ETurId, E.EFiyat, E.EKod,
E.EFotoVarMi, R.REKod, R.ResimId, R.ResimKAd
FROM Emlak E
LEFT JOIN Resim R
ON E.RMainID=R.ResimId
where E.ETurId = 5

İki tablo arasındaki bağlantıyı EKod dan değil ID lerden bağla
 

Caesar

0
İyinet Üyesi
Katılım
5 Haziran 2006
Mesajlar
1,894
Reaction score
7
PHP:
$sorgu = "
   SELECT
      *
      (
         SELECT ResimId
         FROM resimler
         WHERE ResimId = Emlak.Mainid 
      ) 
   FROM Emlak
   Where ETurID = '5'
";
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
iyinet malesef verdiğin sorguyu ben de denemiştim. Ama yemedi. İstediğim sonucu vermemişti.. Başka bir arkadaş şöyle bir cevap yazdı ve sorgu çalıştı işimi gördü.. Çalışsa bile mantığı pek anlamadım. Çünkü onun oluştur dediği E.RMainID nin default değerini 1 yaptım ve hep 1 kalacak... Ona hiç dokunmadığım halde sorgu iş görüyor.. Garip tarafı bu.. Ama çalıştığı için ben de fazla kurcalamadım..


-------------------------------------------------------------


Bu kadar kastırma
Emlak tablosuna bir field daha ekle "RMainID int DEFAULT 0"

SELECT E.EId, E.EKod, E.ETurId, E.EFiyat, E.EKod,
E.EFotoVarMi, R.REKod, R.ResimId, R.ResimKAd
FROM Emlak E
LEFT JOIN Resim R
ON E.RMainID=R.ResimId
where E.ETurId = 5

İki tablo arasındaki bağlantıyı EKod dan değil ID lerden bağla

"& GelenTurId &" kismini, 5 olarak degistirirsen calisacagini saniyorum, cunku yazmadan once MSSQL database de tablolari yaratip denemistim ve calismisti.

SELECT E.EId, E.EKod, E.ETurId, E.EFiyat, E.EFotoVarMi, R.REKod, R.ResimId, R.ResimKAd
FROM Emlak E
LEFT JOIN Resim R
ON R.ResimId = (SELECT TOP 1 ResimId FROM Resim WHERE REKod = E.EKod)
WHERE E.ETurId = 5
 

hakanizm

0
İyinet Üyesi
Katılım
11 Mayıs 2006
Mesajlar
1,952
Reaction score
1
Konum
Nereye
Caesar verdiğin sorguyu aynen Query Analyzerde denedim. Hata verdi. Tek satır haline getirdim, 5 rakamının yanındaki tırnakları kaldırdım yine hata verdi. Baştaki $sorgu = " ve sondaki "; işaretini de sildim tabi.
---
Incorrect syntax near the keyword 'FROM'.
---

iyinet.. Verdiğin cevap doğruymuş.
Ben senin verdiğin sorgunun aynısını denedim zannediyordum.. Ama sabaha karşı denemeler yaptığım için sanırım ufak bazı yerlerde hata yapmış olabilirim.

Çok Teşekkürler.
Bu sorguyu gerekli olabilir diye bir yere kaydettim. Benim ilk mesajımda bir arkadaşın verdiği sorguyu kullanıyorum şuanda.


EDİT :

iyinet peki bu sorguya Count u nasıl ekleyebilirim ? Yani bu sorgunun sonucu itibari ile kaç adet veri elde ettiğimi de sayfaya yazdırmak istiyorum.

Sorgunun başına Count(*) ekleyerek mi ? Yanına virgül falan koymak gerekiyor mu?

SELECT Count(*) E.EId, E.EKod, E.ETurId, E.EFiyat, E.EFotoVarMi, R.REKod, R.ResimId, R.ResimKAd
FROM Emlak E
LEFT JOIN Resim R
ON R.ResimId = (SELECT TOP 1 ResimId FROM Resim WHERE REKod = E.EKod)
WHERE E.ETurId = 5


Sorguya Count u doğru şekilde ekledikten sonra sayfaya yazdırırken nasıl yazdırabilirim acaba ? <%=Count(*)%> şeklinde falan mı?

Count u hiç kullanma gereği duymamıştım da pek bilgim yok dün bi denedim hata verdi.
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
Count(*) i bu sekilde her satirda almak mantikli degil, group by olsaydi olurdu.

ASP bilgim pek yok, ASP ciler bu konuda sana yardimci olurlar.
Sonuc itibari ile tum bilgileri cekiyorsun, kac satir cektigini asp de veren bir komut vardir.

ille de SQL ile bu isi yapacagim diyorsan:

select count(*) from (
SELECT Count(*) E.EId, E.EKod, E.ETurId, E.EFiyat, E.EFotoVarMi, R.REKod, R.ResimId, R.ResimKAd
FROM Emlak E
LEFT JOIN Resim R
ON R.ResimId = (SELECT TOP 1 ResimId FROM Resim WHERE REKod = E.EKod)
WHERE E.ETurId = 5
) tablo

! en sondaki "tablo" kelimesi sorguya dahildir
 

Caesar

0
İyinet Üyesi
Katılım
5 Haziran 2006
Mesajlar
1,894
Reaction score
7
PHP:
$sorgu = "
   SELECT
      *
      (
         SELECT ResimId
         FROM resimler
         WHERE ResimId = Emlak.Mainid 
      ) 
   FROM Emlak
   Where ETurID = '5'
";
PHP:
$sorgu = "
   SELECT
      *
      (
         SELECT count(ResimId)
         FROM resimler
         WHERE ResimId = Emlak.Mainid 
      ) as toplam 
   FROM Emlak
   Where ETurID = '5'
";
as değer vermediğimiz için hata vermiş.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst