#ÇÖ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.
PHP+MYSQL Join kullanımı konusunda bir soru/sorun
8
●168
- 13-10-2023, 16:37:59
- 13-10-2023, 16:49:00
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, 18:04:51Pazartesi ilk isim inceleyip denemek olacak. Biraz kafam da karıştı ya dur bakalımshms adlı üyeden alıntı: mesajı görüntüle

O kadar haklısın ki. Ben bile okuyunca bunu anlayan da çıkarsa alkışlarım dedim kendi kendimekucukomer adlı üyeden alıntı: mesajı görüntüle
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
<?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:16Emeğ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.riwe adlı üyeden alıntı: mesajı görüntüle
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:10hocam 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.eminozturk adlı üyeden alıntı: mesajı görüntüle
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:50Tekrar 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.riwe adlı üyeden alıntı: mesajı görüntüle
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
$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.

