• 20-01-2022, 16:11:48
    #1
    Merhaba arkadaşlar.
    İlk olarak imalat fişi adı altında bir değişken sorguluyorum.
    <?php
        $imalatfisisorgu = $db->prepare("SELECT * from WORKPRO where ACTID = '{$cariyigetir['ACTID']}' AND ORDERRECEIPTID = '{$siparisigetir['RECEIPTID']}'");
        $imalatfisisorgu->execute();
        while ($imalatfisigetir=$imalatfisisorgu->fetch(PDO::FETCH_ASSOC)){
                echo "<pre>";
                    print_r($imalatfisigetir['RECEIPTID']);
                echo "</pre>";
        }
    ?>
    Bu sorgudan bir veya birden çok sonuç alıyorum.
    Örnek olarak üstteki sorgudan gelen sonuçlar:
    5981
    5982

    Daha sonra bu gelen sonuçları ikinci bir sorguda kullanıyorum. Fakat ikisini birden kullanmayı beceremedim, ben tek örneği kullanarak yazıyorum.
    <?php
        $stockseriestrans_sorgula = $db->prepare("SELECT * from STOCKSERIESTRANS where ROOTID = '5981' AND ACTID = '{$cariyigetir['ACTID']}'");
        $stockseriestrans_sorgula->execute();
        while ($stockseriestrans_getir=$stockseriestrans_sorgula->fetch(PDO::FETCH_ASSOC)){
                echo "<pre>";
                    print_r($stockseriestrans_getir['STOCKSERIESID']);
                echo "</pre>";
        }
    ?>
    Ve yine bu sorguda da birden çok sonuç alıyorum.
    Örnek gelen veriler:
    44672
    44673
    44674
    44675
    44676
    44677

    Üçüncü olarak son gelen verileri bir sorguda daha kullanıp asıl ulaşmak istediğim veriye ulaşıyorum. Yine ilk veriyi sabit olarak kullandım.

    <?php
        $stockseries_sorgula = $db->prepare("SELECT * from STOCKSERIES where STOCKSERIESID = '44672'");
        $stockseries_sorgula->execute();
        while ($stockseries_getir=$stockseries_sorgula->fetch(PDO::FETCH_ASSOC)){
                echo "<pre>";
                //    print_r($stockseries_getir);
                    print_r($stockseries_getir['SERIESNO']);
                echo "</pre>";
        }
    ?>
    Sonuç olarak ihtiyacım olan 22010904 verisine ulaştım.

    Fakat bunları değişkenlere statik el ile yazarak ulaştım ve sadece 1 tanesine ulaşabildim, olması gereken bu sorgu için toplamda 8 sonuç. JOIN ve fetchall metodu kullanarak sorguları birbiri ile ilişkilendirmeyi beceremedim.
    Hatta elimde bununla ilgili benzer çok güzel çalışan bir örnek dahi var ama yapamıyorum. @ghergedan; isimli arkadaşımız yardım etmişti.
    Yani ilk sorgudan gelen 5981 ve 5982 gibi tüm verilerin otomatik sonuçlarına ulaşmam lazım.

    Üstte verdiğim kodları izahını yaptığım şekilde birleştirmeme yardım edebilir misiniz?
  • 20-01-2022, 16:48:18
    #2
    fetch yerine fetchAll kullanmalısınız
  • 20-01-2022, 22:41:13
    #3
    tablo isimlerini karıştırmış olabilirim ama şu sorgunun çalışıyor olması lazım;

    $query = $db->prepare("
    SELECT SS.SERIESNO FROM STOCKSERIESTRANS SSR
        JOIN STOCKSERIES SS ON SS.STOCKSERIESID = SSR.STOCKSERIESID
    WHERE SSR.ROOTID IN(
        SELECT WP.RECEIPTID FROM WORKPRO WP WHERE WP.ACTID = :ACTID AND WP.ORDERRECEIPTID = :ORDERRECEIPTID
    )
    ");
    
    $query->execute([
        'ACTID' => $cariyigetir['ACTID'],
        'ORDERRECEIPTID' => $siparisigetir['RECEIPTID'],
    ]);
    
    print_r($query->fetchAll(PDO::FETCH_COLUMN));
  • 21-01-2022, 09:51:38
    #4
    ghergedan adlı üyeden alıntı: mesajı görüntüle
    tablo isimlerini karıştırmış olabilirim ama şu sorgunun çalışıyor olması lazım;

    $query = $db->prepare("
    SELECT SS.SERIESNO FROM STOCKSERIESTRANS SSR
        JOIN STOCKSERIES SS ON SS.STOCKSERIESID = SSR.STOCKSERIESID
    WHERE SSR.ROOTID IN(
        SELECT WP.RECEIPTID FROM WORKPRO WP WHERE WP.ACTID = :ACTID AND WP.ORDERRECEIPTID = :ORDERRECEIPTID
    )
    ");
    
    $query->execute([
        'ACTID' => $cariyigetir['ACTID'],
        'ORDERRECEIPTID' => $siparisigetir['RECEIPTID'],
    ]);
    
    print_r($query->fetchAll(PDO::FETCH_COLUMN));
    Hatasız çalıştı !
    Teşekkürler !