En iyi yanıtlayıcılar
sql manuel verdigimiz kolon adini cagirma

Soru
-
select Distinct(CONVERT(varchar(50), Enbas) + ',' + Convert(varchar(50) ,Enson)) as [Kolon],OID,Price,ModelID from mtepe_SizePrice WHERE Kolon between 15 and 30 ModelID=55
Merhaba arkdaslar yukarıda yazmıs oldugum sorgumda KOLON isimli tanımlamış oldugum kolon adinin içinde between ile arama yapıp aralıgıdaki degerleri getirmem gerekiyor nasıl yapa bilirim ?
Yanıtlar
-
Yardımlarınızdan dolayı Mehmet ve Ahmet cok teskur ederim. Sorunu helletim sayenizde :)
- Yanıt Olarak İşaretleyen Ferhat YURDAKON 7 Ağustos 2011 Pazar 12:55
Tüm Yanıtlar
-
SELECT DISTINCT (Convert(VARCHAR(50), Enbas) + ',' + Convert(VARCHAR(50) ,Enson)) as [Kolon], OID, Price, ModelID FROM mtepe_SizePrice WHERE Distinct(CONVERT(varchar(50), Enbas) + ',' + Convert(varchar(50) ,Enson)) BETWEEN 15 AND 30 AND ModelID=55
http://www.mehmetx.com -
SELECT DISTINCT (Convert(VARCHAR(50), Enbas) + ',' + Convert(VARCHAR(50) ,Enson)) as [Kolon], OID, Price, ModelID FROM mtepe_SizePrice WHERE Distinct(CONVERT(varchar(50), Enbas) + ',' + Convert(varchar(50) ,Enson)) BETWEEN 15 AND 30 AND ModelID=55
http://www.mehmetx.com
bu sekilde denedigimde . 90 - 99 un fiyatini ben 1500 Tl olarak geliyor
Kullanıcı 91 ,92 93 94 95 96 97 98 99 gibi uzunluk olcusu sectiginde de bana 90-99 ID sinden dönen fiyatın gele bilmemsi için nasıl bir yöntem izlemeliyim.
-
-
CREATE TABLE [dbo].[mtepe_SizePrice]( [OID] [int] IDENTITY(1,1) NOT NULL, [Heigth] [tinyint] NULL, [Sol] [tinyint] NULL, [Enbas] [tinyint] NULL, [Enson] [tinyint] NULL, [Price] [decimal](18, 0) NULL, [ModelID] [int] NULL ) Tablo yapıp bu sekilde
Admin tarafindaki kullanıcı Urun eklerken bir ölcü araligi belirmek zorunda100 cm ila 110 cm arasindaki fiyat araligi 1500 TL
Olarak kaydediyoruz.
-------------------------------------------------
Son Kullanıcı Arayuzmuzde ise
Son Kullanıcı sadece Ya 100 yada 110 a kadar ola bilen ardaşık sayılardan herhangi birini seçtiginde. Son Kullanıcı 101 ölcü degerini seçmiş ise fiyat yine 1500 Tl olarak gelmesi gerekiyor
Fiyatı aynı getire bilmem icin ne yapmalıyım
-
DECLARE @secilenDeger TINYINT SET @secilenDeger = 101 SELECT DISTINCT (Convert(VARCHAR(50), Enbas) + ',' + Convert(VARCHAR(50) ,Enson)) as [Kolon], OID, Price, ModelID FROM mtepe_SizePrice WHERE Enbas >= @secilenDeger AND Enson <= @secilenDeger AND ModelID=55
dener misiniz?
http://www.mehmetx.com -
DECLARE @secilenDeger TINYINT SET @secilenDeger = 101 SELECT DISTINCT (Convert(VARCHAR(50), Enbas) + ',' + Convert(VARCHAR(50) ,Enson)) as [Kolon], OID, Price, ModelID FROM mtepe_SizePrice WHERE Enbas >= @secilenDeger AND Enson <= @secilenDeger AND ModelID=55
dener misiniz?
http://www.mehmetx.com -
sonuç gelen ve gelmeyen değerleri yazar mısınız?
http://www.mehmetx.com -
sonuç gelen ve gelmeyen değerleri yazar mısınız?
http://www.mehmetx.com
SET @secilenDeger = 13ModelID163 oldugunda gelmıyor
SET @secilenDeger = 232 oldugunda gelıyor
-
Enbas ve Enson değerleri 13' ü kapsamıyorsa gelmeyecektir. ya da o modelID için uymuyordur, yani where koşulundaki ifadeye uyan satır olmadığı için gelmiyordur.
http://www.mehmetx.com -
-
WHERE Enbas >= @secilenDeger AND Enson <= @secilenDeger AND ModelID=55
dener misiniz?
http://www.mehmetx.com
işaretler ters oldu sanırım, işaretleri aşağıdaki gibi değiştirip dener misiniz?
WHERE Enbas <= @secilenDeger AND Enson >= @secilenDeger
AND ModelID=55
http://www.mehmetx.com -
WHERE Enbas >= @secilenDeger AND Enson <= @secilenDeger AND ModelID=55
dener misiniz?
http://www.mehmetx.com
işaretler ters oldu sanırım, işaretleri aşağıdaki gibi değiştirip dener misiniz?
WHERE Enbas <= @secilenDeger AND Enson >= @secilenDeger
AND ModelID=55
http://www.mehmetx.com
bu durumda deger geliyor ama iki deger birden geliyorbunu nasıl onleye bilirim ? gercek degeri aldıra bilmem icin
-
-
Ferhat merhaba,
tablodaki örnek kaydı ve almak istediğin sonucu net yazarsan daha iyi yardımcı olabiliriz bence. Şu değer için bu kayıt gelmeli ama diğer gelmemeli dediğin şartları da yazabilirsen sevinirim.
Ahmet Kaymaz
http://www.ahmetkaymaz.com
C# VB.NET ASP.NET kitabı -
-
Sanırım hangi EnBas alanına yakınsa onu almak istiyorsunuz. Örneğin BETWEEN yaparsanız 1,40 ve 13,48 gelecek. Oysa 13,48'i almak istiyorsunuz Eğer böylese aşağıdaki gibi birşey yapabilirsiniz.
SELECT
TOP 1 Convert(VARCHAR(50), Enbas)+ ','+ Convert(VARCHAR(50) ,Enson) as [Kolon]
,
OID
,Price,ModelIDFROM
#t1 WHERE @secilenDeger BETWEEN Enbas AND EnSon
AND
ModelID=163 ORDER BY @secilenDeger-Enbas
Ahmet Kaymaz
http://www.ahmetkaymaz.com
C# VB.NET ASP.NET kitabı -
-
WHERE Enbas > @secilenDeger AND Enson < @secilenDeger AND ModelID=5163
=' leri kaldırıp dener misiniz?
http://www.mehmetx.com -
BETWEEN'i şu şekilde yazıyorsunuz.
WHERE
@secilenDeger BETWEEN Enbas AND EnSon
burada görüldüğü gibi değerin kendisini BETWEENden önce yazıyorsunuz. Buraya takılmayın bence. Bunu Mehmet Yıldız'ın yazdığı gibi <= ve>= ile yapabilirsiniz. Zaten Between o anlama geliyor.
Asıl sorununuzu çözen ORDER BY mantığını kurmak bence. Eğer aradığınız sonuç sizin SecilenDeger'e en yakın satır ise.
Ahmet Kaymaz
http://www.ahmetkaymaz.com
C# VB.NET ASP.NET kitabı -
Yardımlarınızdan dolayı Mehmet ve Ahmet cok teskur ederim. Sorunu helletim sayenizde :)
- Yanıt Olarak İşaretleyen Ferhat YURDAKON 7 Ağustos 2011 Pazar 12:55
-
çözümü yazabilirseniz, başkaları için de faydalı olabilir.
http://www.mehmetx.com -
çözümü yazabilirseniz, başkaları için de faydalı olabilir.
http://www.mehmetx.comDECLARE @secilenDeger TINYINT SET @secilenDeger = 101 SELECT DISTINCT (Convert(VARCHAR(50), Enbas) + ',' + Convert(VARCHAR(50) ,Enson)) as [Kolon], OID, Price, ModelID FROM mtepe_SizePrice WHERE Enbas >= @secilenDeger AND Enson <= @secilenDeger AND ModelID=55
Yukarıdaki kod ile sorunu helletim esaz sorun biraz yazilimsal durumdan kaynaklanıyormuş. projeyi yarında alınca ve cok fazla inceleme vaktimin olmadıgında sorunun sorguda oldugunu dusunurken yazılımsal bir hatadan kaynaklandıgı ortaya çıktı ve YUKARIDA ki sorgu ile sorunu halletmiş oldum :)