lostyazilim
tr.link

mySQL iki tablo arasındaki ortak bilgiye göre veri çekme

5 Mesajlar 1.793 Okunma
acebozum
tr.link

drrmicrop drrmicrop WM Aracı Kullanıcı
  • Üyelik 23.07.2021
  • Yaş/Cinsiyet 41 / E
  • Meslek Elektronik Haberleşme Tek.
  • Konum Diğer
  • Ad Soyad T** A**
  • Mesajlar 4
  • Beğeniler 0 / 2
  • Ticaret 0, (%0)
Arkadaşlar merhaba, php konusunda acemiyim ve değerli yardımlarınıza ihtiyacım var.

ESP8266 NodeMcu geliştirme kartı kullanarak veritabanına bazı verileri kaydediyorum ve bunları görüntülemek için tek sayfalık bir php sayfası oluşturdum. (şu an localhostta çalışıyor )

iki adet tablom var ;
1. tabloda NODEMCU'dan gelen bilgilerin dakikada bir kaydedildiği tablo,
2. tabloda birden fazla kart kullanma ihtimalime karşı verecğim kart kimlik bilgisinin ve lokasyonunun olduğu tablom var

Her iki tabloda da ortak ( 1. CARDCODE - 2. CARDCODETABLE ) sütunlarım mevcut ve bu sütundaki bilgiler eşleştiğide 2. tablodaki LOCATION sütunundaki kayıtlı benzersiz veriyi yazdırmak istiyorum. bunu nasıl yapabilirim.



Umarım kısıtlı bilgim ile konuyu yeteri kadar açıklayabilmişimdir. istenilmesi durumunda detaylı resim ekleyebilirim. cahile anlatırmış gibi anlatırsanız da çok minnettar olurum :D
 

 

elektronikssl
webimgo

emreyvz emreyvz .NET Core & Angular & PHP Kullanıcı
  • Üyelik 19.04.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad E** Y**
  • Mesajlar 691
  • Beğeniler 110 / 250
  • Ticaret 24, (%100)



SQL Kodu:


SELECT *
FROM Table1
LEFT JOIN Table2 ON Table1.CARDCODE = Table2.CARDCODE AND Table1.CARDCODETABLE = Table2.CARDCODETABLE



PHP Kodu:


$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";


$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.CARDCODE = Table2.CARDCODE AND Table1.CARDCODETABLE = Table2.CARDCODETABLE";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "location: " . $row["LOCATION"]. ";
break;
}
} else {
echo "Eşleşme yok";
}
$conn->close();
?>


Veritabanı diyagramı kodu temsil etmesi içindir. Sizde ekstra sutünlar vs. olabilir. Tablo adlarını doğru şekilde ayarlamalısınız.

Kolay gelsin.
 

 

drrmicrop drrmicrop WM Aracı Kullanıcı
  • Üyelik 23.07.2021
  • Yaş/Cinsiyet 41 / E
  • Meslek Elektronik Haberleşme Tek.
  • Konum Diğer
  • Ad Soyad T** A**
  • Mesajlar 4
  • Beğeniler 0 / 2
  • Ticaret 0, (%0)
Hocam öncelikle yardımın için çok teşekkür ederim. vermiş olduğunuz kodu gerekli düzeltmeleri yaptığım halde çalıştıramadım, " Bu sayfa Çalışmıyor " uyarısı aldım. bu nedenle daha açıklayıcı olması açısından tabloların resmini ekliyorum.

Diğer bir sorum ise öğrenmek için olacak;
$sql = "SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.CARDCODE = Table2.CARDCODE AND Table1.CARDCODETABLE = Table2.CARDCODETABLE";

bu sorguyu neden $sql = mysqli_query("SELECT * FROM ....... ") şeklinde çalıştırmadınız. yanlış anlamayın öğrenmek için soruyorum

Tablolar aşağıdaki gibidir. kırmızı çerçeveli olan yerlerdeki eşleşmeye göre yeşil çerçevedekini ekrana yazdırmak istiyorum.

https://ibb.co/Q9NRZ5z
https://ibb.co/cyRn6zf
 

 

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
Ortak veri var ise ve her iki tabloda da verinin olması zorunlu ise left join yerine inner join daha doğru tercih olacaktır.

Detaylı açıklama : https://stackoverflow.com/questions/32190653/sql-server-2012-left-join-with-where-vs-inner-join
 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)
wmaraci
wmaraci

drrmicrop drrmicrop WM Aracı Kullanıcı
  • Üyelik 23.07.2021
  • Yaş/Cinsiyet 41 / E
  • Meslek Elektronik Haberleşme Tek.
  • Konum Diğer
  • Ad Soyad T** A**
  • Mesajlar 4
  • Beğeniler 0 / 2
  • Ticaret 0, (%0)
Hocalarım sağdan,soldan kopya çekerek ve YazilimMimari bey'in verdiği linkden faydalanarak kendi çabalarım ile sorunu hallettim ihtiyacı olan için kodları buraya ekliyorum. Destek veren herkeze teşekkürler.

baglan.php
try{
$host='localhost';
$vtadi='database';
$kullanici='root';
$sifre='12345678';
$vt=new PDO("mysql:host=$host;dbname=$vtadi;charset=UTF8","$kullanici",$sifre);
}
catch(PDOException $e){
print $e->getMessage();
}
?>


index.php
include("baglan.php");

$sorgu=$vt->prepare('SELECT* FROM datatable INNER JOIN cardtable ON datatable.CARDCODETABLE=cardtable.CARDCODE OR datatable.CARDCODETABLE=cardtable.CARDCODE ORDER BY idtable DESC limit 0,360');
$sorgu->execute();
$personellist=$sorgu-> fetchAll(PDO::FETCH_OBJ);
?>



foreach($personellist as $person){

?>




IDTABLE ?>

COMPANYTABLE ?>

CARDCODETABLE ?>

LOCATIONTABLE ?>

VALUE1 ?>

VALUE2 ?>

VALUE3 ?>

VALUE4 ?>

TIME ?>



Xson

kişi bu mesajı beğendi.

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al