• 04-08-2009, 03:22:18
    #1
    Merhaba,
    Farklı 2 tabloya veri yükleyeceğim. Tabloları ve özelliklerini hallettim. İskeleti giydirdim yani.Şimdi verileri yükleyeceğim.

    2 tablonunda 2 "id" adlı sutunu var. auto_increment ve benzersiz.
    Ben 2 tablodan da id yardımı ile aynı anda veri çekebiliyorum.

    Şimdi benim sorunum:

    INSERT INTO `tablo_a` (`veri`) VALUES
    ('ABC'),
    ('CBA'),
    ('BAC');

    olarak 1000 tane veri gireceğim. Bir tabloda isimler ve id'ler diğer tabloda da bu isimlere ait bilgiler var. Bu yüzden 16 nolu id ile aynı satırda olan isimin yine diğer tabloda 16 nolu id ile aynı satırdaki bilgileri vermesi lazım.

    Ancak verileri yükleyince auto_increment 36 dan başlıyor vs. Bunun önüne nasıl geçerim ve farkı 2 tabloya aynı id ile 1 satır veri nasıl girebilirim ?

    Teşekkürler
  • 04-08-2009, 04:48:34
    #2
    benim bildiğim 2 çözüm yolu var
    birincisi : tabloyu silip baştan oluşturmak
    ikincisi : veri girerken id numarasını da girmek
  • 04-08-2009, 10:29:08
    #3
    Evet 2 çözüm yolu var fakat 1. si yanlış. Şu yönden yanlış. auto_increment kolon olduğundan dolayı sillip tekrar eklesende kaldığı yerden devam eder örneğin en son id birinde 1039 diğerinde 1020 ise buradan devam ederki zaten arkadaşta bunu nasıl aşarım diyor.

    1. yol auto_increment kullanmamak ve manuel olarak kendin ID atarsın.
    2. yol ise ki ben bunu öneriyorum. Bir tablo daha oluşturursunuz. Bu oluşturduğunuz tabloda IDler kaydedilir.

    birincitablo----|------ikincitablo
    ---20---------|----------29
    ---21---------|----------30

    gibi.

    En iyi yol 2. yoldur ve birçok kişi ikinci yolu kullanmaktadır. Kolay gelsin.
  • 04-08-2009, 12:55:43
    #4
    electronicboy

    2.yolu tam olarak anlayamadım. Biraz daha açabilir misin ?

    Diğer arkadaşa da ilgisinden ötürü teşekkürler.
  • 04-08-2009, 14:27:44
    #5
    Üyeliği durduruldu
    1 - auto_increment resetleme:

    phpmyadmin ile db ye bağlan, tabloyu seç. yukarıdaki linklerden İşlemler e tıkla. açılan sayfada Tablo seçenekleri kısmında AUTO_INCREMENT yazıyor. oraya kaçtan başlamasını istiyorsan onu yaz. en küçük değer olarak 0 değil 1 gir.

    veya mysql sorgusu olarak şunu da çalıştırabilirsin;

    ALTER TABLE `tabloadi`  AUTO_INCREMENT =1
    2 - 2 tabloya senkronize veri girme:

    eğer ilk şıktakini yaparsan her 2 tablonunda auto_increment değeri aynı olacağı için her ikisinede sıra ile veri girersen bir sorun çıkmaz. ama hem sorun çıkması olasılığını göz önüne alarak hem de programlama mantığı açısından şunu yapmalısın; önce ilk tablona verileri teker teker girersin. bu sorguların hemen ardından mysql_insert_id komutu ile girilen verinin id sini alır diğer tabloya veri girerken kullanırsın. böylece hata oluşma olasılığı ortadan kalkar.
  • 04-08-2009, 14:28:03
    #6
    Bir PHP öğrencisi olarak fikir belirtmek isterim.
    Konuyu tam anlayıp anlamadığımı bilmiyorum tabii. Eğer aynı anda 2 tabloya veri yüklemek istiyorsanız o zaman SQL sorgu bölümünde her iki tablonun ID'lerini eşitlemeniz gerekmiyor mu?
    Veri çekerken şöyle yapıyoruz ya !
    ("SELECT * FROM tablo_a"
    . "\n INNER JOIN tablo_b ON tablo_a.id = tablo_b.id"
    . "\n WHERE yazbirsey ORDER BY yazbirsey"
    vs vs.
    Bu mantık veri yüklemede de kullanılamaz mı?
  • 05-08-2009, 14:46:46
    #7
    MC_delta_T

    Şimdi "ad" adlı tabloda "id" ve "ad_soyad" sütunları var
    "maas" adlı tabloda ise yine "id" ve "ucret" adlı sütunlar var.


    Ben isim araması yapıp ilk tabloda, 2. tablodan aynı id den ücret verisine ulaşıyorum.
    Şimdi tam olarak ne yapabilirim anlamadım.

    Insert into ile ad-soyadları veri olarak gireceğim ama id nasıl veririm ki? Insert komutuna her kişi için manuel olarak 1,2,3 yapamam ki.
  • 05-08-2009, 15:06:40
    #8
    Üyeliği durduruldu
    electronicboy adlı üyeden alıntı: mesajı görüntüle
    Evet 2 çözüm yolu var fakat 1. si yanlış. Şu yönden yanlış. auto_increment kolon olduğundan dolayı sillip tekrar eklesende kaldığı yerden devam eder
    silme derken delete from tablo yerine truncate tablo kullanirsaniz otomatik artan sayiyida temizlemiş olursunuz
  • 05-08-2009, 15:25:51
    #9
    Üyeliği durduruldu
    Cagatayh adlı üyeden alıntı: mesajı görüntüle
    Insert into ile ad-soyadları veri olarak gireceğim ama id nasıl veririm ki? Insert komutuna her kişi için manuel olarak 1,2,3 yapamam ki.
    neden yapamazsın?