Sql Sorgu İşlemi Yardım
-
Merhabalar hocalar. bir sorum olacaktı. 10.000 adet random rakam var.
bu sayılar için de mesala istediğim numaralar 3-8-16 bu sıraya göre sorgu çekilecek databese de bu sıraya göre aynı numaralar var ise bundan sonra hangi rakam gelmiş onunun sorgusu gerekiyor yardımınıza ihtiyacım var. Teşekürler.
c# kullanıyorum
-
Up
-
Örnek bir tablo yapısı (veri ekli olarak) paylaşırsan isediğin şey daha anlaşılır hocam.
-
coder2 bunu yazdı
Örnek bir tablo yapısı (veri ekli olarak) paylaşırsan isediğin şey daha anlaşılır hocam.
şöyleki c# 3 tane text box var. bu üç text box'a rakamlar girdiğimizi düşünelim .
1'ci text box 10
2'ci text box 21
3'cü text box 1
butona tıkladığımda sorguyu çekecek bana databesedeki 10.000 rakamdan bu sıra gibi (10,21,1) olan rakamı bulup 1 numaradan sonraki rakam hangisi ise onu göstermesini istiyorum
örnek
databesedeki numaralar= 2-60-36-75-80-12-75-12-1-2-4-87-36-56-85-45-74-41-61-82-36-10-21-1-9-8-91-41-25-
text box a girilen nuamralr 10-21-1 numaraydı . databese sonucuna göre bana 9 numarasını vermsi gerekiyor.
böyle birsey hocalar umarım anlatabilmişimdir.
-
ArrayList sayilar =new ArrayList<>();
for(int i =0;i<sayilar.size()-2;i++)
{if(sayilar.get(i)===sayi1&&sayilar.get(i+1)===sayi2&&sayilar.get(i+2)===sayi3&&i+2!=sayilar.size())
{
Console.Write(sayilar.get(i+3));
break;
}
}
C# ile yap sadece sayi arıyorsan böyle yapabilirsin. LinkedList olmalı cünkü listenin sırasına göre iş yapıyorsun. BST falan yapabilir misin bilmiyorum.
Veya BST ye dönersin position değerlerini de kayıt edersin nodelara. Position değerlerini karşılaştırırsın. Sonra bir sonraki sayıyı getirirsin.
Başka da aklıma bir şey gelmiyor.
Sayılar column içinde olsaydı REGEX ile yap derdim ama. sanırım satır satır.
-
MhmdAlmz bunu yazdı
ArrayList sayilar =new ArrayList<>();
for(int i =0;i<sayilar.size()-2;i++)
{if(sayilar.get(i)===sayi1&&sayilar.get(i+1)===sayi2&&sayilar.get(i+2)===sayi3&&i+2!=sayilar.size())
{
Console.Write(sayilar.get(i+3));
break;
}
}
C# ile yap sadece sayi arıyorsan böyle yapabilirsin. LinkedList olmalı cünkü listenin sırasına göre iş yapıyorsun. BST falan yapabilir misin bilmiyorum.
Veya BST ye dönersin position değerlerini de kayıt edersin nodelara. Position değerlerini karşılaştırırsın. Sonra bir sonraki sayıyı getirirsin.
Başka da aklıma bir şey gelmiyor.
Sayılar column içinde olsaydı REGEX ile yap derdim ama. sanırım satır satır.
Hocam yardiminiz icin tesekur ederim. Fakat sql sorgusu olasak istemistim ben
-
infazteam bunu yazdıMhmdAlmz bunu yazdı
ArrayList sayilar =new ArrayList<>();
for(int i =0;i<sayilar.size()-2;i++)
{if(sayilar.get(i)===sayi1&&sayilar.get(i+1)===sayi2&&sayilar.get(i+2)===sayi3&&i+2!=sayilar.size())
{
Console.Write(sayilar.get(i+3));
break;
}
}
C# ile yap sadece sayi arıyorsan böyle yapabilirsin. LinkedList olmalı cünkü listenin sırasına göre iş yapıyorsun. BST falan yapabilir misin bilmiyorum.
Veya BST ye dönersin position değerlerini de kayıt edersin nodelara. Position değerlerini karşılaştırırsın. Sonra bir sonraki sayıyı getirirsin.
Başka da aklıma bir şey gelmiyor.
Sayılar column içinde olsaydı REGEX ile yap derdim ama. sanırım satır satır.
Hocam yardiminiz icin tesekur ederim. Fakat sql sorgusu olasak istemistim ben
Select * from random_sayilar where ? ASC or DESC.. +1 gibi bir sorgu istiyorsun he ?
zaten MhmdAlmz hocamızın da dediği gibi Colum değilse veriler sorgu şişer patlar yaz yaz biter mi bilemem? boş konuşmak için gelmedim takipteyip aydınlatan olacaktır.
kolay gelsin
-
siyahbereli bunu yazdıinfazteam bunu yazdıMhmdAlmz bunu yazdı
ArrayList sayilar =new ArrayList<>();
for(int i =0;i<sayilar.size()-2;i++)
{if(sayilar.get(i)===sayi1&&sayilar.get(i+1)===sayi2&&sayilar.get(i+2)===sayi3&&i+2!=sayilar.size())
{
Console.Write(sayilar.get(i+3));
break;
}
}
C# ile yap sadece sayi arıyorsan böyle yapabilirsin. LinkedList olmalı cünkü listenin sırasına göre iş yapıyorsun. BST falan yapabilir misin bilmiyorum.
Veya BST ye dönersin position değerlerini de kayıt edersin nodelara. Position değerlerini karşılaştırırsın. Sonra bir sonraki sayıyı getirirsin.
Başka da aklıma bir şey gelmiyor.
Sayılar column içinde olsaydı REGEX ile yap derdim ama. sanırım satır satır.
Hocam yardiminiz icin tesekur ederim. Fakat sql sorgusu olasak istemistim ben
Select * from random_sayilar where ? ASC or DESC.. +1 gibi bir sorgu istiyorsun he ?
zaten MhmdAlmz hocamızın da dediği gibi Colum değilse veriler sorgu şişer patlar yaz yaz biter mi bilemem? boş konuşmak için gelmedim takipteyip aydınlatan olacaktır.
kolay gelsin
Evet hocam select * from tarzinda
-
tablona id ve sayilar diye alan aç, id autoincrement olsun. row number niyetine kullanacaz bu alanı.
select top 1 sayi from sayilar where id > (select id from sayilar where sayi = ?parametreSayi?) order by id asc --> mssql için
select sayi from sayilar where id > (select id from sayilar where sayi = ?parametreSayi?) order by id asc limit 1 --> bu da mysql için
select * from (select sayi from sayilar where id > (select id from sayilar where sayi = ?parametreSayi?) order by id asc) where rownum = 1 --> oracle 11g
db olmayınca workbench yapamadım ama 1 2 milyona kadar rahat çalışır sıkıntı olacağını sanmıyorum. Bak eğer uzun sürüyor çalışma zamanı tekrar deneyelim join ile yapalım
-
soyle bir sema olusturdum, sqlfiddle i da atacam zaten de, forumda da dursun iyidir,
create table numbers(id int, number int);
insert into numbers(id, number) values(0, 5);
insert into numbers(id, number) values(1, 3);
insert into numbers(id, number) values(2, 6);
insert into numbers(id, number) values(3, 9);sorgu da bu,
select s.number3 as next_number from
(
select t.id, t.number as number0,
lead(t.number, 1, 0) over(order by t.id asc) as number1,
lead(t.number, 2, 0) over(order by t.id asc) as number2,
lead(t.number, 3, 0) over(order by t.id asc) as number3
from numbers t
) s
where s.number0 = 5
and s.number1 = 3
and s.number2 = 6http://sqlfiddle.com/#!18/c231c/16
-
tablo
id ve sayi olsun
sayilar xyz olsun
select d.sayi from
(select * from sayilar) as a
left join
(select * from sayilar) as b on (b.id=a.id+1)
left join
(select * from sayilar) as c on (c.id=a.id+2)
left join
(select * from sayilar) as d on (d.id=a.id+3)
where (a.sayi=x and b.sayi=y and c.sayi=z)
olmazmı