T-Sql Yardım
-
2 tablom var 1 sorgu ve birde sorgu içinde dinamik sutun açmam lazım. iç içe select gibi kulağa geliyor ama oyle değil. çünkü diğer selectte birden fazla kayıt var. Nasıl mı?
Tablo 1: Urun (UrunID,UrunAdi,SehirID)
Tablo2: UrunSehir(UrunSehirID,SehirID,UrunID)
select UrunID,UrunAdi,SehirID,(select SehirID from UrunSehir where UrunSehir.UrunID = Urun.UrunID) from Urun
siyah olan kısımda birden fazla kayıt var ve sorgu haliyle patlıyor. Ordaki birden fazla olan kayıtı "2,5,7,1" şeklinde nasıl gösterebilirim? Aklıma function yapıp fetch ile döndürmek geldi ama başka yolu var mı?
-
Select a.*,b.* from Urun a
inner join UrunSehir b on a.SehirID=b.UrunSehirID
bu sana 2 tablodaki bütün kayıtları listeler
-
join kullanabilirsin
SELECT p.UrunID, p.UrunAdi, p.SehirID AS p_SehirID, pc.SehirID AS pc_SehirID FROM Urun AS p INNER JOIN UrunSehir AS pc WHERE p.UrunID = pc.UrunID
temel olarak p.UrunID'nin degisip degismedigini kontrol et, degismemisse ayni satirdadir.
hojucuk tarafından 11/Ara/13 10:03 tarihinde düzenlenmiştir -
hocalar Join olmaz çünkü her ürün kaydı bir kere gelmesi lazım
select UrunID,UrunAdi,SehirID,(1,4,6,8) from Urun
gibi olması lazım sorgu sonucunun
cemnet tarafından 11/Ara/13 10:17 tarihinde düzenlenmiştir -
alttaki kod çalıştıta bunu fonksyona alamadım şuan onla uğraşıyorum :D
DECLARE @r VARCHAR(800),@rs VARCHAR(800)
DECLARE c1 CURSOR
FOR SELECT SehirID FROM UrunSehir where UrunID=94
OPEN c1
FETCH NEXT FROM c1 INTO @rs
SET @r=@rs
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM c1 INTO @rs
if(@@FETCH_STATUS=0)
SET @r=@r+','+@rs
END
select @r
CLOSE c1
DEALLOCATE c1
-
ve çalıştı mutlu son
select UrunID,UrunAdi,SehirID,ver(94) from Urun
alter FUNCTION [dbo].[ver] (@ID INT)
RETURNS nVARCHAR(800)
AS
BEGIN
DECLARE @r VARCHAR(800),@rs VARCHAR(800)
DECLARE c1 CURSOR
FOR SELECT SehirID FROM UrunSehir where UruntID=@ID
OPEN c1
FETCH NEXT FROM c1 INTO @rs
SET @r=@rs
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM c1 INTO @rs
if(@@FETCH_STATUS=0)
SET @r=@r+','+@rs
END
--select @r
CLOSE c1
DEALLOCATE c1
RETURN(@r);
END
-
hoca hazir konu acilmisken , burada bulunsun
concatenating aggregation https://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/
-
hojucuk bunu yazdı
hoca hazir konu acilmisken , burada bulunsun
concatenating aggregation https://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/
hmm buda iyimiş elbet bir gün lazım olur bu seneryo