SQL Yardım

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Şimdi arkadaşlar bir etiket, seo vs.. gibi bir şey yapmaya çalışıyorum. Bir yerde takıldım.

    Tablomda etiketler (nvarchar 255), etiketler_seo (nvarchar 255) tipinde alanlarım mevcut.

    İçerisindeki veriler karşılıklı sıralı olarak şu şekilde

    etiketler         : Doğalgaz, Rusya, Şimdi, Büyükşehir, Keçiören

    etiketler_seo : dogalgaz,  rusya,  simdi, buyuksehir, kecioren

     

    Yapmak istediğim şu, etiket ile gelen değer kecioren diyelim. Bunun gerçek karşılığı olan Keçiören değerini veren bir sql sorgusu için yardımlarınızı bekliyorum.

    Şimdiden teşekkürler.


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    CEO
    CEO's avatar
    Kayıt Tarihi: 28/Şubat/2009
    Erkek

    Öyle iki ayrı tabloda yapana kadar bir tabloda etiketId, etiketAdi, etiketUrl olarak 3 sütun yaparsın.

    Etiket adını istediğin şeyi yazarsın, sorgu olarakta select Etiketler.etiketAdi from tabloAdı as Etiketler where Etiketler.etiketUrl = 'etiketurlsi' şeklinde sorgu yaptığında, sana etiket url'si verdiğinde etiket adını geri dönderir.

    Soruyu yanlış anlamışsam kusura bakma :)

    Örnek vereyim,

    EtiketAdi : Ahmet, EtiketUrl ahmet olarak kayıtta tuttuğun veriyi sql olarak select E.EtiketAdi from Etiketler as E where E.EtiketUrl = 'ahmet' dediğinde sana, url'si ahmet olan etiket adlarını getirir.

    CEO tarafından 19/Haz/15 14:25 tarihinde düzenlenmiştir
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Hocam ayrı tabloda değil, şöyle söyleyeyim

    CREATE TABLE [Haberler] (
    [ID] INT PRIMARY KEY NOT NULL IDENTITY(1,1),
    [baslik] NVARCHAR(255),
    [baslik_seo] NVARCHAR(255),
    [etiketler] NVARCHAR(255),
    [etiketler_seo] NVARCHAR(255),
    [ozet] NVARCHAR(300),
    [icerik] NVARCHAR(max),
    [eklenme_tarihi] DATETIME NULL DEFAULT (getdate()),
    [okunma_sayisi] INT DEFAULT 0,
    [oy_sayisi] INT DEFAULT 1,
    [toplam_puan] INT DEFAULT 17,
    [sira] INT DEFAULT 0,
    [yayin_durumu] TINYINT DEFAULT ((0))
    )

    Etiketlere göre dizin oluşturuyorum ve etiketler birbirinden "," ile ayrılmış durumdadır.


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    baslik_seo like  '%kecioren%'

    baslik like  '%Keçiören%'

     

    davul bile dengi dengine :)

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    CEO
    CEO's avatar
    Kayıt Tarihi: 28/Şubat/2009
    Erkek

    Müridim sen tablo yapısını baştan yanlış yapmışsın o zaman.

    Etiket adında bir tablo oluşturup, konular tablosu ile ilişkilendirip join ile çağırman lazımdı etiketleri.

    Öteki türlü etiketleri asp.net'te split ile bölüp, sql'de like ile çağırman lazım.

    Onu da şu şekilde yapman lazım, etiketleri çağırdığın string'i programda string[] Etiketler = sqlDataReaderKolonu[0].split(','); bu şekilde yaptığında gelen sql sonucundaki virgülle ayıracak bütün dosyaları. 

    Programda foreach ile dönüp, örneğin lblEtiketler.text += ..... şeklinde yapman lazım.

    Daha sonra adam o linke tıkladığında query strin ile, yada routedata ile gelen veriyi etiket sayfasında select * from Konular as K where etiketler_seo like '%etiketUrl%' şeklinde çağırırsan hangi konuda sorguya uygun etiket varsa gelecektir.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    Ben mi anlamadım bilmiyorum ama  istediğin şey bu mu 

     

    select etiketler from haberler where etiket_seo="kecioren"

    Teldeyim pek Kodlarını göremedim 

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek

    2 ayrı tablo yapıp, sorguyla boşuna sistemini yorma.

    Bir tane çift taraflı convertor fonksiyon yaz, bak örnek var mesela şu linkteki gibi;

    http://www.erbilen.net/343-php-sef-link-fonksiyonu.html

     

     


    Hello, i am nothing. I come from Neverland.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Arkadaşlar ben anlatamadım herhalde :)

    Bir nevi sözlük gibi düşünün.

    etiketler:        Şakir, Hacı Ahmet, Süleyman, Tahribat         şeklinde olsun

    etiketler_seo: sakir, haci-ahmet, suleyman, tahribat           şeklinde olsun

     

    QueryString değerimiz suleyman  olarak geldi diyelim, bu gelen değerin Süleyman olduğunu söyleyebilecek sorgu yazabilir miyiz?


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek
    select etiketler from haberler where Id=(select Id from haberler where etiketler_seo like '%sakir%')

     

     

    bu şekilde sonuç geliyor.. şimdi sen buradan şakir i nasıl çekeceksin hocam :) yani aralarında herhangi bir bağ yok ki. türkçe karakterleri de kafana göre çeviremezsin. yani s yi hep ş yap diyemezsin...

    baya uykusuzum 1.5 saat yattım o yüzden aklıma bir şey gelmedi.. buradan devam etmeye çalış, şuan elinde o satır var, bu satırdan sakir ve Şakir arasında bağ kurman gerekiyor.. 

     

    replacement ile karakter değşimi yapabilirsin replace(etiketler, 'Ş','S') gibi bu da ş yi s yapıyor.. buradan yola çıkarak da bir şeyler yapabilirsin.. ayrıca split fonksiyonunu kullanıp virgüle göre böldür ve sonra karşılaştır (türkçe karakterleri replace ile değiştirdikten sonra) eğer eşitlerse (upper yap hepsini) o zaman o değeri alırsn.. ancak bu geldi aklıma

    unbalanced tarafından 19/Haz/15 15:28 tarihinde düzenlenmiştir

    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Galiba böyle bir şey şimdilik bir şey sözkonusu değil, aynı şekilde uykusuzluk nedeniyle ne anlattığımı bile bazen ben anlamıyorum

    Şimdilik şöyle çözdüm

    CREATE TABLE [Etiketler] (
    [ID] INT PRIMARY KEY NOT NULL IDENTITY(1,1),
    [etiket] NVARCHAR(255),
    [etiket_seo] NVARCHAR(255),
    )

     

    Sorguyu da şu şekilde yazarım

    Select etiket FROM Etiketler WHERE etiket_seo = 'gelendeğer'

     

    İlginiz için teşekkürler.


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    zaten normal olan da tabloları ayırmandı hocam :) sen tek bir tabloya etiketleri yazdırıyorsun ve işin kötüsü bir sürü etiketi tek bir field e yazdırıyorsun... Bu şekilde iş yürümez zaten. Her zaman ayırmak gerek.

    kolay gelsin


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
Toplam Hit: 1569 Toplam Mesaj: 12
sql sql eşleşme etiket etiket_seo nvarchar