Konuyu görüntüle
IUCODERS FORUM > Programlama > Veritabanları > SQL Yardım
Yazar
privatecoder


avatar

Kayıt: 30.07.2010
30.07.2010-17:56 #70549
Arkadaşlar Merhaba,

Function tanımlamadan ve Cursor kullanmadan

bir script yazmak istiyorum.

2 tane tablom var.

1. tablodaki kayıtlar                  2. Tablodaki Kayıtlar            Istenen Tablo
 
id kullanıcıno odemetipi           id   kullanıcıNo                     id   kullanıcıno  odemetipi
1   1              K                      1     1                                  1         1                K
1   2              K                      1     2                                  1         2                K
1   5              K                      1     3                                  1         3                K
1   6              O                     1      4                                  1         4               K
1   9              T                      1     5                                  1         5                K
                                            1     6                                   1         6               O     
                                            1     7                                   1         7               O
                                            1     8                                  1          8               O
                                            1     9                                  1          9               T
                                            1     10                                1          10             T

Yardımcı olursanız sevinirim.







Yazar
faraday


avatar

Kayıt: 08.05.2009
30.07.2010-18:44 #70550
tablolarının arasındaki baglantı ne ki ?
yani istenen tablo da id = 1, kullanıcı no =10 odemetipi = T neye göre geldi ?





Yazar
burakkanmaz


avatar
Gaziantep
Kayıt: 02.10.2006
30.07.2010-18:48 #70551
Bu işine yarayabilir,

CREATE TABLE #tmpIslem1841 
( 
    id INT, 
    kullanicino INT,
    odemetipi VARCHAR(1) 
)

INSERT INTO #tmpIslem1841
SELECT tablo2.id, tablo2.kullanicino, tablo1.odemetipi
FROM tablo1
FULL JOIN tablo2
ON tablo1.kullanicino = tablo2.kullanicino
ORDER BY tablo2.kullanicino ASC

UPDATE #tmpIslem1841 SET odemetipi = 'K' WHERE kullanicino BETWEEN 1 AND 5
UPDATE #tmpIslem1841 SET odemetipi = 'O' WHERE kullanicino BETWEEN 6 AND 8
UPDATE #tmpIslem1841 SET odemetipi = 'T' WHERE kullanicino BETWEEN 9 AND 10

SELECT * FROM #tmpIslem1841;

DROP TABLE #tmpIslem1841


Çıktısı,







Yazar
privatecoder


avatar

Kayıt: 30.07.2010
30.07.2010-22:30 #70552
privatecoder yazdi
 
Arkadaşlar Merhaba,

Function tanımlamadan ve Cursor kullanmadan

bir script yazmak istiyorum.

2 tane tablom var.

1. tablodaki kayıtlar                  2. Tablodaki Kayıtlar            Istenen Tablo
 
id kullanıcıno odemetipi           id   kullanıcıNo                     id   kullanıcıno  odemetipi
1   1              K                      1     1                                  1         1                K
1   2              K                      1     2                                  1         2                K
1   5              K                      1     3                                  1         3                K
1   6              O                     1      4                                  1         4               K
1   9              T                      1     5                                  1         5                K
                                            1     6                                   1         6               O     
                                            1     7                                   1         7               O
                                            1     8                                  1          8               O
                                            1     9                                  1          9               T
                                            1     10                                1          10             T

Yardımcı olursanız sevinirim.



Burakkanmaz cevabın için çok teşekkürler. Fakat ben istediğimi ekik belitmişim. Yapıyı tekrar oluşturuyorum. Yani

UPDATE #tmpIslem1841 SET odemetipi = 'K' WHERE kullanicino BETWEEN 1 AND 5
UPDATE #tmpIslem1841 SET odemetipi = 'O' WHERE kullanicino BETWEEN 6 AND 8
UPDATE #tmpIslem1841 SET odemetipi = 'T' WHERE kullanicino BETWEEN 9 AND 10

bu kısım işimi görmüyor. Çünkü 5 milyon kayıt var ve kullanıcı idler de farklı. Belli bit kullanıcıno sayısı yok her kullanıcı id için.


1. tablodaki kayıtlar                  2. Tablodaki Kayıtlar            Istenen Tablo
 
id kullanıcıno odemetipi           id   kullanıcıNo                     id   kullanıcıno  odemetipi
1   1              K                      1     1                                  1         1                K
1   2              K                      1     2                                  1         2                K
1   5              K                      1     3                                  1         3                K
1   6              O                     1      4                                  1         4               K
1   9              T                      1     5                                  1         5                K
2   1              K                       1     6                                   1         6               O     
2   3              O                       1     7                                   1         7               O
                                            1     8                                  1          8               O
                                            1     9                                  1          9               T
                                            1     10                                1          10             T
                                            2      1                                 2          1               K
                                            2       2                                2           2              K
                                            2       3                                2           3              O
                                            2       4                                2           4              O
                                            2       5                                2           5              O








Yazar
privatecoder


avatar

Kayıt: 30.07.2010
30.07.2010-22:34 #70553
faraday yazdi
 
tablolarının arasındaki baglantı ne ki ?
yani istenen tablo da id = 1, kullanıcı no =10 odemetipi = T neye göre geldi ?


2. tabloda kullanıcı no alanında olup da 1 tabloda kullanıcı no alanında olmayan değerler var. Bu değerler 1. tablodaki kendisinden düşük max odemetipi ile doldurulacak.





Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
30.07.2010-23:06 #70555
veritabanın nedir? bu verdiğin tablodan ne cekmek istiyosun?





N/A
Yazar
privatecoder


avatar

Kayıt: 30.07.2010
30.07.2010-23:15 #70556
orhan yazdi
 
veritabanın nedir? bu verdiğin tablodan ne cekmek istiyosun?


oracle da yazıyorum fakat veritabanı önemli değil yapılış mantığını anlamaya çalışıyorum.

2. tablo dikkat etmişsen benim ana tablom. 1 tabloyu buna left joinle bağlayacam kullanıcı id ve kullanıcı nosuna göre. Bu şekilde yaptığımda 2. tabloda kullanıcı no alanındaki bazı değerler 1 tabloda yok ve bunları bağladığımda odeme tipi null geliyor. Ben null gelmesini istemiyorum 3. tabloda gördüğün gibi 2. tablodaki tüm kayıtlar var ve bunlara ödeme tipi çekilmiş. ödeme tipi çekilirken 2. tablodaki kullanıcı no alanından küçük, en büyük 1. tablodaki kullanıcı no alanındaki değerin ödeme tipi getirilmiş.





Yazar
privatecoder


avatar

Kayıt: 30.07.2010
31.07.2010-21:22 #70566
Arkadaşlar bu soruyu yazabileceğim bildiğiniz bir forum sitesi var mı çabuk cevap alabileceğim?





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb