• 05-03-2018, 23:33:58
    #1
    değerli paydaşlar,
    bir müşterimin(ne aklılla yaptıysak) iki farklı mağazası için iki farklı veritabanı var.
    her veritabanında 50 ye yakın tablo var,
    mağazanın birisi mal satıyor diğeri ise parça satıyor ama mantık aynı olduğu için veritabanı yapıları birebir aynı
    şimdi müşterim (aklı yeni yerine geldiği için ) iki veritabanını birleştirmemi istedi
    satış tablolarının birisinde 1800 satır , diğerinde 600 küsür satır var , tabi sıralı gittiği için ikisininde id si 1 den başlıyor.
    satılan mal tablosunun kolon isimlerinden birisi de satış id sinden alıyor (yani ilişkili tablo) tabi bunlarda 1 den başlıyor
    ikisini direkt birleştirdiğimde iki tane 1 nolu id olamaz deyip birleştirmeyecek, ayrıca tablolarda ilişikili olduğundan faturalar birbirine girecek
    tabi tüm tablolarda neredeyse durum aynı
    iki seçeneğim var
    1- verisi göreceli olarak az olan veritabanının tüm verilerinin id numaraları ilişkilerini de te tek elle id lerini ve ilişikili tablolardaki idlerini yeniden yazmak (bunun bir kodunu bilen varsa tablorene+ kahve+buyuk boy pizza+2,5 litre kola ısmarlarım)
    2- verisi az olan tablodaki tüm işlemleri manuel olarak tek tek buyuk veritabanına eklemek (3 ayda filan çıkarım işin içinden diye düşünüyorum )
    şimdi mikrofon sizde ...
  • 05-03-2018, 23:38:46
    #2
    hocam az olanın sql indirin çok olan phpmyadminde kalsın insert into tablo (id, icerik) VALUES (NULL, 'icerik') seklinde yapın yani 'id' yerine NULL tırnaksız yazın sorguyu çalıştığınızda birleşecektir çakışma da olmaz yapamazsanız dilerseniz özelden dosyaları atın birleştiririm
  • 05-03-2018, 23:40:09
    #3
    bagimsiz adlı üyeden alıntı: mesajı görüntüle
    değerli paydaşlar,
    bir müşterimin(ne aklılla yaptıysak) iki farklı mağazası için iki farklı veritabanı var.
    her veritabanında 50 ye yakın tablo var,
    mağazanın birisi mal satıyor diğeri ise parça satıyor ama mantık aynı olduğu için veritabanı yapıları birebir aynı
    şimdi müşterim (aklı yeni yerine geldiği için ) iki veritabanını birleştirmemi istedi
    satış tablolarının birisinde 1800 satır , diğerinde 600 küsür satır var , tabi sıralı gittiği için ikisininde id si 1 den başlıyor.
    satılan mal tablosunun kolon isimlerinden birisi de satış id sinden alıyor (yani ilişkili tablo) tabi bunlarda 1 den başlıyor
    ikisini direkt birleştirdiğimde iki tane 1 nolu id olamaz deyip birleştirmeyecek, ayrıca tablolarda ilişikili olduğundan faturalar birbirine girecek
    tabi tüm tablolarda neredeyse durum aynı
    iki seçeneğim var
    1- verisi göreceli olarak az olan veritabanının tüm verilerinin id numaraları ilişkilerini de te tek elle id lerini ve ilişikili tablolardaki idlerini yeniden yazmak (bunun bir kodunu bilen varsa tablorene+ kahve+buyuk boy pizza+2,5 litre kola ısmarlarım)
    2- verisi az olan tablodaki tüm işlemleri manuel olarak tek tek buyuk veritabanına eklemek (3 ayda filan çıkarım işin içinden diye düşünüyorum )
    şimdi mikrofon sizde ...
    biraz daha detayli pm php ile yapilabilir gibi vt ekran goruntulerini atarsaniz sevinirim
  • 05-03-2018, 23:42:15
    #4
    Hocam aslında basit PHP ile yapabilirsiniz örnek olarak düşük olan veri tabanına bağlanıp bilgileri alıp bunu diğerine kaydeder yani 3 aylık işi max 1 günde yapar
    Mantık
    İlk veritabanından malları al buna göre satışları da al
    Sonra ikinci veritabanına once malı kaydet sonda dönen id ile satışları kaydet
    İki evre var yani hocam
  • 05-03-2018, 23:51:48
    #5
    WebKadir adlı üyeden alıntı: mesajı görüntüle
    hocam az olanın sql indirin çok olan phpmyadminde kalsın insert into tablo (id, icerik) VALUES (NULL, 'icerik') seklinde yapın yani 'id' yerine NULL tırnaksız yazın sorguyu çalıştığınızda birleşecektir çakışma da olmaz yapamazsanız dilerseniz özelden dosyaları atın birleştiririm
    öncelikle teşekkür ederim bu dediğinizi yaparsam id ler sıralı olarak atar doğru diyorsunuz, bu aklıma geldi ama şöyle bir problem var ;
    db1-> tablo 1 deki 73id li satır , tablo 7 deki 720id li satırda tablo1_id=73 şeklinde (tablo1.id=tablo2.satis_id)
    db2-> tablo 1 deki 73id li satır , tablo 7 deki 1245id li satırda tablo1_id=73 şeklinde (tablo1.id=tablo2.satis_id)
    birleştirdikten sonra db2 ->tablo1 deki 73 satır ilişkiden dolayı tablo 7 de hem 1245. satır ile eşleşecek ekleme yaptıktan sonra örneğin 2750. satır ile eşleşecek
    yani ben 73. satışı listele dediğimde faturayao satış ile alakasız ürünlerde girecek (daha bunların satış maliyetleri kdv oranı, müşteri indirimi, müşteri adı falan var )
    mikrofon tekrar sizde (yapamazsın deyin de kurtulalım araştırmaktan ! )
  • 05-03-2018, 23:55:17
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Hocam verisi az olan tablonuz içindeki kayıtları diğerinin sonuna ekleyin(Yani çok olan tabloda ürün_id 1800'de bitiyorsa, diğer tabloyu 1801'den başlayacak şekilde ayarlayın):
    Aşağıdaki kod her id'yi 1800 artırır. Bunu urunler tablosu için çalıştırdıktan sonra bu id değerinin ilişkili oldugu diğer tablodaki alanlar için de çalıştırın. Aynı işlemi tum tablolarınız için yapmanız gerekli. En sonunda tabloları birleştirin.
    UPDATE urunler_tablosu SET urun_id = urun_id + 1800
    2. yontem olarak ilişkili veri bulunan tum tablolar için TRIGGER tanımlayın.(update işlmi için). Boylelikle siz yukarıdaki kodu çalıştırarak ürünler tablosunu update ettiğinizde, TRIGGER çalışacak ve ilgili tum sutunlar otomatik guncellenmiş olacak.
  • 06-03-2018, 00:04:18
    #7
    hocam şöyle bir örnek vereyim benim fatura tablom var siparis_id adlı sütunumda ise fatura tablomdaki siparis bilgileri satırının idsi bulunuyor ben şu şekilde fatura idsi ile siparisi çekebilirim
    $id = $_GET["id"];
    $fatura = $db->query("SELECT * FROM fatura WHERE id = '$id'")->fetch();
    $siparisdetay = $db->query("SELECT * FROM fatura WHERE siparis_id = ".$fatura["siparis_id"])->fetch();

    bu şekilde yakalayabilirsiniz hocam takıldığınız yer olursa yanıtlarım
  • 06-03-2018, 00:30:39
    #8
    Secure_web adlı üyeden alıntı: mesajı görüntüle
    Hocam verisi az olan tablonuz içindeki kayıtları diğerinin sonuna ekleyin(Yani çok olan tabloda ürün_id 1800'de bitiyorsa, diğer tabloyu 1801'den başlayacak şekilde ayarlayın):
    Aşağıdaki kod her id'yi 1800 artırır. Bunu urunler tablosu için çalıştırdıktan sonra bu id değerinin ilişkili oldugu diğer tablodaki alanlar için de çalıştırın. Aynı işlemi tum tablolarınız için yapmanız gerekli. En sonunda tabloları birleştirin.
    UPDATE urunler_tablosu SET urun_id = urun_id + 1800
    2. yontem olarak ilişkili veri bulunan tum tablolar için TRIGGER tanımlayın.(update işlmi için). Boylelikle siz yukarıdaki kodu çalıştırarak ürünler tablosunu update ettiğinizde, TRIGGER çalışacak ve ilgili tum sutunlar otomatik guncellenmiş olacak.
    öncelikle herkese teşekkür ederim
    en uyugun kod
    UPDATE urunler_tablosu SET urun_id = urun_id + 1800
    bu olmasına rağmen bazı tablolarda daki ilişikiler ne yazıkki tüm tablo için trigger oluşturmaya izin vermiyor.
    ayrıca kdv hesaplaması gibi durumlar lar bazı tablolarda ayı veriler var mesala aynı müşteri hem 1 mağazadan ürün almış hem 2. mağazadan
    kullabnıcılarda verileri doğru girmiş görünmüyor.
    hatasız olarak birleştirsem bile hesaplamaları doğru yapmazsa herşey çok daha kötu olacak
    o nedele küçük veri tabandaki işleleri alım satım, ürün, kategori kdv oranı vs yi tek tek ekleme kararı aldım
    bunun için bir arkadaşımla anlaştım hafta cuma geceden başlayıp cumartesi öğlene kadar
    sonra cumartsi geceden pazar öğlene kadar verileri tek tek arayuzden ekleme kararı aldık, 2 gun veri girecez
    yapacak bişi yok.
  • 06-03-2018, 00:56:42
    #9
    1. Adım: az verili tabloya tablo_durum adında bir sutun olusturuyorsunuz ve varsayılan degeri “0” yapiyorsunuz.
    2. Adım: fazla verili olan tabloya da tablo_durum adinda bir sutun olusturuyorsunuz. Varsayılanı “1” yapiyorsunuz.
    3. Adim 2. Tablodaki kayitlari 1. Tabloya aktariyorsunuz ve id bolumunde id yi 1 arttiracak sekline getiriyorsunuz. Daha sonrasinda islemlerinizde idleri check edecek bir fonksiyon yazın.
    Fonksiyon icerigi: misal 600. Kayittan sonra devam edecekse if($id<=600 ve $tablo_durum == 0) seklinde sorgu olusturun.
    Ben böyle bir mantık yürüttüm. Mobilden yazdigim icin biraz özet geçtim bilgisayara gectigimde daha detayli anlatabilirim.