• 13-10-2023, 16:37:59
    #1
    #ÇÖZÜLDÜ - Çözüm gönderisine gitmek için tıklayın.

    PHP MySQL ikilisi ile bir kod grubu yazıyorum. İlk defa JOIN fonksiyonunu kullanacağım ama takıldığım bir kısım var. Şöyle ki;

    2 adet tablom var.
    a_k ve t_b isminde.
    a_k tablosunda 2 adet sütun mevcut. Bunlar a_t_b ve a_i_b.
    t_b tablosunda 1 adet t_b_k isminde sütun mevcut.

    Yapmak istediğim şey şu; a_k tablosunda bulunan a_t_b ve a_i_b sütunları ile t_b tablosunda bulunan t_b_k sütununu eşleştirmek ve kayıtları döngü ile getirmek. Yani aynı kod içerisinde t_b tablosunda bulunan t_b_k sütunu ile hem a_t_b sütununu birleştirip veri almak hem de a_i_b sütununu birleştirip veri almak istiyorum. Ancak ne yazık ki 2 sütun eşleştirmesinde başarılı sonuç alsam da 3. sütun işin içerisine girince ne denediysem olmuyor. Umarım anlatabilmişimdir. Biraz karışık oldu farkındayım. Mazur görün lütfen.
  • 13-10-2023, 16:49:00
    #2
    SELECT ak.a_t_b, ak.a_i_b, tb.t_b_k
    FROM a_k ak
    INNER JOIN t_b tb
    ON ak.a_t_b = tb.t_b_k AND ak.a_i_b = tb.t_b_k;

    <?php
    $servername = "localhost";
    $username = "kullanici_adi";
    $password = "parola";
    $dbname = "veritabani_adi";
    
    // Veritabanına bağlantı oluştur
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Bağlantıyı kontrol et
    if ($conn->connect_error) {
        die("Bağlantı hatası: " . $conn->connect_error);
    }
    
    $sql = "SELECT ak.a_t_b, ak.a_i_b, tb.t_b_k
            FROM a_k ak
            INNER JOIN t_b tb
            ON ak.a_t_b = tb.t_b_k AND ak.a_i_b = tb.t_b_k";
    
    $result = $conn->query($sql);
    
    if ($result->num_rows > 0) {
        // Verileri ekrana yazdır
        while($row = $result->fetch_assoc()) {
            echo "a_t_b: " . $row["a_t_b"]. " - a_i_b: " . $row["a_i_b"]. " - t_b_k: " . $row["t_b_k"]. "<br>";
        }
    } else {
        echo "Hiç sonuç bulunamadı.";
    }
    
    $conn->close();
    ?>
  • 13-10-2023, 16:49:25
    #3
    Tabloların ekran görüntüsünü atın ve hangi sütun hangi sütun ile ilişkilendirilip sorgu yazılacak oklarla gösterin ona göre yardımcı olsun arkadaşlar
    Yazdıklarınızdan kimse birşey çıkaramaz.
  • 13-10-2023, 18:04:51
    #4
    shms adlı üyeden alıntı: mesajı görüntüle
    SELECT ak.a_t_b, ak.a_i_b, tb.t_b_k
    FROM a_k ak
    INNER JOIN t_b tb
    ON ak.a_t_b = tb.t_b_k AND ak.a_i_b = tb.t_b_k;
    <?php
    $servername = "localhost";
    $username = "kullanici_adi";
    $password = "parola";
    $dbname = "veritabani_adi";
    
    // Veritabanına bağlantı oluştur
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Bağlantıyı kontrol et
    if ($conn->connect_error) {
        die("Bağlantı hatası: " . $conn->connect_error);
    }
    
    $sql = "SELECT ak.a_t_b, ak.a_i_b, tb.t_b_k
            FROM a_k ak
            INNER JOIN t_b tb
            ON ak.a_t_b = tb.t_b_k AND ak.a_i_b = tb.t_b_k";
    
    $result = $conn->query($sql);
    
    if ($result->num_rows > 0) {
        // Verileri ekrana yazdır
        while($row = $result->fetch_assoc()) {
            echo "a_t_b: " . $row["a_t_b"]. " - a_i_b: " . $row["a_i_b"]. " - t_b_k: " . $row["t_b_k"]. "<br>";
        }
    } else {
        echo "Hiç sonuç bulunamadı.";
    }
    
    $conn->close();
    ?>
    Pazartesi ilk isim inceleyip denemek olacak. Biraz kafam da karıştı ya dur bakalım

    kucukomer adlı üyeden alıntı: mesajı görüntüle
    Tabloların ekran görüntüsünü atın ve hangi sütun hangi sütun ile ilişkilendirilip sorgu yazılacak oklarla gösterin ona göre yardımcı olsun arkadaşlar
    Yazdıklarınızdan kimse birşey çıkaramaz.
    O kadar haklısın ki. Ben bile okuyunca bunu anlayan da çıkarsa alkışlarım dedim kendi kendime
    Hafta sonu olduğu için kurum kapalı olacak. Pazartesi ilk isim buraya görüntüleri atmak olacak. Teşekkür ederim alakana.
  • 13-10-2023, 18:05:58
    #5
    <?php
    // Veritabanı bağlantısı oluşturun (mysqli veya PDO kullanabilirsiniz)
    $servername = "localhost";
    $username = "kullanici_adi";
    $password = "parola";
    $dbname = "veritabani_adi";
    
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Bağlantıyı kontrol edin
    if ($conn->connect_error) {
        die("Veritabanı bağlantısında hata: " . $conn->connect_error);
    }
    
    // SQL sorgusu oluşturun ve JOIN kullanarak tabloları birleştirin
    $sql = "SELECT a_k.a_t_b, a_k.a_i_b, t_b.t_b_k 
            FROM a_k 
            JOIN t_b ON a_k.a_t_b = t_b.t_b_k";
    
    // Sorguyu çalıştırın
    $result = $conn->query($sql);
    
    // Sonuçları döngü ile alın ve işleyin
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $a_t_b = $row["a_t_b"];
            $a_i_b = $row["a_i_b"];
            $t_b_k = $row["t_b_k"];
    
            // İşlem yapmak için bu verileri kullanabilirsiniz
            echo "a_t_b: " . $a_t_b . ", a_i_b: " . $a_i_b . ", t_b_k: " . $t_b_k . "<br>";
        }
    } else {
        echo "Hiç sonuç bulunamadı.";
    }
    
    // Veritabanı bağlantısını kapatın
    $conn->close();
    ?>
  • 13-10-2023, 18:15:16
    #6
    riwe adlı üyeden alıntı: mesajı görüntüle
    <?php
    // Veritabanı bağlantısı oluşturun (mysqli veya PDO kullanabilirsiniz)
    $servername = "localhost";
    $username = "kullanici_adi";
    $password = "parola";
    $dbname = "veritabani_adi";
    
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Bağlantıyı kontrol edin
    if ($conn->connect_error) {
        die("Veritabanı bağlantısında hata: " . $conn->connect_error);
    }
    
    // SQL sorgusu oluşturun ve JOIN kullanarak tabloları birleştirin
    $sql = "SELECT a_k.a_t_b, a_k.a_i_b, t_b.t_b_k
            FROM a_k
            JOIN t_b ON a_k.a_t_b = t_b.t_b_k";
    
    // Sorguyu çalıştırın
    $result = $conn->query($sql);
    
    // Sonuçları döngü ile alın ve işleyin
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $a_t_b = $row["a_t_b"];
            $a_i_b = $row["a_i_b"];
            $t_b_k = $row["t_b_k"];
    
            // İşlem yapmak için bu verileri kullanabilirsiniz
            echo "a_t_b: " . $a_t_b . ", a_i_b: " . $a_i_b . ", t_b_k: " . $t_b_k . "<br>";
        }
    } else {
        echo "Hiç sonuç bulunamadı.";
    }
    
    // Veritabanı bağlantısını kapatın
    $conn->close();
    ?>
    Emeğine sağlık. Teşekkür ederim yalnız sanki böyle bir kod grubunu denedim ama istediğim sonucu alamadım gibi hatırlıyorum. Emin değilim tabi.
    Benim istediğim şeyin tam özeti şu şekilde
    t_b tablosunda birden fazla kayıt var ve ben döngüdeki her sonuçta a_k tablosunda bulunan a_t_b ve a_i_b sütunlarındaki veri ile t_b tablosundaki tüm kayıtlar içerisinden 2 adet eşleştirme yaparak sonuç almaya çalışıyorum. Anlatabiliyorum muyum bilemiyorum
    Ek olarak bir paint çizimi ekleyeyim. Belki anlaşılabilir. Biraz fazla kreatif oldu idare ediniz lütfen

    Yaşam döngüsü;
    + sorgu döngü (while) olarak çalışır
    + 1 kayıt gelir. bu kaydın a_k tablosunda bulunan a_t_b değeri alınır ve t_b tablosunda t_b_k sütunundaki eşleşmesi alınıp kullanıcıya gösterilir. diğer kayda geçmeden yine aynı kayıt içerisinde a_k tablosundaki a_i_b değeri alınır ve t_b tablosun t_b_k sütunundaki eşleşmesi alınıp kullanıcıya gösterilir.
    + Döngü devam ederek diğer kayda geçilir ve yine aynı şeyler.
    + Döngü devam ederek....
    + ....
    + ....
    + ...

    Bu şekilde.
  • 13-10-2023, 18:48:10
    #7
    eminozturk adlı üyeden alıntı: mesajı görüntüle
    Emeğine sağlık. Teşekkür ederim yalnız sanki böyle bir kod grubunu denedim ama istediğim sonucu alamadım gibi hatırlıyorum. Emin değilim tabi.
    Benim istediğim şeyin tam özeti şu şekilde
    t_b tablosunda birden fazla kayıt var ve ben döngüdeki her sonuçta a_k tablosunda bulunan a_t_b ve a_i_b sütunlarındaki veri ile t_b tablosundaki tüm kayıtlar içerisinden 2 adet eşleştirme yaparak sonuç almaya çalışıyorum. Anlatabiliyorum muyum bilemiyorum
    Ek olarak bir paint çizimi ekleyeyim. Belki anlaşılabilir. Biraz fazla kreatif oldu idare ediniz lütfen

    Yaşam döngüsü;
    + sorgu döngü (while) olarak çalışır
    + 1 kayıt gelir. bu kaydın a_k tablosunda bulunan a_t_b değeri alınır ve t_b tablosunda t_b_k sütunundaki eşleşmesi alınıp kullanıcıya gösterilir. diğer kayda geçmeden yine aynı kayıt içerisinde a_k tablosundaki a_i_b değeri alınır ve t_b tablosun t_b_k sütunundaki eşleşmesi alınıp kullanıcıya gösterilir.
    + Döngü devam ederek diğer kayda geçilir ve yine aynı şeyler.
    + Döngü devam ederek....
    + ....
    + ....
    + ...

    Bu şekilde.
    hocam chat gpt'ye derdinizi en detayına kadar açıklayarak yazarsanız kesin sonuç alacağınızı düşünüyorum. eğer kod çalışıyor gibi gözüküyorsa yazmaya devam edin en iyi sonucu çıkaracaktır.

    Ekstra olarak :

    <?php
    // Veritabanı bağlantısı oluşturun (mysqli veya PDO kullanabilirsiniz)
    $servername = "localhost";
    $username = "kullanici_adi";
    $password = "parola";
    $dbname = "veritabani_adi";
    
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Bağlantıyı kontrol edin
    if ($conn->connect_error) {
        die("Veritabanı bağlantısında hata: " . $conn->connect_error);
    }
    
    // SQL sorgusu oluşturun ve t_b tablosunu sorgulayın
    $sql = "SELECT t_b_k FROM t_b";
    $result = $conn->query($sql);
    
    // Sonuçları döngü ile alın ve işleyin
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $t_b_k = $row["t_b_k"];
            
            // a_k tablosunu sorgulayarak gerekli eşleştirmeleri yapın
            $a_k_sql = "SELECT a_t_b, a_i_b FROM a_k WHERE a_t_b = '$t_b_k' OR a_i_b = '$t_b_k'";
            $a_k_result = $conn->query($a_k_sql);
    
            if ($a_k_result->num_rows > 0) {
                while ($a_k_row = $a_k_result->fetch_assoc()) {
                    $a_t_b = $a_k_row["a_t_b"];
                    $a_i_b = $a_k_row["a_i_b"];
                    
                    // İşlem yapmak için bu verileri kullanabilirsiniz
                    echo "a_t_b: " . $a_t_b . ", a_i_b: " . $a_i_b . ", t_b_k: " . $t_b_k . "<br>";
                }
            }
        }
    } else {
        echo "Hiç sonuç bulunamadı.";
    }
    
    // Veritabanı bağlantısını kapatın
    $conn->close();
    ?>
  • 13-10-2023, 23:15:50
    #8
    riwe adlı üyeden alıntı: mesajı görüntüle
    hocam chat gpt'ye derdinizi en detayına kadar açıklayarak yazarsanız kesin sonuç alacağınızı düşünüyorum. eğer kod çalışıyor gibi gözüküyorsa yazmaya devam edin en iyi sonucu çıkaracaktır.

    Ekstra olarak :

    <?php
    // Veritabanı bağlantısı oluşturun (mysqli veya PDO kullanabilirsiniz)
    $servername = "localhost";
    $username = "kullanici_adi";
    $password = "parola";
    $dbname = "veritabani_adi";
    
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Bağlantıyı kontrol edin
    if ($conn->connect_error) {
        die("Veritabanı bağlantısında hata: " . $conn->connect_error);
    }
    
    // SQL sorgusu oluşturun ve t_b tablosunu sorgulayın
    $sql = "SELECT t_b_k FROM t_b";
    $result = $conn->query($sql);
    
    // Sonuçları döngü ile alın ve işleyin
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $t_b_k = $row["t_b_k"];
            
            // a_k tablosunu sorgulayarak gerekli eşleştirmeleri yapın
            $a_k_sql = "SELECT a_t_b, a_i_b FROM a_k WHERE a_t_b = '$t_b_k' OR a_i_b = '$t_b_k'";
            $a_k_result = $conn->query($a_k_sql);
    
            if ($a_k_result->num_rows > 0) {
                while ($a_k_row = $a_k_result->fetch_assoc()) {
                    $a_t_b = $a_k_row["a_t_b"];
                    $a_i_b = $a_k_row["a_i_b"];
                    
                    // İşlem yapmak için bu verileri kullanabilirsiniz
                    echo "a_t_b: " . $a_t_b . ", a_i_b: " . $a_i_b . ", t_b_k: " . $t_b_k . "<br>";
                }
            }
        }
    } else {
        echo "Hiç sonuç bulunamadı.";
    }
    
    // Veritabanı bağlantısını kapatın
    $conn->close();
    ?>
    Tekrar teşekkür ederim. Chat GPT ile sıkı bir savaş verdikten sonra buraya konu açmayı uygun gördüm hocam. Ne yazık ki onda da verdiği kodlarda çözüm bulamadık. Hatta verdiği bir çok kod fazladan kayıt dahi getirdi. Envaı çeşit prompt ile denedim, kaç defa işe yaramadığını söyledim ama nafile.

    Hocam ayrıca paylaşmış olduğunu şekilde JOIN kullanmadan yapabiliyorum. Ben inat ettim bunu JOIN ile yapmaya. O nedenle ısrarla JOIN peşine düştüm. Eğer JOIN ile yapamayacağım teyitlenirse UNION deneyeceğim. O da olmadı en son olacak şekle döneceğim.
  • 15-10-2023, 14:25:22
    #9
        $veriler = mysqli_query($veritabani, "SELECT * FROM birinci_tablo JOIN ikinci_tablo ON birinci_tablo.birinci_tablo_birinci_sutun=ikinci_tablo.ikinci_tablo_birinci_sutun");
    
        while($verileri_al = mysqli_fetch_assoc($veriler)){
    
            $birinci = $verileri_al["birinci_tablo_ikinci_sutun"];
    
            $birinci1 = $verileri_al["birinci_tablo_ucuncu_sutun"];
    
            $ic_veri = mysqli_query($veritabani, "SELECT * FROM ikinci_tablo WHERE ikinci_tablo_birinci_sutun='$birinci1'");
    
            $ic_veri_al = mysqli_fetch_assoc($ic_veri);
    
            $ikinci = $ic_veri_al["birinci_tablo_ikinci_sutun"];
    
            echo "Teknik Birim: ".$verileri_al["birinci_tablo_birinci_sutun"]." - "."İlgili Birim: ".$verileri_al["birinci_tablo_ucuncu_sutun"]." - "."Teknik Birim Adı: ".$birinci." - "."İlgili Birim Adı: ".$ikinci."<br>";
    Çözüm bulduğum kod yapısını aynı sorunu yaşayan arkadaşlar için yayınlıyorum.